内容简介:今后也许会更身不由己,这段时间尽可能将 木兰重现项目 和其依赖的 rply 库中的一些纰漏解决、夯实基础。 木兰 支持 # 语法,等价于 len(),如 #[3,33] 输出 2。见此提交 输出数据结构时内部字符串略去引号:集合...
今后也许会更身不由己,这段时间尽可能将 木兰重现项目 和其依赖的 rply 库中的一些纰漏解决、夯实基础。
木兰
- 支持 # 语法,等价于 len(),如
#[3,33]
输出 2。见此提交 - 输出数据结构时内部字符串略去引号:集合、多项; 字典。比如
d={1:'a'}
,python 中 print 输出{1: 'a'}
,而木兰输出{1: a}
- 报错中模块名为空问题 比较独特,逆向中看不出头绪,硬 加了个补丁 实现了与原始可执行文件行为一致
- 之前发现几处 re.DOTALL 不解何意,现 基本确定并无效果
- 【已实现,未发布】改进报错信息: 形参默认值不全。如下面函数:
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 }
- 【待复现】发现木兰支持如此定义多项(tuple):
a = 3; b = 4; c = (a,b)
,但并不支持c=(3,4)
。因有依赖打算在 此悬赏任务 之后完成。
当前有共三个悬赏任务,欢迎参与。
依赖库:rply 木兰定制版
自 前文 开始,将 rply 作了分支后剪裁、定制了 rply-ulang 库发布在 PyPI。
1. API 中文化
将木兰中使用到的 rply 的 API 进行了中文化,演示效果如下:
本来直接把英文 API 改为了中文,后发现为了同时支持 逆向工程 正常运行,仍需保留原英文 API。
2. 清理木兰重复代码
之前发现木兰对 rply 的 parser 作了些许修改 以支持某些语法, 现决定 并入 rply 定制版,以减少综合代码维护量。
3. 修复报错的列号不准问题
半年多前提了 rply 一个 报错列号不准问题,一直没看到回应,研究相关代码部分时顺便作了中文化,加了个 补丁
其他定制内容见 项目源码库。
附:代码量统计
主要部分的代码行数统计,格式为:上次->现在。
- 木兰代码量 3201 -> 3206
- 运行环境,实现与测试大部为木兰代码:582
- 木兰测试用例,包括部分实用小程序(如井字棋):2619 -> 2624
- Python 代码量(木兰实现、测试框架、语法树生成木兰中的 Python 测试代码):3794 -> 3711
分析器/语法分析器.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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- FriceEngine试用与API中文化
- api 中文化之 Rust-curl(上)
- 草蟒 12 月更新:核心功能文档和坑属性/方法完成中文化
- 草蟒完成操作系统模块,谈谈 python os 模块的中文化
- [C#.NET 拾遗补漏]04:你必须知道的反射
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
图片转BASE64编码
在线图片转Base64编码工具