是可能在ANTLR3中使用规则scope块:
formUsage
scope {
Form form;
}
: formUsage1
| formUsage2
| formUsage3
;
formUsage1
: someUsage { $formUsage::form = ... ; }
...我们的语法中有很大一部分是对一个特定的对象进行操作的。scope块是一个很好的特性,可以在特定规则和所有子规则中实现一些公共状态。或者,我们可以将这个公共状态作为参数传递给所有子规则,或者将其放到全局@parser::members中。但是scope块正是我们所需要的。
将这些块迁移到ANTLR4的更好方法是什么?
发布于 2017-04-29 08:48:45
您现在可能想要的是本地用户,这是规则属性定义的一部分。ANTLR4中解析器规则的语法是:
rulename[args] returns [retvals] locals [localvars] : ... ;locals部分保持给定,而不是由ANTLR4解析。这允许任何特定于目标的代码。
https://stackoverflow.com/questions/43677134
复制相似问题