内容简介:在支持 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 补全功能,编写中文代码时可以省去不少功夫。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
信息学奥林匹克竞赛指导--组合数学的算法与程序设计PASCAL版/信息学奥林匹克竞赛指导丛书
林 生编 / 清华大学出版社 / 2002-8 / 19.00元
一起来看看 《信息学奥林匹克竞赛指导--组合数学的算法与程序设计PASCAL版/信息学奥林匹克竞赛指导丛书》 这本书的介绍吧!