我有一个带有替代标签的解析器规则。
我想在任何标签被良好访问时实现访问者方法:
someRule
: 'a' #aLabel
| 'b' #bLabel
| 'c' #cLabel
;
我需要这样的方法:
T visitSomeRule(SomeRuleContext ctx)
最佳答案
使用像您这样的标签,您最终会得到类似的结果:
override VisitAlabel(aLabelRuleContext) {....}
override VisitBlabel(bLabelRuleContext) {....}
override VisitClabel(cLabelRuleContext) {....}
但是,添加替代标签会导致 ANTLR4 无法生成上面示例中的通用上下文类 SomeRuleContext
。两者不可能混合。非此即彼。如果您想访问 SomeRuleContext
,则必须删除标签并检查 SomeRuleContext 处理程序内的替代上下文。
我的资料来源:这方面的经验以及 Terence Parr 的《The Definitive ANTLR4 Reference》,第 120 页。
关于java - 所有标签的访问者方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691715/