所有标签的访客方法

时间:2017-06-22 06:26:59

标签: java antlr4

我有一个带有替代标签的解析器规则 我希望实现一个访问者方法,以便在访问任何标签时:

someRule
    :    'a' #aLabel
    |    'b' #bLabel
    |    'c' #cLabel
    ;

我需要这样的方法:

T visitSomeRule(SomeRuleContext ctx)

1 个答案:

答案 0 :(得分:1)

使用像你这样的标签,你最终会得到类似的东西:

override VisitAlabel(aLabelRuleContext) {....}
override VisitBlabel(bLabelRuleContext) {....}
override VisitClabel(cLabelRuleContext) {....}

但是,添加替代标签会导致ANTLR4在上面的示例中不生成通用上下文类SomeRuleContext。它不可能混合使用两者。非此即彼。如果您想要访问SomeRuleContext,那么您必须删除标签并检查SomeRuleContext.

处理程序中的备用上下文

我的来源:经验Terence Parr,第120页 The Definitive ANTLR4 Reference