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

栏目: 软件资讯 · 发布时间: 5年前

内容简介:【安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国。 注意:必需 python 3.7,源码文件需 UTF-8 编码】 之前是用 tkinter 实现的木兰源码编辑器,但一直想将前端部分摆脱对 Python UI 库的依赖(...

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

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

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

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

在服务端,从木兰主程序截取了解析和运行木兰代码的 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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员之禅

程序员之禅

[德] Christian Grobmeier / 荣耀、朱艳 / 人民邮电出版社 / 2015-8 / 39.00元

禅是一种生活态度和生活方式。程序员是一份特别辛苦的职业,也是一个承受各种压力的群体。在物欲横流的今天,禅对于程序员有着特殊的意义和价值。 本书的作者是一名德国程序员老兵,深谙程序员的喜怒哀乐。他曾经发表了一篇题为“程序员之禅的十条法则”的博客文章,引发众多程序员热烈的讨论和强烈的共鸣。本书共10章,结合程序员日常生活和工作的方方面面,作者通过对禅的知识、理解、体验、思考和感悟,提出很多中肯的......一起来看看 《程序员之禅》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具