首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下列语法规则(为antlr3 (v-3.2)编写)的antlr4 (v-4.1)等价形式是什么?

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

Stack Overflow用户
提问于 2014-05-29 20:27:18
回答 1查看 236关注 0票数 1

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

代码语言:javascript
复制
text
:   tag => (tag)!
|   outsidetag
;
EN

回答 1

Stack Overflow用户

发布于 2014-05-29 20:36:25

以下内容在ANTLR 3中无效:

代码语言:javascript
复制
text
:   tag => (tag)!
|   outsidetag
;

你的意思可能是:

代码语言:javascript
复制
text
 : (tag)=> (tag)!
 | outsidetag
 ;

其中( ... )=>是一个语法谓词,它没有与ANTLR4等价的:simply remove them。正如280Z28提到的(也在前面的链接中解释过):缺少语法谓词并不是从ANTLR 4中删除的一个功能。它是ANTLR 3预测算法中的一个弱点的变通方法,该算法不再适用于ANTLR 4。

v3中的感叹号表示删除生成的AST中的规则。既然是ANTLR4 does not produce AST's,也只需删除感叹号即可。

因此,v4等效项将如下所示:

代码语言:javascript
复制
text
 : tag
 | outsidetag
 ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23933320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档