Skip to main content

木兰编程语言重现

Project description

Gitee Go 所有测试 木兰在线版

前言

没错,这就是那个木兰。

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

目标

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

IDE 辅助

VS Code 语法高亮插件

vsc截图

【原型】自带在线编辑器

自带IDE截图

运行木兰源码文件

$ 木兰 测试/手工测试/草蟒_海龟.ul 运行如下调用了 草蟒 中文 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,源码文件需 UTF-8 编码pip install ulang 安装木兰。

命令行交互环境

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

功能说明 在此

binder 在线环境

New -> Terminal 打开命令行,同样输入“木兰”运行

新手入门

无编程经验不打紧,请入此门

参与开发

实现简介

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

新手开发者请看开发流程与项目结构简介

使用 Python 3.7 的最新小版本。Mac、LinuxWindows 下全部测试通过。如使用 3.8,语法树测试将失败。

为提高开发维护效率,本项目中尽量使用中文标识符。包括语法规则、Python 代码等等。

木兰语言部分依赖的第三方 Python 包:

本地运行

$ python -m 木兰

运行测试

  1. 重现项目自身测试
$ python -m unittest 测试.unittest.交互 测试.unittest.语法树 测试.unittest.所有用例 测试.unittest.报错 测试.unittest.生成
  1. 原始木兰可执行文件测试

以下为检验与原始木兰可执行文件功能一致,在 Windows 下需将 ulang-0.2.2.exe 置于项目根目录。

以下测试语法相关用例。windows 以外其他系统下,会对从 PyPI 安装的版本进行测试:

$ python 测试/运行所有.py

以下测试源码生成相关用例:

$ python -m unittest 测试.unittest.原始可执行文件

许可证

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.

Files for ulang, version 0.0.22
Filename, size File type Python version Upload date Hashes
Filename, size ulang-0.0.22-py3-none-any.whl (56.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size ulang-0.0.22.tar.gz (37.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page