我有以下正确解析的 if 语句:
ifStatement
: 'IF' expression 'THEN' statementBlock
(options {greedy=true;}
: 'ELSE' statementBlock)?
;
现在,我想将其解析为 AST。我是这样做的:
ifStatement
: 'IF'^ expression 'THEN'! statementBlock
(options {greedy=true;}
: 'ELSE'! statementBlock)?
;
添加!
and ^
,因为->
构建指令似乎不起作用。
我的结果是一个有 3 个孩子的 AST:1 是条件,2 和 3 是语句块。else 部分是可选的:如果没有 else,则缺少节点 3。
问题是语句块总是空的。如何解决?