木兰编程语言重现——支持列表操作,演示编辑器高亮
通过添加列表操作等功能,已可编写经典排序算法。另外,作为代码编辑器的第一步,用 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 sys type 猜数字 : Cmd { { intro = "木兰想了个 100 之内的数,猜猜是几?" 想的 = 随机范围数(100) prompt = '请猜吧: ' } func $default(行) { 数 = int(行) if 数 == self.想的 { println("中了!") exit() } else { println("太" + (数 > self.想的 ? "大" : "小") + "了!") } } } 猜数字().cmdloop()
代码统计
下面是几个主要部分的代码行数统计,+的为相对上周的增量。
- 测试
- 木兰测试用例:465 + 136 = 601
测试.py
,运行测试的脚本:123 + 12test语法树.py
,确保生成的语法树与原始版本一致:52 + 11
- 实现:1287 + 346 = 1633
分析器/语法分析器.py
,包括 AST 转换:569 + 83 = 652分析器/语法树.py
,功用/调试辅助.py
,包括对 ast 库的中文封装:214 + 37词法分析器.py
,主要是词法规则:110 + 13rply_parser.py
,支持空行的权宜之计:117演示高亮.py
:80环境.py
,全局变量:30 + 3
下一步
添加对木兰模块的支持,改进编辑器。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WookTeam 1.2 发布,新增知识库markdown编辑器,新增知识库协作更新通知
WookTeam 1.2 现已发布。WookTeam是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,知识库管理等工具。 1.2更新内容 新增知识库markdown编辑器; 新增知识库协作更新通知。 1.1更新内容 新增语音聊天; 新增视频聊天; 新增消息提醒铃声; 新增知识库团队协作人员列表; 修复发送文字过长导致的bug; 修复其他已知bug。 ------------------------------------- 产品简述 为了提高工作效率,现在很多公司多多少少都会使用到一些在线的协作工具辅助办公,不管是在线的文档协作或者在线的项目管理,这些工具都切实的提高了团队的工作效率。 今天 Gitee 推荐的也是一款在线协作工具,而且是一款开源的在线协作工具,其中有在线思维导图、在线流程图、项目管理、任务分发,知识库管理等模块,一起来看看吧。 项目名称:WookTeam 项目作者:aipaw 开源许可协议:MIT 项目地址:https://gitee.com/aipaw/wookteam 产品介绍 wookteam是一款轻量级的...
- 下一篇
xk-time 1.1.3 发布,增加时间格式验证功能
xk-time 1.1.3 发布了,更新如下: 1.增加验证时间格式是否正确功能,支持验证yyyy-MM-dd和 yyyy-MM-dd HH🇲🇲ss 格式。 软件介绍: xk-time is a datetime converter calculator formatter calendar and cron expression tool set, based on java8 date and time API, thread safe, easy to use. 时间转换,计算,格式化,解析,日历和cron表达式等的工具,使用java8,线程安全,简单易用,多达70几种常用日期格式化模板。 0.为什么要开发这个工具? (1)java8以前的Date API设计不太好,使用不方便,往往会有线程安全问题。 xk-time工具包,使用java8 api,其中Instant、LocalDate、LocalDateTime、LocalTime、ZonedDateTime等都是线程安全的类,而且增加了更丰富的方法,在此基础上开发相关工具类,线程安全,让使用更方便。 (2)常见的DateU...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案