所有标签的访问者方法
Visitor method for all labels
我有一个带有替代标签的解析器规则。
我想在任何标签访问良好时实施访问者方法:
someRule
: 'a' #aLabel
| 'b' #bLabel
| 'c' #cLabel
;
我需要这样的方法:
T visitSomeRule(SomeRuleContext ctx)
使用像您这样的标签,您最终会得到如下内容:
override VisitAlabel(aLabelRuleContext) {....}
override VisitBlabel(bLabelRuleContext) {....}
override VisitClabel(cLabelRuleContext) {....}
但是,添加替代标签会导致 ANTLR4 在上面的示例中不生成通用上下文 class SomeRuleContext
。不可能两者兼而有之。非此即彼。如果您想访问 SomeRuleContext
,那么您必须删除标签并检查 SomeRuleContext.
的处理程序中的替代上下文
我的资料来源:这方面的经验和 The Definitive ANTLR4 Reference,Terence Parr,第 120 页。
我有一个带有替代标签的解析器规则。
我想在任何标签访问良好时实施访问者方法:
someRule
: 'a' #aLabel
| 'b' #bLabel
| 'c' #cLabel
;
我需要这样的方法:
T visitSomeRule(SomeRuleContext ctx)
使用像您这样的标签,您最终会得到如下内容:
override VisitAlabel(aLabelRuleContext) {....}
override VisitBlabel(bLabelRuleContext) {....}
override VisitClabel(cLabelRuleContext) {....}
但是,添加替代标签会导致 ANTLR4 在上面的示例中不生成通用上下文 class SomeRuleContext
。不可能两者兼而有之。非此即彼。如果您想访问 SomeRuleContext
,那么您必须删除标签并检查 SomeRuleContext.
我的资料来源:这方面的经验和 The Definitive ANTLR4 Reference,Terence Parr,第 120 页。