ANTLR4 - 使用上下文访问序列中的令牌组

ANTLR4 - Access token group in a sequence using context

我有一个包含这条规则的语法:

expr:
      unaryExpr '(' (stat | expr | constant) ')'                                        #labelUnaryExpr
    | binaryExpr '(' (stat | expr | constant) ',' (stat | expr | constant) ')'          #labelBinaryExpr
    | multipleExpr '(' (stat | expr | constant) (',' (stat | expr | constant))+ ')'     #labelMultipleExpr
    ;       

对于 expr,我可以通过调用 ctx.unaryStat() 来访问 unaryExpr 的值。我怎样才能类似地访问(stat | expr | constant)?有没有不需要通过为组添加另一个规则来修改我的语法的解决方案?

由于您已经标记了备选方案,因此您可以在其各自的 listener/visitor 方法中访问 (stat | expr | constant)

@Override
public void enterLabelUnaryExpr(@NotNull ExprParser.LabelUnaryExprContext ctx) {

  // one of these will return something other than null
  System.out.println(ctx.stat());
  System.out.println(ctx.expr());
  System.out.println(ctx.constant());
}