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

功能

这是儿歌数据模块的木兰源码:

下面的搜索部分引用了数据模块(开头using):

其中的 map、filter、list 功能与 Python3 相同。不支持用in判断是否为子字符串,于是用find代替。

代码统计

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

  • 测试

    • 木兰测试用例:601 + 299 = 900
    • 测试.py,运行测试的脚本:135 + 8 = 143
    • 未变
      • test语法树.py,确保生成的语法树与原始版本一致:63
  • 实现:1633 + 87 = 1720
    • 分析器/语法分析器.py, 为重用分析方法作重构:652 + 24 = 676
    • 演示高亮.py:80 + 18 = 98
    • 环境.py,加载木兰模块:33 + 54 = 87
    • 中.py,主程序:56 - 21 = 35
      • 分析器/语法树.py功用/调试辅助.py,包括对 ast 库的中文封装:251
      • 词法分析器.py,主要是词法规则:123

下一步

编辑器方面,仅加了些界面元素,功能设想中。

阅读上一篇

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

  1. 木兰编程语言重现——支持列表操作,演示编辑器高亮

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

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

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

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

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

  4. python list remove 删除引用_Python——list列表操作一坑(remove)

    问题发生背景:在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True),然后实例化了大批对象,具体你可参考打飞机游戏或者坦克大战发射子弹,每个子弹一个实例,创建的多到 ...

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

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

  6. Python引用模块和查找模块路径

    这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语 ...

  7. es6 实例:模块的 Singleton 模式

    实例:模块的 Singleton 模式 Singleton 模式指的是调用一个类,任何时候返回的都是同一个实例. 对于 Node 来说,模块文件可以看成是一个类.怎么保证每次执行这个模块文件,返回的都 ...

  8. mysql mongo关联查询语句_MySQL与Mongo简单的查询实例代码 筋斗云网络

    简介 本文通过一个实例给大家用MySQL和mongodb分别写一个查询,本文图片并茂给大家介绍的非常详细,感兴趣的朋友参考下吧 首先在这里我就不说关系型数据库与非关系型数据库之间的区别了(百度上有很多 ...

  9. mysql的高级查询实例_mysql高级查询实例及cmd命令.doc

    mysql高级查询实例及cmd命令.doc 还剩 19页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: sele ...

最新文章

  1. 易观与用友推出云融合产品“智能用户运营”,掀开数字营销技术新篇章
  2. 每日一则 LeetCode: Add Two Numbers
  3. 淘宝内部大量使用的开源系统监控工具
  4. GDCM:拷贝/复制DataSet的测试程序
  5. 内核中的UDP socket流程(6)——sendto
  6. fancyupload java_javascript-如何在内部Windows身份验证Intranet上...
  7. 关于js返回上一页的实现方法
  8. python语法糖是什么意思_Python中的甜蜜语法糖,甜甜的
  9. 【滤波器】基于时变维纳滤波器实现语音去噪含Matlab源码
  10. Android原生框架--Xui使用
  11. python draw函数_networkx draw函数的图例
  12. linux 利用缓存文件.swp恢复源文件
  13. MPB:青岛大学苏晓泉组分享基于分类学和系统发育的宏基因组比较DMS算法
  14. 阿里云轻量应用服务器Ubuntu20.04上手体验与基本配置(图形界面,ssh,代理等)
  15. Android camera2 框架学习记录
  16. Python实战项目总结
  17. python 编码 乱码问题
  18. 天九共享:企业成功的重要元素是责任感
  19. 二十六、ISIS技术总结
  20. 人脸图像识别(python人脸识别技术)

热门文章

  1. 决策树 prepruning_决策树与随机森林
  2. 全盘镜像只还原c盘有影响么_如何正确的清理C盘
  3. postman怎么传session_Day 47: 不搞懂Cookie和session誓不罢休
  4. python cv release_cv2.videoCapture.release()是什么意思?
  5. formrules 表单验证限制最大值_HTML5表单
  6. 兴城职高计算机,兴城学计算机,兴城学计算机去哪里,兴城学计算机一般工资能拿多少 - IT教育频道...
  7. c 获得java数据,获得jar中数据,获得jar数据,// example c
  8. UI基础设计规范,确定不了解一下?
  9. 数据库直接存图片mysql_教你如何在MySQL数据库中直接储存图片
  10. c++ opencv 识别车牌_小强学Python+OpenCV之-1.0开篇