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

  • 本文关键字:规则 ANTLR4 侦听器 antlr4
  • 更新时间 :
  • 英文 :


我有一个这样的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规则完成时注释树。但是,查看生成的侦听器类,我看不到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方法生成侦听器接口(和/或访客接口)。

相关内容

  • 没有找到相关文章

最新更新