如何自定義python語法.

fqbqrr發表於2020-11-22

我們需要準備vs,msys2,gcc等材料.
然後要改.從最簡單的開始,先將def加一個df來定義.
我們的流程是:
1,先在msys2裡面執行./configure,然後在生成的makefile裡面如下修改,只配置一次:

OPT=		-DNDEBUG -g -fwrapv -O3 -Wall -fexec-charset=gbk -finput-charset=gbk
BASECFLAGS=	 -Wno-unused-result -Wsign-compare -fexec-charset=gbk -finput-charset=gbk

加上gbk編碼,非常重要,不要regen-all編譯不過.
2,修改你要改的語法.如

function_def_raw[stmt_ty]:
    | ('def'|'df') n=NAME '(' params=[params] ')' a=['->' z=expression { z }] ':' tc=[func_type_comment] b=block {

3,msys2裡面make regen-all,然後生成.
4,在pcbuild裡面點進一個目錄,然後再F7全部生成.
這裡面最重要的就是英文原有關鍵字,不要刪.因為庫程式碼就是用的這個,所以你刪了,絕對一大堆錯誤,還編譯不過.因為有個_freeze_importlib.exe就是用的最新的語法(這個還是剛剛生成的新鮮的,所以,你老是通不過,通不過).你刪了原有的東西,完了,編譯不過,編譯不過.
5,然後就是幾個要改的地方:

.\Modules\clinic\_pickle.c.h
.\Modules\clinic\_statisticsmodule.c.h
.\Modules\_pickle.c
.\Modules\_statisticsmodule.c
.\Parser\pgen\pgen.py
.\Tools\clinic\clinic.py
.\Tools\peg_generator\pegen\build.py
.\Tools\peg_generator\pegen\c_generator.py
.\Tools\scripts\update_file.py

主要是把with open的開啟方式,改為encoding='gbk',errors='ignore',不然有問題,編譯不了.
為什麼要在msys2裡面改,因為必須要用make regen-all配置重新修改有些解析檔案.然後python.sln再利用這些檔案來生成python.

相關文章