如何在javacc中创建一个'Rational'标记,该标记采用有理数并计算其值。敌人的例子'2/5'值= 0.4。我知道如何为此编写正则表达式,但不知道,从未被正确教过,如何/在javacc代码中合并java方法的位置。我被告知:
请注意,具有0分母的有理数是未定义的。而不是生成错误, 打印无穷大,如上所示。 建议:您可以按顺序使用Java String类中的indexOf和substring方法 提取有理数的分子和分母部分。这是一个好主意 定义第二个变量(例如val2),以便存储分母的值。还有,演员 除法的结果加倍,即(双)val / val2。
请记住,我是javacc的新手,但对java有基本的了解。任何有关此事的建议将不胜感激。非常感谢。
答案 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 }
它不好。
我不知道你是否需要编写一个完整的编译器或只是一个分数解析器,如果答案是第二个这个东西可以很好地工作..