您当前的位置: 首页 >  编程语言

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构

寒冰屋 发布时间:2020-07-07 21:02:54 ,浏览量:0

在支持 Python 的 range 之外,木兰还支持如下的等价语法。个人感觉这样的语法更直观易读一些:

闭区间
for 数 in 0..2 {
  println(数)
}

输出:

0
1
2 
左闭右开区间:
for 数 in 0.. 1068
  • 运行测试.py,检验所有木兰测试代码片段:143 -> 144
  • 未变
    • test语法树.py,确保生成的语法树与原始版本一致:63
  • 实现:1720 -> 1898
    • 分析器/语法分析器.py:676 -> 792
    • 分析器/词法分析器.py:123 -> 184
    • 未变
      • 分析器/语法树.py功用/调试辅助.py,包括对 ast 库的中文封装:251
      • 演示高亮.py:98
      • 环境.py,加载木兰模块:87
      • 中.py,主程序:35
  •  

    仅添加 by 语法并没有那么大代码量,主要是语法分析器中原本的字符串格式的语法规则比如下面:

    @分析器母机.production('范围表达式 : 表达式 点点小于 表达式')

    将各个语法因素提取成了枚举类型:

        @unique
        class 语法(Enum):
            表达式 = 'expr'
            范围表达式 = 'range_expr'
            ...

    对应的语法规则改为了:

    @分析器母机.production(语法.范围表达式.成分(语法.表达式, 点点小于, 语法.表达式))

    可读性的削弱还可接受,至少能减少笔误的机会。

    有用工具

    开发时用了 VS Code 下的中文代码快速补全插件,支持各种编程语言,加强了针对中文的 IDE 补全功能,编写中文代码时可以省去不少功夫。

    关注
    打赏
    1665926880
    查看更多评论
    0.0447s