0

如何在 javacc 中创建一个“有理”令牌,该令牌采用有理数并计算其值。敌人示例“2/5”值=0.4。我知道如何为此编写正则表达式,但不知道并且从未被正确教授过如何/在哪里将 java 方法合并到 javacc 代码中。我被告知:

请注意,分母为 0 的有理数是未定义的。如上所示,打印无穷大,而不是生成错误。建议:您可以使用 Java String 类中的 indexOf 和 substring 方法来提取有理数的分子和分母部分。定义第二个变量(例如 val2)以存储分母的值是个好主意。此外,将除法的结果转换为双倍,即(双)val / val2。

请记住,我是 javacc 的新手,但对 java 有基本的了解。任何关于此事的建议将不胜感激。非常感谢。

4

1 回答 1

0

如果您的语法中没有与选择点相关的问题,您可以使用以下语法:

JAVACODE
void parse_rational() {
  Token num, den;
  num = getToken(1); // first value
  getNextToken(); // trash fract symbol
  den = getToken(1); // second value

  /* do whatever you want */   
}

但是这种方法使 JavaCC 将“令牌” parse_rational 视为一个黑盒子,这就是为什么在选择中使用它的原因(例如:S(): { parse_rational() | SomethingElse }它不好。

我不知道您是否需要编写一个完整的编译器或只是一个分数解析器,如果答案是第二个,这件事可以很好地工作..

于 2010-02-20T22:27:08.707 回答