gpt4 book ai didi

Python 抽象语法 : Detect syntax error's'

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:45 24 4
gpt4 key购买 nike

是否可以一次迭代检测多个 python 语法错误?

有 2 个语法错误的 Python 文件 test.py:

print 'hello'
test =-
b = 1 + 1
test =+
print 'world'

这段代码只得到第 2 行的第一个语法错误,而不是第 4 行的错误:

import parser
parser.suite(open('test.py').read())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 2
test =-

如何检测 *.py 文件的所有语法错误?(不仅是第一个)

谢谢!

最佳答案

不,你不能,因为在一个语法错误之后,其余的代码结构将无法再恢复。

以缺少括号为例;是缺少括号还是逗号?下一行的函数调用是否是表达式的一部分有错误?如果缺少逗号,则下一行可能缺少括号。如果缺少括号,则下一行的括号可能过多。这将是两个截然不同的语法错误,它们取决于前一个语法错误的真正含义。

一个地方的语法错误会使其余代码无效,继续解析是没有意义的,至少对于需要生成有效字节码的 Python 而言是这样。

您可以使用 Python linter ;许多可以与您选择的文本编辑器集成。 Python IDE 或 linter 不必生成字节码,并且可以更灵活地处理语法错误(继续检查后续行),并且还可以告诉您其他问题,例如丢失或未使用的导入和变量。

关于Python 抽象语法 : Detect syntax error's',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389831/

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