我尝试按照这篇博文和这个 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/Grammar
PCbuild/build.bat
我还注意到文件Include/graminit.c
并Include/graminit.h
没有重新生成,并且根据我提到的 PEP,它应该由 完成pgen
,它应该由make
. 但正如我之前提到的,我跑了PCbuild/build.bat
,而不是make
。我尝试pgen
手动运行,但失败并出现异常ImportError: attempted relative import with no known parent package
。
因此,由于删除关键字也失败了,我认为我的自定义 Python 没有正确构建(即使构建似乎成功并且它生成了一个工作python.exe
)。这可能是什么原因造成的?
编辑:我也尝试删除文件Grammar/Grammar
并重建,并且构建仍然有效。有什么不对劲。