首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将属性范围从antlr3迁移到antlr4

将属性范围从antlr3迁移到antlr4
EN

Stack Overflow用户
提问于 2017-04-28 09:46:20
回答 1查看 354关注 0票数 0

可能在ANTLR3中使用规则scope块:

代码语言:javascript
运行
复制
formUsage
scope {
    Form form;
}
:   formUsage1
|   formUsage2
|   formUsage3
;

formUsage1
:   someUsage { $formUsage::form = ... ; }   
...

我们的语法中有很大一部分是对一个特定的对象进行操作的。scope块是一个很好的特性,可以在特定规则和所有子规则中实现一些公共状态。或者,我们可以将这个公共状态作为参数传递给所有子规则,或者将其放到全局@parser::members中。但是scope块正是我们所需要的。

将这些块迁移到ANTLR4的更好方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 08:48:45

您现在可能想要的是本地用户,这是规则属性定义的一部分。ANTLR4中解析器规则的语法是:

代码语言:javascript
运行
复制
rulename[args] returns [retvals] locals [localvars] : ... ;

locals部分保持给定,而不是由ANTLR4解析。这允许任何特定于目标的代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43677134

复制
相关文章

相似问题

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