Как разбирать выражения в С++

Я хочу разбирать выражения, такие как res = ((a * (2 + b))/c) +5.603+ (6 * (d ^ 5)). Я хочу сделать это только на С++.

Ответ 2

Stroustrup объясняет, как вы оцениваете выражения типа ((1*(2+3))/4)+5.603+(6*(11^5)). В принципе, вы создаете дерево оценки для всех подвыражений.

В вашем примере есть три дополнительных шага. При анализе вы должны учитывать переменные a, и при оценке вам нужно заменить переменные на их текущие значения. Наконец, вам нужно присвоить результат переменным.

Вы можете использовать std::map<std::string, double> для хранения имен переменных и значений.