木兰编程语言 0.0.15.0:基于网络的运行环境;词法错误处理

2020年11月19日

【安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国注意:必需 python 3.7,源码文件需 UTF-8 编码

之前是用 tkinter 实现的木兰源码编辑器,但一直想将前端部分摆脱对 Python UI 库的依赖(比如这种问题)。现在用一个 WebSocket 客户端做了个运行环境原型(与前文类似,用木兰源码编写了服务端)。在开发中,为避免将 tk 应用置于其他线程运行,转用基于 HTML 的代码编辑器。效果如下:

左侧为代码编辑器(参考了前文实现);右侧上部输入各命令,下部显示输出。

在服务端,从木兰主程序截取了解析和运行木兰代码的 Python 代码段,将其改写为可以读取 exec 输出(为显示输出在客户端)后,再在木兰服务端调用。由于木兰语言并未内置 compile 和 exec 函数,因此这段 Python 代码并未改写为木兰代码。

在基于网络的运行环境外,原本的交互环境中,遇到词法错误会直接退出,体验不佳,在此版本修正。同时发现木兰使用的 rply 框架发布版 0.7.7 有个 bug,导致词法错误的行列号信息缺失,幸运的是发现此 bug 已在 rply 中被修复了,但似乎有些情况没被覆盖,仍需跟进。

由于 rply 发布版已许久未更新,也不知何时会更新包含上面补丁的发布版,一时没想到好办法绕过 rply 当前发布版使用补丁。在本地开发时,可以下载 rply 最新源码,用 python setup.py install 安装,使补丁在本地可用。效果如下:

