木兰编程语言重现
Project description
前言
没错,这就是那个木兰。
2020 年一月第一时间提出知乎问题「木兰」编程语言有什么特色?的正是本人,这是那段暴风骤雨的亲历记。
目标
在悬赏尚未完成时,将努力向重现「木兰」编程语言的目标迈进。过程中的技术文章集结在知乎专栏并在开源中国同步更新。
木兰源代码转换为 Python 的中间表示(AST)后执行,可实现各种语法设计与周边功能,并可方便地利用 Python 现有生态。
运行
!必需 Python 3.7 !源码文件需 UTF-8 编码
通过 pip install ulang
安装木兰。
命令行交互环境
$ 木兰
木兰向您问好
更多信息请说'你好'
> 和 = 0
> for 数 in 1..10 {
>> 和 += 数
>> }
> print(和)
55
IDE 辅助
【原型】自带的编辑器:
运行木兰源码文件
使用.ul
后缀才可被引用
$ 木兰 测试/运算/四则运算.ul
4
using * in 海龟
颜色("黄色", "红色")
开始填充()
for 转角 in 0..4 {
前进(200); 右转(144)
}
结束填充()
主循环()
/* 需安装 Python 库“草蟒”: grasspy-modules */
中文报错信息
交互环境中仅提示出错所在位置简要信息:
> func a(n) { return n1+1 }
> func b(n) { print(n) }
> b(a(2))
😰 请先定义'n1'再使用, 见第1行
运行源码时,可见调用各层的详细信息。如果错误发生在其他文件,可见文件名:
$ 木兰 测试/错误处理/引用模块.ul
😰 取列表内容时,索引超出范围
“测试/错误处理/下标越界函数.ul”第2行:print([][0])
调用层级如下
见第3行:a()
参考例程在此
其中实用为较接近实用的部分。另外木兰代码编辑器也用木兰代码编写。
所有例程演示的语法可用原始的木兰可执行文件 ulang-0.2.2.exe 检验。如发现有异烦请告知,定将同样礼谢。
新手入门
如果无编程经验,请入此门。
功能说明
随着逐渐缩小与原版木兰的差距,将补充语言语法规则。用户手册尚待更新。为调试方便,报错等等反馈信息会逐渐中文化。
交互环境功能说明在此。
开发
新手开发者请看开发流程与项目结构简介。
使用 Python 3.7 的最新小版本。 Mac 和 Linux 下全部测试通过;windows 下测试大多数通过。如使用 3.8,语法树测试将失败。
为提高开发维护效率,本项目中尽量使用中文标识符。包括语法规则、Python 代码等等。
依赖 Python 包:
本地运行
$ python -m 木兰
运行测试
$ python -m unittest 测试.unittest.交互 测试.unittest.语法树 测试.unittest.所有用例 测试.unittest.正则
为检验与原始木兰可执行文件功能一致,在 Windows 下运行:
$ python 测试/运行所有.py
许可证
GNU GPLv3
版本历史介绍
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.