项目在近日荣幸获得码云推荐,定将再接再厉,也望各位鼎力相助。
上周暂缓了一下,确认了摸索出的测试用例是否有误。用木兰编程语言的原始可执行文件 ulang.0.2.2.exe 作基准,用它跑了一遍积累至今的测试用例。
果然发现一处疏漏。木兰原始效果如下:
> print(["a", "b"])
[a, b]
看出端倪吗?同样例程 Python 效果如下,输出带引号:
>>> print(["a", "b"])
['a', 'b']
如果是 print 字符串,两者的输出都不带引号;
> print("ab")
ab
这个细节功能的用意,也许是为了与字符串打印输出效果保持一致。不仅是列表,其他容器如字典、集合、多项(tuple)等也是如此。原设计者对用户体验的揣摩可见一斑。
修复此测试后,所有测试用例在原始可执行文件上通过,算是一个小里程碑。
另外,忍不住搞定了一个反馈信息的显示问题。如果源码中带中文字符,这个箭头就指不准出错位置。开发调试过程中给自己带来不大不小的麻烦:
办法就是直接在源码的出错位置前插入一个✋。如有更合适的标志请建议,比如某个不常用但形象的中文字符?
下面是几个主要部分的代码行数统计,格式为:上次->现在。
测试
测试/运行所有.py
,检验所有木兰测试代码片段:156 -> 180test语法树.py
,确保生成的语法树与原始版本一致:67Python 总代码量(包括测试部分):2200 -> 2237
分析器/语法分析器.py
:910 -> 913环境.py
,加载木兰模块:124 -> 137分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:77 -> 78分析器/错误.py
:18 -> 17分析器/词法分析器.py
:190分析器/语法树.py
:178演示高亮.py
:100功用/反馈信息.py
:49中.py
,主程序:36