| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Конвертор текст -> действия |
| Автор: anachoreta 21.9.2009, 15:09 |
| Прошу прощения за это название темы, даже не представляю как это назвать, если у модеров будет желание переделайте пожалуйста. Задача следующая,объясню на примере: Предположим я хочу сделать калькулятор, данные в который заносятся не по отдельности, а целой строкой, в идеале много строчным текстом. Вопрос: Каким образом можно реализовать следующее, введённый текст обрабатывается кодом, т.е. определяет где скобка начинается, где заканчивается, приоритетность операций и т.д. хотелось бы услышать как этот процесс называется и по возможности пару толковых ссылок. Не хочется изобретать колесо снова. Спасибо, за понимание. P.S. Приведённый пример не является реальным, он дожен показать смысл. Больше интересен сам механизм работы алгоритма. |
| Автор: jonie 21.9.2009, 15:56 |
| польская натация - как самый простой алгоритм. вот http://dklab.ru/chicken/nablas/10.html тоже ниче так идея... |
| Автор: zim22 21.9.2009, 16:13 |
| это задачка на умение пользоваться структурой "стек" выражение вида 5*(((9+8)*(4*6))+7) преобразовывается сначала к виду 5 9 8 + 4 6 * * 7 + * а потом уже обрабатывается алгоритмом очень подробно и доходчиво объясняется в книге Роберта Седжвика Фундаментальные алгоритмы на С++. Части 1-4. (стр.142) |
| Автор: anachoreta 22.9.2009, 01:00 | ||
| Лукашевичу респект, его алгоритм прост и эффективен, но как всегда без г... не обходится, алгоритм работает если уже расставлен приоритет операций, я имею ввиду скобки, но это не большая проблема. Книга, кстати толковая, мне понравилась, чуть позже изучу её более внимательно. Я пытаюсь разобраться в ней, например возможно ли с помощью неё решить следующую задачу:
и что дальше |
| Автор: smoke_man 22.9.2009, 08:05 |
| посмотри http://rsdn.ru/article/files/Classes/tparser.xml - может поможет. |
| Автор: xvr 22.9.2009, 11:16 |
| Это все называется синтаксический анализ (или просто парсер) Классика жанра - книга Ахо & Ульман: Компиляторы. принципы, технологии и инструментарий (она же Dragon book) Собственно самих технологий парсеров существует вагон и маленькая тележка, вот некоторые: Рекурсивный спуск (recursive descending parser) Операторное предшествование Конечные автоматы с стековой памятью (LALR & LR парсеры) Существуют готовые программы, для генерации парсеров: yacc/bison (LALR парсеры) ANTLR (Рекурсивный спуск) Есть готовые библиотеки, например boost::spirit |
| Автор: anachoreta 22.9.2009, 12:47 |
| smoke_man - за ссылку спасибо. Книга прикольная, скачал второе издание и начал читать. О ней слышал в книге Страуструпа. Завтра в книжный поеду посмотрю в налиичае. Давно хотел понять принцип работы компиляторов, да вот тока руки не доходили. Спасибо, всем. Достаточно инфы получил для размышления. |
| Автор: aikidzin 22.9.2009, 17:31 | ||
Советовал бы почитать Т.Прата и М. Зелковица "Языки программирования. Разработка и реализация". очень хорошая книга. Кроме истории языков программирования рассматриваются основы построения компиляторов и трансляторов. |