-2

鉴于编写了一个用自定义语言编译简单程序的工具,该工具使用解析器来解析简单的 .txt 文件程序,我正在寻找一种有效的方法来存储和评估表达式。更具体地说,表达式可以被评估为布尔、双精度和可能的其他类型。双精度表达式也可以包含数学函数。

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

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

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

4

2 回答 2

0

String 类有许多实用程序,例如逐字阅读,StringTokenizer 也一样。您还应该查看 Scanner 类。IO知识是必须的。

于 2013-05-24T14:40:10.100 回答
0

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

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

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

于 2013-05-24T18:29:45.283 回答