[英]ANTLR rewrite rules in grammar file
我有一个看起来像这样的规则:
a : (b | c) d;
b : 'B';
c : 'C';
d : 'D';
ANTLR使用此语法构建一个平面解析树。 我该如何重写第一条规则(其余两个保持不变),以便将匹配的任何内容返回到称为A的根节点下?
如果第一条生产规则是这样的:
a : b d;
那么它可能会被重写为
a : b d -> ^(A b d)
这样就解决了我的问题。 但是,第一个语法规则对于生成的解析树^(A bd)
或^(A cd)
产生不止一种可能性。
重写规则时该如何表达?
您可以使用?
运算符中的重写如下。
a : (b | c) d -> ^(A b? c? d);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.