我尝试通过遵循this blog post和this 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
中删除Grammar/Grammar
并重新运行PCbuild/build.bat
来从Python中删除break语句。 break语句工作得很好,这意味着删除失败。
我还注意到文件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
并重新生成,并且该生成仍然有效。事情不对。