木兰编程语言重现——功能初具雏形,添加中文报错信息
自原型搭建已过去两个多月,现在实现了木兰编程语言一些基本的功能。正值搬家到 OSChina,作一阶段小结。
功能
以下示例都选自测试用例。
调用现有 Python 库如草蟒:
using * in 海龟 颜色("黄色", "红色") 开始填充() for 拐数 in 0..4 { 前进(200) 右转(144) } 结束填充() 主循环()
类型:
type Animal { func getName() { return 1 } } type Person : Animal { {} } print(Person.getName())
函数:
func increment(step) { func add(n) { return n + step } return add } print(increment(10)(1))
流程控制:
print(false ? 2 : 1) sum = 0 number = 1 while number < 4 { sum = sum + number number = number + 1 } print(sum)
中文报错信息
上述基本功能之外,对部分报错信息进行了加工,使之更易懂好读。
比如下面的死递归:
func f() { f() } f()
运行报错信息如下:
(..•˘_˘•..) 递归过深。请确认: 1、的确需要递归 2、递归的收敛正确 见第2行:f() 调用层级如下 第2行:f() 【中略 995 行】 第2行:f() 第4行:f()
又如此段代码:
func add(number) { return number1+1 } func output(number) { print(number) } output(add(2))
运行报错如下:
(..•˘_˘•..) 请先定义'number1'再使用 见第2行:return number1+1 调用层级如下 第7行:output(add(2))
语法分析的错误信息亦然。比如现在尚不支持空行,于是下面的代码:
print(2)
会报错如下:
错误.语法错误: 文件 "测试/错误处理/空行.ul", 第1行, 第1列, 没认出这个词 "换行" ^
代码统计
由于实现机制是将源码转换为 Python 的抽象语法树(AST)后调用 exec 执行,因此主要代码量在词法分析器和语法分析器(包括 AST 转换)。下面是几个主要部分的代码量统计(使用 scc,包括空行和注释,木兰的.ul
代码统计使用--count-as ul:javascript
参数)
- 测试
- 木兰测试用例:465
测试.py
,运行测试的脚本:123test语法树.py
,确保生成的语法树与原始版本一致:52
- 实现:1287
- (语法)
分析器.py
,包括 AST 转换:569 语法树.py
,功用/语法树处理.py
,包括对 ast 库的中文封装:214词法分析器.py
,主要是词法规则:110中.py
,主程序:56功用/反馈信息.py
,报错信息中文化:43环境.py
,全局变量:30
- (语法)
下一步
除了继续补全木兰语言本身功能之外,将尝试开发一个简单的代码编辑器,使新用户可以挑选各测试用例进行修改后直接运行。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
分布式监控系统 WGCLOUD,支持历史数据保留期限
WGCLOUD,server端基于springboot开发,agent端使用go编写。支持高并发高性能,核心模块包括:服务器集群监控,ES集群状态监控,CPU监控,内存监控,数据监控,docker监控,网络流量监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。 WGCLOUD之前版本都是基于邮件来告警,为了支持短信,微信,钉钉等其他方式,系统提供了接口来集成这些告警方式,这样更灵活,你可以在此做任何实现。大家可以在自定义脚本里拿到告警内容,然后调用自己的接口将内容发送出去。 此次v3.0更新: 可在配置文件config/application.yml中自定义历史数据的保留时间,超过保留时间系统会自动清理,提升数据库读写速度。 清理数据包括,cpu,内存,网络流量记录,系统负载,进程状态,docker状态,下线主机,下线进程,下线docker,服务接口响应记录,错误日志记录。 手动录入的信息,如数据源,数据表,服务接口,docker基础信息,告警邮件配置等不会被清理 此次发布是补充说明v3.0更新功能,已安装v3.0不用更新。 base: #登陆账号a...
- 下一篇
jeecg-element-admin 1.0.7 发布
jeecg-element-admin是一个基于 element-ui 的 jeecg 管理系统。包含动态路由、权限配置、国际化、可拖拽抽屉、可拖拽弹窗、下拉树、jsx 分页表格等优秀的组件以及一些丰富的内容。 更新内容如下 1 修复表单设计器bug 2 修复了点击删除同时弹出编辑框 登录注册 下拉树组件 可拖拽抽屉 可随意拖动弹窗,放大,缩小,头拖拽 国际化 代码编辑器 github查看地址 https://github.com/869123771/element-pro gitee查看地址https://gitee.com/wangyanghub/element-pro
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启