gpt4 book ai didi

python - AnTLR4:INDENT 和 DEDENT 代币

转载 作者:太空狗 更新时间:2023-10-30 01:22:55 26 4
gpt4 key购买 nike

我正在 AnTLR4 中实现 Python 语法,但我面临着与此处讨论的 INDENT 和 DEDENT 相同的问题:ANTLR4- dynamically inject 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
)+
{
}
...

但我一直收到错误,因为词法分析器规则中的操作必须是单个 altermost 替代方案的最后一个元素。

谁能帮我找到解决办法?

非常感谢!!!

最佳答案

您需要将涉及空格 的计算移动到LEADING_WS 规则的末尾或nextToken 的实现。在 LEADING_WS 的末尾,它可能如下所示。

LEADING_WS
: {getColumn()==1}?
// match spaces or tabs, tracking indentation count
[ \t]+
{spaces = computeSpaces(_input.getText());}
;

关于python - AnTLR4:INDENT 和 DEDENT 代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18408795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com