Skip to main content

木兰编程语言重现

Project description

前言

没错,这就是那个木兰。

2020 年一月第一时间提出知乎问题「木兰」编程语言有什么特色?的正是本人,这是那段暴风骤雨的亲历记

目标

悬赏尚未完成时,将努力向重现「木兰」编程语言的目标迈进。过程中的技术文章集结在知乎专栏并在开源中国同步更新。

木兰源代码转换为 Python 的中间表示(AST)后执行,可实现各种语法设计与周边功能,并可方便地利用 Python 现有生态。

运行

!必需 Python 3.7 !源码文件需 UTF-8 编码

通过 pip install ulang 安装木兰。

命令行交互环境

$ 木兰
木兰向您问好
更多信息请说'你好'
> 和 = 0
> for 数 in 1..10 {
>> 和 += 数
>> }
> print(和)
55

IDE 辅助

VS Code 语法高亮插件

vsc截图

【原型】自带的编辑器

自带IDE截图

运行木兰源码文件

使用.ul后缀才可被引用

$ 木兰 测试/运算/四则运算.ul
4

下面例程调用了草蟒的中文 API:

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 测试/运行所有.py
$ python -m unittest 测试.unittest.交互 测试.unittest.语法树

为检验与原始木兰可执行文件功能一致,需先阅读“win32”部分注释并手动修改。

许可证

GNU GPLv3

版本历史介绍

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ulang-0.0.14.6.tar.gz (24.8 kB view hashes)

Uploaded Source

Built Distribution

ulang-0.0.14.6-py3-none-any.whl (42.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page