通过遵循此博客文章和本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
Run Code Online (Sandbox Code Playgroud)
我在Windows上执行此操作,因此make
我没有运行而是运行了PCbuild/build.bat
。构建似乎是成功的。但是,当我运行新构建的时python.exe
,我的关键字未被识别(NameError: name [...] is not defined
)。
作为一项健全性测试,我试图通过break_stmt
从中删除Grammar/Grammar
并重新运行来从Python中删除break语句PCbuild/build.bat
。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
并重建,并且该生成仍然有效。有点不对劲。