Я попытался добавить новое ключевое слово (новый оператор потока) в Python, выполнив этот пост и этот PEP . Я почти уверен, что добавил то, что мне нужно было добавить в нужные места, в соответствии с 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 из Python, удалив break_stmt
из Grammar/Grammar
и повторно запустив 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
и восстановить, и сборка все еще работает. Что-то не так.