木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜
資深大佬 : xuanwu 5
知乎原文:木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜
木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持!
年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手册。开展重现项目之后,一直没重走一遍手册中的例程。上周终于完成了这个综合各部分功能的”小测验“,大部分例程在上一版本就能正确运行,余下的小部分在这个版本中也通过了。
[安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国。 注意:必需 python 3.7,源码文件需 UTF-8 编码]
此版本重现功能
字符串转义
比较特别的是反斜杠(木兰交互环境下效果):
> 'c'+'name' cname
在 Python 中反斜杠如果未配对,会报语法错误:
>>> print('') File "<stdin>", line 1 print('') ^ SyntaxError: EOL while scanning string literal >>> print('') File "<stdin>", line 1 print('') ^ SyntaxError: EOL while scanning string literal
配对后 Python 的效果:
>>> print('') >>> print('\')
比照木兰中反斜杠转义效果:
> println('') > println('') > println('') > println('\') > println('\') > println('\')
实现细节可见源码,个人感觉初用有些别扭,这种使用场景应该不多。
另外引号与换行转义无需多言:
> 'doesn't' doesn't > ""吃了么?"" "吃了么?" > '第一行n 第二行' 第一行 第二行
函数参数指定类型
> type Person { >> func $Person(name) { >> $name = name >> } >> } > func hello(p : Person) { >> println("hi " + p.name) >> } > hello(Person("木兰")) hi 木兰
当前路径下 Python 模块导入
比如当前路径下有 larger.py:
def larger(a, b): if a > b: print(a) else: print(b)
木兰交互环境下:
> using larger > larger.larger(5,6) 6
内置 enumerate 函数
可以更方便地定义枚举了:
> for i, v in enumerate(['小', '中', '大']) { println(i, v) } 0 小 1 中 2 大
求余运算
> 11%3 2
其他
Gitee Go 流水线
惊喜发现 Gitee Go 开通后获赠了 1000 分钟构建时间,而且非常幸运,构建环境的 Python 版本正好支持本项目需要的 3.7 。在新手模板基础上作了一点修改,较顺利地添加了一个费时少又较关键的 unittest 测试集(确认语法树生成正确),挂件看起来不错:

[余下见知乎原文:木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜]
大佬有話說 (0)