下列语法规则(为antlr3 (v-3.2)编写)的antlr4 (v-4.1)等价形式是什么?
text
: tag => (tag)!
| outsidetag
;发布于 2014-05-29 20:36:25
以下内容在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
;https://stackoverflow.com/questions/23933320
复制相似问题