6

我尝试按照这篇博文这个 PEP向 Python 添加一个新关键字(一个新的流程语句)。根据我提到的 PEP,我很确定我已经添加了需要添加到正确位置的内容。这些是我修改过的文件:

Grammar/Grammar
Parser/Python.asdl
Python/ast.c
Python/Python-ast.c
Python/Python-ast.h
Python/symbtable.c
Python/compile.c

我在 Windows 上执行此操作,所以我没有运行make,而是运行PCbuild/build.bat。构建似乎是成功的。但是,当我运行新构建的python.exe时,我的关键字未被识别(得到NameError: name [...] is not defined)。

作为健全性测试,我尝试通过删除并重新运行来break_stmt从Python 中删除 break 语句。break 语句工作得很好,这意味着删除失败。Grammar/GrammarPCbuild/build.bat

我还注意到文件Include/graminit.cInclude/graminit.h没有重新生成,并且根据我提到的 PEP,它应该由 完成pgen,它应该由make. 但正如我之前提到的,我跑了PCbuild/build.bat,而不是make。我尝试pgen手动运行,但失败并出现异常ImportError: attempted relative import with no known parent package

因此,由于删除关键字也失败了,我认为我的自定义 Python 没有正确构建(即使构建似乎成功并且它生成了一个工作python.exe)。这可能是什么原因造成的?

编辑:我也尝试删除文件Grammar/Grammar并重建,并且构建仍然有效。有什么不对劲。

4

0 回答 0