我的语法是这样的
ifStatment ::= IF PARETHESIS logicOperation PARENTHESIS_ KEY procedures KEY_ elseIfStatment;
elseIfStatment ::= ELSE IF PARENTHESIS logicOperation PARENTHESIS_ KEY procedures KEY_ elseIfStatment
|elseStatment;
elseStatment ::= ELSE KEY procedures KEY_
| ;"logicOperation“返回true/false值,"procedures”是我希望在"logicOperation“为true时执行的操作。
我正在使用"procedures“生产中的杯状堆栈来检查"logicOperation”是否为真。
如果只有一个"elseStatment“而不是" elseIf ",它可以工作,但是使用elseIf我不能知道logicOperation在堆栈中的确切位置。
我该怎么办?
发布于 2012-03-13 06:34:18
我做错了,这不是解析器的工作方式。有两种方法可以完成此操作:
但是如果有人仍然需要使用它,方法是使用继承的属性,这是java-cup所没有的,所以使用bison和c。
https://stackoverflow.com/questions/9337428
复制相似问题