antlr中的插入符号前缀而不是后缀

antlr中的插入符号前缀而不是后缀,antlr,antlr3,Antlr,Antlr3,我知道插入符号后缀在antlr中的含义(即make root),但如果插入符号是前缀,我一直在阅读的以下语法(该语法是全新的,由一个学习antlr的新团队完成)中会是什么意思呢 另外,我知道=>的意思,但是->呢?->意味着什么 谢谢, Dean将^用作内联树运算符,指示某个令牌应成为树的根 例如,规则: p : A B^ C; p : A B C -> ^(B A C); 创建以下AST: B / \ A C 还有另一种创建AST的方法,它使用重写规则。重写规则放在解析器

我知道插入符号后缀在antlr中的含义(即make root),但如果插入符号是前缀,我一直在阅读的以下语法(该语法是全新的,由一个学习antlr的新团队完成)中会是什么意思呢

另外,我知道=>的意思,但是->呢?->意味着什么

谢谢,
Dean

^
用作内联树运算符,指示某个令牌应成为树的根

例如,规则:

p : A B^ C;
p : A B C -> ^(B A C);
创建以下AST:

  B
 / \
A   C
还有另一种创建AST的方法,它使用重写规则。重写规则放在解析器规则的替代规则之后(或右侧)。您可以使用一个“箭头”
->
启动重写规则,然后是希望在AST中出现的规则/标记

以前面的规则为例:

p : A B C;
您希望反转令牌,但保持助理“平坦”(无根节点)。这可以使用以下重写规则完成:

如果你想创建一个类似于
p:ab^C
,您可以使用
^(…)
启动重写规则,括号内的第一个标记/规则将成为根节点。因此,规则是:

p : A B^ C;
p : A B C -> ^(B A C);
产生与
p:ab^C相同的AST


相关的: