以下语法规则(为antlr3(v-3.2)编写)的antlr4(v-4.1)等效形式是什么?
text
: tag => (tag)!
| outsidetag
;
答案 0 :(得分:1)
以下在ANTLR 3中无效:
text
: tag => (tag)!
| outsidetag
;
您可能意味着以下内容:
text
: (tag)=> (tag)!
| outsidetag
;
其中( ... )=>
是一个句法谓词,没有等效的ANTLR4:simply remove them。正如280Z28所述(并在上一个链接中也有解释):缺少语法谓词不是从ANTLR 4中删除的功能。它是ANTLR 3预测算法中的一个弱点的解决方法不再适用于ANTLR 4。
v3中的感叹号表示删除生成的AST中的规则。自ANTLR4 does not produce AST's起,也只需删除感叹号。
因此,v4等价物将如下所示:
text
: tag
| outsidetag
;