通过添加列表操作等功能,已可编写经典排序算法。另外,作为代码编辑器的第一步,用 Python 实现了带基本语法高亮的编辑器原型,用于显示木兰源码。

功能

编辑器功能

用 tkinter 的 Text 实现了如下的木兰源码高亮效果:

语言功能

添加了列表操作、多项赋值等等基本功能,编写经典算法已经可行。比如快速排序:

func 分区(数列, 下界, 上界) {中值 = 数列[上界] // 中值可以取任意一个位置的前位 = 下界for 后位 in 下界..上界 {if 数列[后位] < 中值 {数列[前位], 数列[后位] = 数列[后位], 数列[前位]前位 += 1}}数列[前位], 数列[上界] = 数列[上界], 数列[前位]return 前位
}func 快速排序(数列) {func 递归(各项, 下界, 上界) {if 下界 < 上界 {中位 = 分区(各项, 下界, 上界)递归(各项, 下界, 中位 - 1)递归(各项, 中位 + 1, 上界)}}递归(数列, 0, len(数列) - 1)
}

支持了三元运算? :,见例程测试/手工测试/命令行.ul

using Cmd in cmd
using 随机范围数 in 随机数
using exit in systype 猜数字 : Cmd {{intro = "木兰想了个 100 之内的数,猜猜是几?"想的 = 随机范围数(100)prompt = '请猜吧: '}func $default(行) {数 = int(行)if 数 == self.想的 {println("中了!")exit()} else {println("太" + (数 > self.想的 ? "大" : "小") + "了!")}}
}
猜数字().cmdloop()

代码统计

下面是几个主要部分的代码行数统计,+的为相对上周的增量。

  • 测试

    • 木兰测试用例:465 + 136 = 601
    • 测试.py,运行测试的脚本:123 + 12
    • test语法树.py,确保生成的语法树与原始版本一致:52 + 11
  • 实现:1287 + 346 = 1633
    • 分析器/语法分析器.py,包括 AST 转换:569 + 83 = 652
    • 分析器/语法树.py功用/调试辅助.py,包括对 ast 库的中文封装:214 + 37
    • 词法分析器.py,主要是词法规则:110 + 13
    • rply_parser.py,支持空行的权宜之计:117
    • 演示高亮.py:80
    • 环境.py,全局变量:30 + 3

下一步

添加对木兰模块的支持,改进编辑器。

木兰编程语言重现——支持列表操作,演示编辑器高亮相关推荐

  1. 木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作

    实现了最基本的对木兰模块的引用功能,正好想做一个儿歌查询,方便找适合小孩唱的歌,就用这个实例进行功能验证.过程中发现缺了一些字符串和列表的基本功能,于是按需添加. 功能 这是儿歌数据模块的木兰源码: ...

  2. 木兰编程语言重现:引用本地木兰模块;模拟凑十法加法

    之前一直没重现本地包内的木兰模块引用,导致提取出的模块只能放在项目根目录下. 上周终于搞定.于是将上次的摆放规划应用的源码拆分成几个模块,比如测试/实用/规划/点.ul,在主模块中可以如此引用usin ...

  3. 木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构

    在支持 Python 的 range 之外,木兰还支持如下的等价语法.个人感觉这样的语法更直观易读一些: 闭区间 for 数 in 0..2 {println(数) } 输出: 0 1 2 左闭右开区 ...

  4. ab st语言编程手册_木兰编程语言 0.0.14.7:功能覆盖初版用户手册;Gitee Go 流水线尝鲜...

    木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持! 年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手 ...

  5. 二元logistic模型案例_二元逻辑回归的简介与操作演示

    二元逻辑回归介绍 定义 Logistic回归主要用于因变量为分类变量(如是否等)的回归分析,自变量可以为分类变量,也可以为连续变量.它可以从多个自变量中选出对因变量有影响的自变量,并可以给出预测公式用 ...

  6. python列表操作程序_Python列表操作,比较常见的10个问题

    列表是比较常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问较多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决. 1.迭代列表,如何访问列表下标索引 ...

  7. 木兰编程语言当事人被停职:自主创新何时当得起科技自立?

    作者丨陈思.赵钰莹 闪亮登场:被指疑似 Python:当事人被停职.被冠以自主创新.国内首款... 称号的木兰编程语言,在短短几天内上演了一出"闹剧". 1 月 17 日,木兰编程 ...

  8. Python精通-Python列表操作

    导语   在之前的关于Python的分享中对于基本数据类型中字符串.布尔值等做了详细的分享.接下来的内容就是在Python中的另一个比较重要的基本数据类型列表,关于列表在之前对于字符串进行切分的时候简 ...

  9. Git介绍及常用操作演示(一)--技术流ken

    Git介绍及常用操作演示(一)--技术流ken Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus To ...

最新文章

  1. 人工智能是什么?带你一次掌握人工智能的三大重点及三大领域
  2. boost::hana::product用法的测试程序
  3. Not So Simple Polygon Embedding CodeForces - 1354C2(计算几何)
  4. poj1258 Agri-Net 最小生成树Kruskal、Prim
  5. 内存管理, 对象的生命周期
  6. Linux学习笔记010---CentOS7下安装FTP服务
  7. python的多行语句可以使用反斜杠_Python的续行符:反斜杠\
  8. 微信红包技术架构首次流出,贼牛逼啊!
  9. 个人计算机之前,很久之前的个人pc机 文曲星,是什么档次,jrs还有印象么?
  10. 网络口碑监控系统方案
  11. 短说 3.7.1正式版更新【新增悬赏问答、打赏、付费看帖、IP属地】
  12. html5中hr是什么意思,【hr是什么意思】hr的意思_hr指的是什么_亲亲宝贝网
  13. ZOJ1084(四色定理)
  14. 10017---今天下午接到阿里的电话面试
  15. 初级会计实务--第七章第一节、管理会计概述
  16. DNW for CentOS7
  17. [DeCAF]DeCAF: A Deep Convolutional Activation Featurefor Generic Visual Recognition
  18. 记一次音视频开发工程师面试
  19. 【行研报告】B2C跨境电商平台“出海”研究报告—附下载链接
  20. 新晋亿万富翁的十大成功准则

热门文章

  1. python 灰度直方图_python3+opencv 使用灰度直方图来判断图片的亮暗操作
  2. sis地址获取器_TencentOS tiny深度源码分析(2)—— 调度器
  3. linux ntfs 用户权限,linux权限及ntfs文件系统权限的知识
  4. netbeans 添加gif图片_告别PC 用手机完成各种GIF动画编辑
  5. 设计灵感|展览海报的设计没有头绪?
  6. android view添加背景,android – 如何将视图作为背景添加到surfaceView?
  7. cpp 编译dll_GCC编译基础
  8. C++局部重载new delete方法剖析
  9. CUDA的线程层次结构
  10. 《深入浅出DPDK》读书笔记(六):报文转发(run to completion、pipeline、精确匹配算法、最长前缀匹配LPM)