Не могу добавить новое ключевое слово в Python - PullRequest
6 голосов
/ 14 июня 2019

Я попытался добавить новое ключевое слово (новый оператор потока) в 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 и восстановить, и сборка все еще работает. Что-то не так.

...