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

栏目: 软件资讯 · 发布时间: 4年前

内容简介:在支持 Python 的 range 之外,木兰还支持如下的等价语法。个人感觉这样的语法更直观易读一些: 闭区间 for 数 in 0..2 { println(数) } 输出: 0 1 2 左闭右开区间: for 数 in 0..<2 { printl...

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

闭区间

for 数 in 0..2 {
  println(数)
}

输出:

0
1
2 

左闭右开区间:

for 数 in 0..<2 {
  println(数)
}

输出:

0
1 

对应的带间隔取数:

这是本周重现的语法。

for 数 in 4..-1 by -2 {
  println(数)
}

输出:

4
2
0


左闭右开区间:

for 数 in 0..<4 by 2 {
  println(数)
}

输出:

0
2 

代码统计

下面是几个主要部分的代码行数统计,格式为:上周->本周。

  • 测试
    • 木兰测试用例:900 -> 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 补全功能,编写中文代码时可以省去不少功夫。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

引爆社群:移动互联网时代的新4C法则(第2版)

引爆社群:移动互联网时代的新4C法则(第2版)

唐兴通 / 机械工业出版社 / 69.00元

社群已经被公认为是这个时代的商业新形态,原有的商业逻辑和方法被颠覆,新的基于社群的商业体系和规则亟待构建,今天几乎所有的企业都在为此而努力,都在摸索中前行。 本书提出的“新4C法则”为社群时代的商业践行提供了一套科学的、有效的、闭环的方法论,第1版上市后获得了大量企业和读者的追捧,“新4C法则”在各行各业被大量解读和应用,积累了越来越多的成功案例,被公认为是社群时代通用的方法论。也因此,第1......一起来看看 《引爆社群:移动互联网时代的新4C法则(第2版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具