我知道插入符号在antlr中的含义是什么意思(即make root)但是插入符号是什么时候我在阅读的语法中是什么(这个语法是全新的,由新的团队学习antlr完成)... ..
selectClause
: SELECT resultList -> ^(SELECT_CLAUSE resultList)
;
fromClause
: FROM tableList -> ^(FROM_CLAUSE tableList)
;
Run Code Online (Sandbox Code Playgroud)
另外,我知道什么=>意味着什么 - >?什么 - >暗示?
谢谢,迪恩
的^是用作内联树操作者,指示特定令牌应该成为树的根.
例如,规则:
p : A B^ C;
Run Code Online (Sandbox Code Playgroud)
创建以下AST:
B
/ \
A C
Run Code Online (Sandbox Code Playgroud)
还有另一种方法来创建一个使用重写规则的AST .甲重写规则之后(或在右侧)解析器规则的可选放置.您使用"箭头" 开始重写规则->,然后是您希望在AST中的规则/标记.
采取以前的规则:
p : A B C;
Run Code Online (Sandbox Code Playgroud)
并且您想要反转令牌,但保持ASST"平坦"(没有根节点).这可以使用以下重写规则来完成:
p : A B C -> C B A;
Run Code Online (Sandbox Code Playgroud)
如果要创建类似的AST p : A B^ C;,则启动重写规则,^( ... )括号内的第一个标记/规则将成为根节点.所以规则:
p : A B C -> ^(B A C);
Run Code Online (Sandbox Code Playgroud)
产生相同的AST p : A B^ C;.