上周重现了交互环境(REPL),期间用一个针对编程新手的木兰入门教程验证了基本功能。下面是教程里例程在交互中的运行效果:
注:“随机数”API 需安装草蟒库
木兰向您问好
更多信息请说'你好'
> using 随机范围数 in 随机数
> 想的 = 随机范围数(100)
> loop {
>> 猜的 = int(input("猜吧:"))
>> if 猜的 > 想的 {
>> println("大了")
>> } elif 猜的 < 想的 {
>> println("小了")
>> } else {
>> println("中了!")
>> break
>> }
>> }
猜吧:90
大了
猜吧:40
小了
猜吧:70
小了
猜吧:80
大了
猜吧:75
大了
猜吧:72
小了
猜吧:73
小了
猜吧:74
中了!
期间发现一个木兰交互环境相对 Python 的优势,就是对粘贴代码到交互环境运行这一使用场景的支持较好,在这点上来说尤其对编程新手比较友好。详见木兰 vs. Python 之语法对用户体验的影响(一)一文。
下面是几个主要部分的代码行数统计,格式为:上次->现在。
测试
测试/unittest/交互.py
,交互环境相关测试:28测试/运行所有.py
,检验所有木兰测试代码片段:180测试/unittest/语法树.py
,确保生成的语法树与原始版本一致:67Python 总代码量(包括测试部分):2237 -> 2418
环境.py
,加载木兰模块:137 -> 149交互.py
,交互环境(REPL):138中.py
,主程序:36 -> 40分析器/语法分析器.py
:913分析器/词法分析器.py
:190分析器/语法树.py
:178演示高亮.py
:100分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:78功用/反馈信息.py
:49分析器/错误.py
:17之前决定暂时放下交互控制台已是五个月前,这近半年来对木兰逐步熟悉,现在再复现这部分感觉比之前轻松了不少。
但限于个人水平,对木兰的设计思路只能靠复原出的功能进行点滴参悟,肯定还有不小偏差。很希望木兰编程语言原团队的人员能够参与到项目中来,这样必然事半功倍,对设计意图进行更全面系统的复原。