木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构
在支持 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 补全功能,编写中文代码时可以省去不少功夫。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
不要盲目跟着 JavaScript 的趋势走
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 有一天,你在浏览器里输入了 twitter.com ,然后看到了某人发的一条关于如何使用 React Hooks 的新消息。但是,由于某些原因,你的公司或团队并没有转而使用 Hooks。或者,也许你正在使用它们,但不是以一种新的“符合潮流”的方式。也许你正在使用 Vue.js 或者 Angular,但是 React Hooks 无处不在。 这一天,你开始质疑你代码库中的内容是否正确?你是否应该用你刚刚读到的内容来重构那部分逻辑?得出答案后,你开始想象它在自己的代码中会是什么样子。 现在,你突然有了使用它的冲动。你告知团队负责人,或者向整个团队发送消息介绍这个又酷又新潮的方法,然后提出你要开始使用它。 重写代码 不久前, @ThePracticalDev 的 Twitter 账户上出现了一本假想著作的封面。早在 2016 年,取笑多变的 JavaScript 世界就是一种时尚,虽然方式与今天有所不同。 嘘,我发明了时间机器(不要告诉任何人)!让我们闪回到 2016 年。嗖的一声!我们到了。...
- 下一篇
Hasor 4.1.10 发布,满满干货:动态数据源、报错定位到行列、权限控制
Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。 这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。 Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。 从而避免了从数据存取到前端接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。 版本说明: 4.1.9 作为实验版本先行2周左右发布,4.1.10 则主要是 4.1.9 的问题修复版本。 Hasor v4.1.10 (2020-07-6) 新增 issue增加 LookupDa...
相关文章
文章评论
共有0条评论来说两句吧...