木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现

2020-10-22 10:58:50 +08:00
 xuanwu

知乎原文:木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现

安装方法:pip install ulang,使用方法与例程请见 pypi 项目首页(源于码云首页)。 注意:必需 python 3.7

木兰原始可执行文件的报错信息非常简单,并不包含出错位置和调用层级信息:

>ulang-0.2.2.exe 测试\错误处理\引用模块.ul
IndexError: list index out of range

这在交互环境或者源码文件单一很短时还可接受,但开发更长代码或者多文件项目时就使得排错十分困难。四个月前添加了一些中文报错信息,本周在对井字棋游戏进行重构时,发现多文件互相引用时未显示层级调用信息,颇为不便,于是进行了修正。现在的报错行为举例如下:

1 报错信息

交互环境中仅提示出错所在位置简要信息:

> func a(n) { return n1+1 }
> func b(n) { print(n) }
> b(a(2))
 😰 请先定义'n1'再使用, 见第 1 行

运行源码时,可见调用各层的详细信息:

$ 木兰 测试 /错误处理 /未定义变量于多层函数.ul
 😰 请先定义'数 1'再使用
见第 2 行:return 数 1 + 1
调用层级如下
见第 7 行:输出(加(2))

如果错误发生在其他文件,可见文件名:

$ 木兰 测试 /错误处理 /引用模块.ul
 😰 取列表内容时,索引超出范围
“测试 /错误处理 /下标越界函数.ul”第 2 行:print([][0])
调用层级如下
见第 3 行:a()

如果某被引用的模块加载出错,现在只能提示问题模块,今后将尝试加上该模块的具体问题和定位信息,另外还有个相关问题

$ 木兰 测试 /错误处理 /引用问题模块.ul
 😰 No module named '测试'
调用层级如下
见第 1 行:using * in 测试.错误处理.无此变量

如果错误可以定位到列,则也用醒目符号提示出错位置,木兰源码的层级调用信息将在之后版本清除

[余下部分见原文:木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现]

1429 次点击
所在节点    推广
3 条回复
vvxex
2020-10-22 11:56:48 +08:00
要不。。。还是算了吧。。。
suyuyu
2020-10-22 14:41:15 +08:00
这么执着
Fizzyi
2020-10-22 14:57:38 +08:00
没其他意思 但是我看着有点难受

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX