Я хочу разбирать выражения, такие как res = ((a * (2 + b))/c) +5.603+ (6 * (d ^ 5)). Я хочу сделать это только на С++.
Как разбирать выражения в С++
Ответ 1
Посмотрите "Доступные библиотеки С++" FAQ
Ответ 2
Stroustrup объясняет, как вы оцениваете выражения типа ((1*(2+3))/4)+5.603+(6*(11^5))
. В принципе, вы создаете дерево оценки для всех подвыражений.
В вашем примере есть три дополнительных шага. При анализе вы должны учитывать переменные a
, и при оценке вам нужно заменить переменные на их текущие значения. Наконец, вам нужно присвоить результат переменным.
Вы можете использовать std::map<std::string, double>
для хранения имен переменных и значений.
Ответ 3
Существует тщательный подход к возможному подходу:
http://www.ibm.com/developerworks/library/j-w3eval/index.html
Код находится в java, но довольно переносим на С++.