我很难搞清楚^和!代表ANTLR语法术语。
答案 0 :(得分:8)
!
不包括在AST中^
生成AST根节点
^
也可用于重写规则:... -> ^( ... )
。例如,以下两个解析器规则是等效的:
expression
: A '+'^ A ';'!
;
和
expression
: A '+' A ';' -> ^('+' A A)
;
两者都创建以下AST:
+
/ \
A A
换句话说:+
以root身份生成,两个A
是其子级,;
从树中省略。