Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разбор вычисляемого выражения


Автор: np9mi7 26.4.2006, 20:44
Добрый день!

Емеется некоторое выражение вида:

Цитата
1 + 6 * (78 + 589 * (1 + 1))


Необходимо вычислить значение этого выражение;

Может кто подскажет как разложить (или где почитать как разложить) это выражение в некоторую структуру данных (например бинарное дерево) из которой прозрачно определялся приоритет операций и вычисление осуществлялось прозрачно? Может вообще для этого библиотека есть написаная?

Заранее благодарен за ответы.

ps: но лучше алгоритм; 

Автор: BreakPointMAN 26.4.2006, 21:42
Теория - http://algolist.manual.ru: http://algolist.manual.ru/syntax/index.php

Неплохая реализация - http://rsdn.ru: http://rsdn.ru/article/files/Classes/tparser.xml 

Автор: Void 26.4.2006, 22:05
Что касается библиотек, то для C++ задачи такого уровня сложности превосходно решаются Boost.Spirit. В поставке есть несколько готовых примеров парсера арифметических выражений. 

Автор: nikitao 26.4.2006, 22:11
В Страуструпе же хороший калькулятор есть способный это обработать smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)