什么是以下语法规则的antlr4(v-4.1)等效形式(为antlr3(v-3.2)编写)?

时间:2014-05-29 12:27:18

标签: antlr antlr3 antlr4

以下语法规则(为antlr3(v-3.2)编写)的antlr4(v-4.1)等效形式是什么?

text
:   tag => (tag)!
|   outsidetag
;

1 个答案:

答案 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
 ;