Javacc中的“理性”代币

时间:2010-02-20 22:07:48

标签: javacc

如何在javacc中创建一个'Rational'标记,该标记采用有理数并计算其值。敌人的例子'2/5'值= 0.4。我知道如何为此编写正则表达式,但不知道,从未被正确教过,如何/在javacc代码中合并java方法的位置。我被告知:

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

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

1 个答案:

答案 0 :(得分: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 }它不好。

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