1

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

例如('2/5')值 = 0.4,('8/2')值 = 4.0,('4/0')值 = 无穷大。

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

4

1 回答 1

1

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

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

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

于 2011-03-14T21:01:55.390 回答