如何在C ++中解析表达式

时间:2011-08-05 06:10:37

标签: c++ parsing expression

我想解析res =((a *(2 + b))/ c)+5.603+(6 *(d ^ 5))等表达式。我想只用c ++做。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

Stroustrup解释了如何评估像((1*(2+3))/4)+5.603+(6*(11^5))这样的表达式。基本上,您为所有子表达式构建评估树。

您的示例有三个额外步骤。在解析中,您必须注意变量a,并且在评估时必须用其当前值替换变量。最后,您需要将结果分配给变量。

您可以使用std::map<std::string, double>来保存变量名称和值。

答案 2 :(得分:0)

这里有一个可行方法的彻底处理:

http://www.ibm.com/developerworks/library/j-w3eval/index.html

代码在java中,但对C ++来说非常便于移植。