木兰编程语言 在 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 1print('')^
SyntaxError: EOL while scanning string literal
>>> print('')File "<stdin>", line 1print('')^
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,:57
      • setup.py, 34
      • 分析器/错误.py:17
      • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:67
      • 测试/unittest/交互.py,交互环境相关测试:28

ab st语言编程手册_木兰编程语言 0.0.14.7:功能覆盖初版用户手册;Gitee Go 流水线尝鲜...相关推荐

  1. ab st语言编程手册_从零开始学习ST/SCL编程语言:一赋值及条件执行指令的讲解...

    有很多朋友想学习SCL语言,其实不要把SCL或ST语言想的有多高大上. 首先看下什么是SCL语言:SCL语言是一种结构化文本,类似于计算机高级语言的编程方式,他的语言规范解决计算机的PASCAL语言. ...

  2. ab st语言编程手册_西门子PLC编程SCL和LAD谁才是王者?一起讨论一下

    现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD).结构化文本(ST).流程图(SFC).指令表(IL)和功能块(FB).在这 ...

  3. 西门子scl语言编程手册_西门子SCL编程PEEK指令讲解

    单词"peek"在英语中表示"偷看,瞥一眼",在计算机编程中表示"读取数据". 在西门子SCL编程中,PEEK指令可以用来读取输入缓存区(I ...

  4. st语言 数组的常用方法_ST语言编程手册

    ST 语言编程手册 目录 1. ST 基本原理 ............................................................................ ...

  5. 海克斯康三坐标模块化c语言编程,海克斯康三坐标编程手册_海克斯康三坐标教程...

    海克斯康三坐标编程手册_海克斯康三坐标教程 海克斯康三坐标操作手册_海克斯康三坐标教程 海克斯康三坐标测量机是一种高精密的测量仪器,它的使用的好坏与三坐标测量机的使用人员有很大关系,良好的坐标测量机测 ...

  6. 51单片机c语言工作手册,51单片机C语言编程手册

    51单片机C语言编程手册 1 第一章 介绍 这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些 新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不 ...

  7. plcst语言编程教程_PLC ST语言编程之我的心得-专业自动化论坛-中国工控网论坛...

    以前编程都是习惯用梯形图,每次编运算程序,都得写很多条运算程序.调试且不说,就光重复使用就得复制好几遍,还要一遍一遍的改寄存器地址,很是麻烦.一次偶然的机会,我用到了一款PLC可以使用ST 语言编程的 ...

  8. 三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置

    三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置,有监控曲线和历史记录,PLC采用ST语言进行 ...

  9. C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。

    例题:函数fun的功能是:统计长整数test的各位上出现数字5.6.7的次数,并通过外部(全局)变量sum5.sum6.sum7返回主函数. 例如:当test=89431676时,结果应该为:sum5 ...

最新文章

  1. visio 画图工具
  2. kicad绿油开窗_GitHub - OS-Q/S05: KiCad EDA
  3. Oracle啟動模式關閉模式
  4. python输出文本 去掉引号_Python可以在文本文件中读取时从字符串中删除双引号吗?...
  5. [收藏]网络营销十道羊皮卷
  6. ssm指的是什么_什么是RESTful?RESTfule风格又是啥?
  7. snap-社交网络分析
  8. 【深入浅出向】从自信息到熵、从相对熵到交叉熵,nn.CrossEntropyLoss, 交叉熵损失函数与softmax,多标签分类
  9. C语言printf函数格式化打印之长整型
  10. 报错:further occurrences of HTTP request parsing errors will be logged at DEBUG level
  11. 计算机第三套演示文稿yswg.pptx,打开考生文件夹下的演示文稿yswg.pptx,根据考生文件夹下的文件“PPT-素材.docx”,按照下列要求完善 - 赏学吧...
  12. Destroying assets is not permitted to avoid data loss.解决思路
  13. 游戏‘微信打飞机 第一课
  14. 大数据就业前景怎么样?新人职业发展路径是什么?
  15. 网页调用腾讯qq在线客服
  16. git .gitignore忽略文件的用法
  17. python使用pip install安装django报错
  18. 怎样通过注册表禁用USB口和解封USB口?
  19. Unity之OpenXR+XR Interaction Toolkit接入HTC Vive
  20. 卡瓦格博[梅里雪山]之日照金山美景全纪录

热门文章

  1. Android允许应用程序使用Http明文网络传输
  2. Android开发之带进度条的WebView
  3. invalid signature_php,微信开发JSSDK遇到的问题 config:invalid signature
  4. mysql group_concat
  5. Golang 推荐的命名规范
  6. fabric零碎知识
  7. vue+express 构建后台管理系统
  8. 甲骨文将Exadata Cloud转化为内部软件包
  9. WSFC2008R2跨群集迁移WSFC2012R2
  10. 微信小程序前端支付代码