> func a{
>> 1#2
   词法错误:文件 "【标准输入】", 第2行, 第1列, 分词时没认出这个词 "#"
1✋#2
【下面暂时还有 rply 相关层信息,之后将除去】 

附:代码量统计

主要部分的代码行数统计,格式为:上次->现在。

  • 木兰代码量 3114 -> 3204
    • 运行环境,实现与测试大部为木兰代码:431 -> 524(添加了 WebSocket 服务端)
    • 木兰测试用例,包括部分实用小程序(如井字棋):2683 -> 2680

 

  • Python 代码量(木兰实现与测试框架):2612 -> 2675
    • 分析器/语法分析器.py:1019 -> 1013
    • 分析器/词法分析器.py:207
    • 测试/运行所有.py,检验所有木兰测试代码片段:194 -> 195
    • 环境.py,定义全局方法:172
    • 交互.py,交互环境(REPL):138 -> 148
    • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:81 -> 82
    • 功用/反馈信息.py:71
    • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:66
    • 编辑器/运行木兰.py: 45
    • 分析器/错误.py:17 -> 26
    • 未变
      • 分析器/语法树.py:202
      • 中.py,主程序:74
      • 功用/调试辅助.py,:57
      • setup.py, 34
      • 测试/unittest/交互.py,交互环境相关测试:28
展开阅读全文
0 收藏
分享
加载中
精彩评论
木兰编程语言,国产之光,中国编程语言唯一的希望。
2020-11-19 18:34
6
举报
木兰+红芯 应该能填补国产编程和浏览器的空缺
2020-11-19 17:11
5
举报
纯属闲得蛋疼,不如写点基础包和库。
2020-11-19 22:51
3
举报
回复 @吴烜2020 : 这种科研诈骗的行为越来越多,照此下去,劣币驱逐良币,夸大其辞的人能获得褒奖得到投资,切实努力的人却要被嘲讽效果不如业界平均水平。
2020-11-20 10:03
2
举报
表情包 --- 在移动互联网时期,人们以时下流行的明星、语录、动漫、影视截图为素材,配上一系列相匹配的文字,用以表达特定的情感
2020-11-20 09:35
2
举报
最新评论 (41)
我是来看评论的😏
2020-11-23 18:41
0
回复
举报
因为正文完全看不懂吗?
2020-11-24 10:44
0
回复
举报
这个作者什么来历
2020-11-20 18:07
0
回复
举报
$ python -m 木兰....

你怎么不
$木兰 -m 木兰。。。。
2020-11-20 11:34
1
回复
举报
因为本项目的目标是重现木兰语言的语法和功能,并不需要额外添加自举这个功能。
2020-11-20 11:57
0
回复
举报
两种,要么你人闲得慌,要么钱多烧得慌!
2020-11-20 11:04
0
回复
举报
你属于前者。不属于后者。
2020-11-20 13:41
0
回复
举报
错,小孩子才做选择!
2020-11-20 18:06
0
回复
举报
无利不早起,这后面有巨大利益,看看jack🐴口口声声为我们好,结果还是割我们韭菜
2020-11-20 10:17
0
回复
举报
仅是瞎折腾,费时间费精力,到时候也是个摆设,没多大用处。如果实在是闲的,打发时间,当我没说。
2020-11-20 09:43
0
回复
举报
即便本项目所有的用处只是为了证明木兰绝不是Python改个名字而已,也值了。
2020-11-20 09:51
0
回复
举报
如果真不是,需要证明吗?
2020-11-20 11:35
0
回复
举报
被谣言和口水淹没的真相还少吗?即使把木兰例程拿到某些人眼皮底下,他们还能继续坚持它没有新语法新特性呢!
2020-11-20 11:53
0
回复
举报
程序是不是又不是靠口水确定的, 那句名言, talk is cheap, show me the code
2020-11-20 16:20
0
回复
举报
代码看了么?
2020-11-20 16:59
0
回复
举报
回复 @吴烜2020 : 你的代码有人用吗
2020-11-20 21:31
0
回复
举报
回复 @陈钇蒙 : 自己看pypi下载和vscode插件安装数据。
2020-11-21 00:39
0
回复
举报
回复 @吴烜2020 : 这玩意可以刷
2020-11-21 14:49
0
回复
举报
生活中,有很多事科学解释不了,我以前是唯物主义,从来不信邪的,难道世上真的有鬼神一说吗?有时候不信却是有的。
2020-11-20 08:46
0
回复
举报
镜子里看见啥了吗?
2020-11-20 09:03
0
回复
举报
五连鞭两手之间真的有闪电
2020-11-20 09:12
1
回复
举报
表情包 --- 在移动互联网时期,人们以时下流行的明星、语录、动漫、影视截图为素材,配上一系列相匹配的文字,用以表达特定的情感
2020-11-20 09:35
2
回复
举报
纯属闲得蛋疼,不如写点基础包和库。
2020-11-19 22:51
3
回复
举报
木兰可以调用python库,不知还需要什么功能的“基础包和库”?
2020-11-20 00:40
0
回复
举报
那有python还要这个就是拖了快放 PI,图啰嗦
2020-11-20 08:43
0
回复
举报
基于现有编程语言的生态研发的新编程语言多的去了,先了解一下再放阙词不迟?
2020-11-20 08:54
0
回复
举报
别人是研发新语言,比如kotlin基于Java,新的语法,新的特性。你这玩意就是个翻译。
2020-11-20 09:51
0
回复
举报
木兰语言的新语法新特性没看见?Kotlin代码和Java代码也可以互相“翻译”,又如何?
2020-11-20 09:58
0
回复
举报
回复 @吴烜2020 : 这种科研诈骗的行为越来越多,照此下去,劣币驱逐良币,夸大其辞的人能获得褒奖得到投资,切实努力的人却要被嘲讽效果不如业界平均水平。
2020-11-20 10:03
2
回复
举报
回复 @平安OSC : 绝大多数人连木兰语言的例程都没机会看到,就被铺天盖地的像“木兰就是Python源码重新编译打包”这种荒诞流言霸了屏。技术上的优劣评判在这种氛围下谈何公正?本项目就是要让技术回归技术,让更多人看到木兰语言的设计和实现。
2020-11-20 11:13
0
回复
举报
你更闲得蛋疼,只会嘴,不会干的人。要求别人时是圣人,要求自己时是j人。有空就完成你自己提出的要求吧。
2020-11-20 13:46
0
回复
举报
木兰编程语言,国产之光,中国编程语言唯一的希望。
2020-11-19 18:34
6
回复
举报
是吗?你知道哪些国内研发的编程语言?何来的“唯一的希望”?
2020-11-20 00:45
0
回复
举报
易语言是目前唯一靠谱的国产语言。
2020-11-20 09:10
1
回复
举报
干嘛要说实话。。。
2020-11-20 09:21
0
回复
举报
aardio?
2020-11-22 11:34
0
回复
举报
木兰+红芯 应该能填补国产编程和浏览器的空缺
2020-11-19 17:11
5
回复
举报
微软edge浏览器怎么说?
2020-11-19 18:44
0
回复
举报
用过的人自然知道微软使用chrome核心对chrome的威胁有多大 速度比chrome原生还快 而且微软还反向贡献了不少代码到chrome
2020-11-19 21:00
0
回复
举报
Edge比chrome快?
2020-11-20 02:09
0
回复
举报
你下载个用下不就知道了么 的确基于chrome的edge在很多性能上是比原来的还快
https://www.cnbeta.com/articles/tech/933091.htm
2020-11-20 16:49
0
回复
举报
更多评论
41 评论
0 收藏
分享
返回顶部
顶部