标记子规则时的规则的 ANTLR4.7 侦听器

ANTLR4.7 listener for a rule when sub rules are labeled

我有一个这样的 antlr4.7 语法,其中所有子规则都被标记了。

date_expr
    :   attr op=( '+' | '-' ) dt_interval=ISO8601_INTERVAL
        #dateexpr_Op
    |   DATETIME_NAME
        #dateexpr_Named
    |   d=( DATETIME_LITERAL | DATE_LITERAL | TIME_LITERAL ) 
        #dateexpr_Literal
    |   attr
        #dateexpr_Attr
    |   '(' date_expr ')'
        #dateexpr_Paren
    ;

我想在 date_expr 规则完成时对树进行注释。但是,查看生成的侦听器 class,我看不到 exitDate_expr。我怎样才能添加这个?或者,我是否必须为此使用访问者界面。我对语法工具不是很熟悉

谢谢。

要获得beforeAllLabledAltsafterAllLabledAlts访问点,将标记的alt规则包装在单例规则中:

anyDate : dateExpr ;
dateExpr
    :   attr op=( '+' | '-' ) dt_interval=ISO8601_INTERVAL    #dateexpr_Op
    |   DATETIME_NAME                                         #dateexpr_Named
    |   d=( DATETIME_LITERAL | DATE_LITERAL | TIME_LITERAL )  #dateexpr_Literal
    |   attr                                                  #dateexpr_Attr
    |   '(' date_expr ')'                                     #dateexpr_Paren
    ;

然后 ANTLR 工具将使用 AnyDateContext onEntryonExit 方法生成侦听器界面(and/or 访问者界面)。