如何在java中实现支持求值和多种类型的表达式结构

时间:2013-05-24 14:24:34

标签: java parsing compiler-construction expression evaluate

考虑到编写一个使用解析器解析简单的.txt文件程序的自定义语言编译简单程序的工具,我正在寻找一种存储和计算表达式的有效方法。 更具体地说,表达式可以被计算为boolean,double和其他类型。双重表达式也可以包含数学函数。

我需要能够存储表达式,以便在执行包含它的指令时对其进行评估。

例如,应该有一个Expression类,其子项可以是DoubleExpression或BoolExpression。 DoubleExpression可以是文字,一元表达(平方根,正弦等)或二元表达式(比较,乘法,......)。 程序需要存储这些指令而不会丢失信息。

因此,表示乘法a * 2的表达式应该存储a是一个全局变量,并且应该能够在每次计算该表达式时计算其结果。

2 个答案:

答案 0 :(得分:0)

String类有很多实用程序,比如逐字阅读,StringTokenizer也是如此。您还应该查看扫描仪课程。 IO知识是必须的。

答案 1 :(得分:0)

不确定这是否是您正在寻找的,但几年前我为扩展的FTP脚本语言编写了一个相当广泛的表达式解析器和求值器。源代码位于:

david.tribble.com/src/java/default.html#tribble.net.ftp.shell

您将对CommandParser.parseExpr()方法感兴趣,该方法分析表达式并构建表达式树,以及Interp.evalExpr()方法,它会评估这些树。