我查看了 JavaCC 包附带的“解释器”示例。它允许并行关系表达式的语法,但它没有给出正确的答案。
boolean a;
a = 1<2<3;
write a;
这将给出 ClassCastException,因为解释器处理“1<2”并将布尔值放入堆栈,而第三个变量 3 是一个整数,因此它不能与布尔值进行比较。
我尝试更改包含
public class ASTLTNode extends SimpleNode {
public ASTLTNode(int id) {
super(id);
}
public ASTLTNode(ShawaParser p, int id) {
super(p, id);
}
public void interpret()
{
jjtGetChild(0).interpret();
jjtGetChild(1).interpret();
stack[--top] = new Boolean(((Integer)stack[top]).intValue() <
((Integer)stack[top + 1]).intValue());
}
}
如果我在解释()的末尾添加“top++”,堆栈将保留最后一个值,但是当处理完成时,它将显示最后一个数字而不是布尔值。
你们有做这件事的想法吗?非常感谢。