内容简介:木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持! 年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手册。开展重现项目之后,一直没重走...
木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持!
年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手册。开展重现项目之后,一直没重走一遍手册中的例程。上周终于完成了这个综合各部分功能的”小测验“,大部分例程在上一版本就能正确运行,余下的小部分在这个版本中也通过了。
【安装:pip install ulang
,用法与例程请见 PyPI。源码位于开源中国。 注意:必需 python 3.7,源码文件需 UTF-8 编码】
此版本重现功能
字符串转义
比较特别的是反斜杠(木兰交互环境下效果):
> 'c\\\'+'name'
c\name
在 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 测试集(确认语法树生成正确),挂件看起来不错:
触发后好像需要一点时间等待分配构建资源,感觉等待挺短,也许是尚未有很多用户设置了流水线?期间只发现了一个日志中的中文显示问题,已提交报告给官方,期待早日解决~
webpy 尚无法使用
由于 web.py 的例程需要调用 globals():
web.application(urls, globals())
而尚未找到 globals() 在木兰中的对应方法,因而暂时无法使用。希望找到一个合用、轻量级的网络服务框架,欢迎建议。
更多报错信息中文化
> using 不存在
没找到模块:‘不存在’,见第1行<br/>
附:代码量统计
主要部分的代码行数统计,格式为:上次->现在。
- 木兰代码量 2920 -> 2965
- 编辑器,实现与测试都是木兰代码:432 (在为分为前后端实现调研网络服务框架)
- 木兰测试用例,包括部分实用小程序(如井字棋):2488 -> 2533
- Python 代码量(木兰实现与测试框架):2574 -> 2594
分析器/语法分析器.py
:1002 -> 1008分析器/词法分析器.py
:201 -> 204测试/运行所有.py
,检验所有木兰测试代码片段:191 -> 192环境.py
,定义全局方法:162 -> 171- 未变
分析器/语法树.py
:202交互.py
,交互环境(REPL):138分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:81中.py
,主程序:74功用/反馈信息.py
:65功用/调试辅助.py
,:57setup.py
, 34分析器/错误.py
:17测试/unittest/语法树.py
,确保生成的语法树与原始版本一致:67测试/unittest/交互.py
,交互环境相关测试:28
以上所述就是小编给大家介绍的《木兰编程语言 0.0.14.7:功能覆盖初版用户手册;Gitee Go 流水线尝鲜》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- iOS组件化开发架构设计思考(初版)
- 分布式链路日志组件 minbox-logging 初版发布
- ApiBoot v2.3.x 分支初版发布,走出重构源码架构设计第一步
- 反爬虫防盗刷 Spring Boot 组件 kk-anti-reptile 初版发布
- 基于 ApiBoot、Vue 的前后分离脚手架 ApiBoot Admin v1.0 初版发布
- Go 泛型尝鲜
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。