我正在使用 ^ 和 ! 运算符分别设置根节点和不包含在 AST 中。但是,它对 ANTLRWorks 生成的树没有影响。所以我不确定我的语法是否不正确,或者 ANTLRWorks 是否没有创建正确的树。
这是我的语法片段
expr
: '('! logExpr ')'!;
这些括号不应包含在 AST 中。
addExpr
: multExpr ( (PLUS|MINUS)^ multExpr )*;
加号或减号应该是 AST 中的根节点。
然而,这些事情都没有像我期望的那样发生。当我删除它们或将它们放回去时,它们没有区别。ANTLRWorks 1.4.3 ANTLR 3.4