pin*_*ker 5 python grammar lexer antlr4
我在AnTLR4中实现了Python语法,但我遇到了与此处讨论的INDENT和DEDENT相同的问题:ANTLR4-动态注入令牌
我正在尝试的解决方案是转换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
)+
{
}
...
Run Code Online (Sandbox Code Playgroud)
但是我一直都会收到错误,因为词法分析器中的操作必须是单个altermost替代方案的最后一个元素.
任何人都可以帮我找到解决方案吗?
非常感谢!!!
您需要将涉及的计算移至规则spaces末尾LEADING_WS或 的实现nextToken。最后LEADING_WS可能如下所示。
LEADING_WS
: {getColumn()==1}?
// match spaces or tabs, tracking indentation count
[ \t]+
{spaces = computeSpaces(_input.getText());}
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |