改神算(py)
的语法
替换UNICODE
为_..._
,避免冲突.避免默认msvcrt
libucrt
与微软的冲突了.要改,主要是静态lib/动态lib
之间的问题.将libucrt.lib
暂时去掉.
24.1.摘要
改变神算的语法不仅仅是改Grammar/神算.gram
.
注意:这些说明适用于神算3.9
及更高版本.早期版本不一样.您不应更改早期神算版本语法,但,可使用GitHub追踪devguide中此文件的早期版本.
24.2.清单
注意:有时,不管用.放弃之前,请先试试make clean
.Grammar/神算.gram
:语法,带构建AST节点
的操作.修改后,运行make regen-pegen
来重生成Parser/parser..c
(跑神算的解析器生成器Tools/peg_generator
).Grammar/Tokens
添加新令牌类型.改变后,跑make regen-token
来生成Include/token.h,Parser/token.c, Lib/token.py和Doc/library/token-list.inc
,改了python.gram和Tokens
的话,先跑make regen-token
,然后再跑make regen-pegen
.
要改Parser/神算.asdl
来匹配语法.然后运行make regen-ast
来生成Include/Python-ast.h和Python/Python-ast.c
.Parser/tokenizer.c
包含令牌代码.如这里可加新注释或串
类型.
要改Python/ast.c
来使语法所需的AST对象
有效.
要改Python/ast_unparse.c
来使解析AST对象
有效.Lib/ast.py
要改_Unparser
来匹配新AST节点.
要改Doc/library/ast.rst
以匹配新AST节点.
测试新改的语法test_grammar.py
.
可能要调整库模块pyclbr
.
要改令牌生成器Lib/tokenize.py
,注意改Doc/reference/
中的文档.
在继续编译过程中.可能会先将graminit.c
改为gbk
,然后再在makefile
里面将regen-all
的regen-语法
给去掉,然后make regen-all
.现在还在探索阶段.可能有错.