Java Cup的条件if语句语法 - 语义

时间:2012-02-18 00:44:35

标签: java parsing compiler-construction semantics

我的语法是这样的

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值,如果“logicOperation”为真,我想做“程序”。

我在“程序”生产中使用杯子堆栈来检查“logicOperation”是否为真。

如果只有“elseStatment”而不是“elseIf”,它会工作,但是使用elseIf我无法知道逻辑运算在堆栈中的确切位置。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我做错了,那不是解析器的工作原理。 有两种方法:

  1. 抽象语法树:保存过程并在解析后执行

  2. 三个地址代码:将代码转换为其他内容,例如汇编程序。

  3. 但是如果有人仍需要制作它,那么可以采用继承属性,这是java-cup所不具备的,所以使用bison和c。