木兰语言 0.0.21 查缺补漏;rply 改进、接口中文化

今后也许会更身不由己,这段时间尽可能将 木兰重现项目 和其依赖的 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,:57
      • setup.py, 34
      • 测试/unittest/交互.py,交互环境相关测试:28
      • 分析器/错误.py:28
      • 测试/unittest/所有用例.py:24
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/150009

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。