内容简介:木兰编程语言 在 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 泛型尝鲜
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Rails
David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99
Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!