问题
I was having difficulty figuring out what does ^ and ! stand for in ANTLR grammar terminology.
回答1:
Have a look at the ANTLR Cheat Sheet:
!don't include in AST^make AST root node
And ^ can also be used in rewrite rules: ... -> ^( ... ). For example, the following two parser rules are equivalent:
expression
: A '+'^ A ';'!
;
and:
expression
: A '+' A ';' -> ^('+' A A)
;
Both create the following AST:
+
/ \
A A
In other words: the + is made as root, the two A's its children, and the ; is omitted from the tree.
来源:https://stackoverflow.com/questions/3466418/what-does-and-stand-for-in-antlr-grammar