我很难搞清楚什么是^和!在ANTLR语法术语中代表。
看一看这个 ANTLR Cheat Sheet :
! ^ 生成AST根节点
!
^
以及 ... -> ^( ... ) . 例如,以下两个解析器规则是等效的:
... -> ^( ... )
expression : A '+'^ A ';'! ;
以及:
expression : A '+' A ';' -> ^('+' A A) ;
两者都创建以下AST:
+ / \ A A
换言之:the + 作为根,两个 A 它的孩子,还有 ;
+
A
;