如何在javacc中更新并打印'Rational'令牌?

时间:2010-02-24 21:15:32

标签: linux unix javacc

我添加了新的令牌RATIONAL,用于识别我的JavaCC解析器上的有理数。如何更新程序的输出部分以打印有理数的数值?

例如('2/5')value = 0.4,('8/2')value = 4.0,('4/0')value = infinity。

如果有人能帮助我,我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

您需要进一步拆分RATIONAL标记的图像,以便让两个数字都可用于计算。

从您的问题中不清楚括号和引号是否是定义语法的一部分。如果是,则可以轻松地将它们定义为合理表达式的分隔符,并为数字和斜杠定义标记。如果与其他可能出现数字的地方含糊不清,请记住词汇状态是你的朋友。

如果一个有理的表达式只是由斜杠分隔的两个数字组成,那么我建议在解析完成后构建一个AST并对其进行评估。您也可以在解析过程中对其进行评估,但难度取决于语法的其余部分。