今后也许会更身不由己,这段时间尽可能将 木兰重现项目 和其依赖的 rply 库中的一些纰漏解决、夯实基础。
#[3,33]
输出 2。见此提交d={1:'a'}
,python 中 print 输出 {1: 'a'}
,而木兰输出 {1: a}
func f(x=2, y) { return x }
,python 并不定位具体参数:non-default argument follows default argument
,现在木兰可定位:😰 语法错误:文件 "【标准输入】", 第1行, 第13列, 参数“y”之前的“x”有默认值,它也需要一个表达式指定默认值
func f(x=2, ✋y) { return x }
a = 3; b = 4; c = (a,b)
,但并不支持 c=(3,4)
。因有依赖打算在 此悬赏任务 之后完成。当前有共三个悬赏任务,欢迎参与。
自 前文 开始,将 rply 作了分支后剪裁、定制了 rply-ulang 库发布在 PyPI。
将木兰中使用到的 rply 的 API 进行了中文化,演示效果如下:
本来直接把英文 API 改为了中文,后发现为了同时支持 逆向工程 正常运行,仍需保留原英文 API。
之前发现木兰对 rply 的 parser 作了些许修改 以支持某些语法, 现决定 并入 rply 定制版,以减少综合代码维护量。
半年多前提了 rply 一个 报错列号不准问题,一直没看到回应,研究相关代码部分时顺便作了中文化,加了个 补丁
其他定制内容见 项目源码库。
主要部分的代码行数统计,格式为:上次->现在。
分析器/语法分析器.py
此次格式化代码有额外添加行数:1144 -> 1159环境.py
,定义全局方法: 275 -> 284分析器/词法分析器.py
:231 -> 236测试/期望值表.py
:177 -> 180交互.py
,交互环境(REPL):150 -> 149测试/unittest/报错.py
:126 -> 127分析器/语法树.py
:267生成/木兰.py
:242功用/反馈信息.py
:175分析器/语法树处理.py
:119中.py
,主程序:95分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:88测试/运行所有.py
,检验所有木兰测试代码片段:75测试/unittest/生成.py
,语法树生成木兰源码相关测试:60测试/unittest/语法树.py
,确保生成的语法树与原始版本一致,拆分报错部分:58功用/调试辅助.py
,:57setup.py
, 34测试/unittest/交互.py
,交互环境相关测试:28分析器/错误.py
:28测试/unittest/所有用例.py
:24