python - 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()
但这给出了整个日期,然后我必须使用正则表达式或其他方法手动解析。
- PS:由于我的整体语法中的结构限制,我无法摆脱虚拟
DATE_BULK
并date
直接使用规则进行定义,这有点复杂。
解决方案
我无法摆脱假人
DATE_BULK
并date
使用规则进行定义 [...]
那么答案很简单:你不能。DATE_BULK
是一个标记,不能在解析器中分开(当然,除了使用 Python 的子字符串函数)。