首页 > 解决方案 > ANTLR4 + Python - 如何从侦听器访问片段令牌(子令牌)?

问题描述

如何使用以下语法访问令牌MONTH_NAME或从侦听器:DIGITS

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()

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

标签: pythonparsingantlr4

解决方案


我无法摆脱假人DATE_BULKdate使用规则进行定义 [...]

那么答案很简单:你不能。DATE_BULK是一个标记,不能在解析器中分开(当然,除了使用 Python 的子字符串函数)。


推荐阅读