ANTLR4 + Python-如何从侦听器访问片段令牌(子令牌)?

时间:2018-11-20 13:48:53

标签: python parsing antlr4

如何使用以下语法从侦听器访问令牌MONTH_NAMEDIGITS

date : DATE_BULK;
DATE_BULK :  DIGITS SEPARATOR DIGITS SEPARATOR DIGITS
          |  DIGITS WHITE_SPACE MONTH_NAME WHITE_SPACE DIGITS ;
fragment MONTH_NAME : 'Jan' |
                      'Feb' |
                      ;

在侦听器中,我可以这样做:

def exitDate(self, ctx):
    dateBulk = ctx.DATE_BULK().getText()

但这给出了整个日期,然后我必须使用正则表达式或其他方法手动解析。

  • P.S .:由于整体语法中的结构限制,我无法摆脱伪DATE_BULK并使用规则直接定义date

1 个答案:

答案 0 :(得分:0)

  

我无法摆脱虚拟DATE_BULK并使用规则[...]来定义date

然后答案很简单:您不能。 DATE_BULK是一个令牌,不能在解析器中分隔(当然,除了使用Python的substring函数外)。