我正在 AnTLR4 中实现 Python 语法,但我遇到了与此处讨论的 INDENT 和 DEDENT 相同的问题:ANTLR4-dynamic injection token
我正在尝试的解决方案是通过 Ter 转换解决方案,可以在此处找到http://antlr3.org/grammar/1078018002577/python.tar.gz(覆盖 nextToken 并插入虚构的令牌)。
问题是这个解决方案假设我们有一个词法分析器规则,如:
LEADING_WS
: {getColumn()==1}?
// match spaces or tabs, tracking indentation count
( ' ' { spaces++; }
| '\t' { spaces += 8; spaces -= (spaces % 8); }
| '\014' // formfeed is ok
)+
{
}
...
但我不断收到错误,因为词法分析器规则中的操作必须是单个替代选项中的最后一个元素。
谁能帮我找到解决方案?
非常感谢!!!