Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在我的 JavaCC 解析器上添加了识别有理数的新标记 RATIONAL。如何更新程序的输出部分以打印有理数的数值?
例如('2/5')值 = 0.4,('8/2')值 = 4.0,('4/0')值 = 无穷大。
如果有人可以帮助我,我将不胜感激。谢谢。
您需要进一步拆分 RATIONAL 令牌的图像,以便让两个数字都可用于计算。
从您的问题中不清楚括号和引号是否是定义语法的一部分。如果是,您可以轻松地将它们定义为有理表达式的分隔符,并为数字和斜线定义标记。如果与其他可能出现数字的地方有歧义,请记住词汇状态是您的朋友。
如果一个有理表达式只是由两个用斜杠分隔的数字组成,那么我建议构建一个 AST 并在解析完成后对其进行评估。您也可以在解析期间对其进行评估,但这的难度取决于您的语法的其余部分。