木兰编程语言重现:不忘初衷,纠正偏差再出发

2020年09月10日

项目在近日荣幸获得码云推荐,定将再接再厉,也望各位鼎力相助。

 

上周暂缓了一下,确认了摸索出的测试用例是否有误。用木兰编程语言的原始可执行文件 ulang.0.2.2.exe 作基准,用它跑了一遍积累至今的测试用例。

果然发现一处疏漏。木兰原始效果如下:

>  print(["a", "b"])
[a, b] 

看出端倪吗?同样例程 Python 效果如下,输出带引号:

>>> print(["a", "b"])
['a', 'b'] 

如果是 print 字符串,两者的输出都不带引号;

> print("ab")
ab 

这个细节功能的用意,也许是为了与字符串打印输出效果保持一致。不仅是列表,其他容器如字典、集合、多项(tuple)等也是如此。原设计者对用户体验的揣摩可见一斑。

修复此测试后,所有测试用例在原始可执行文件上通过,算是一个小里程碑。

另外,忍不住搞定了一个反馈信息的显示问题。如果源码中带中文字符,这个箭头就指不准出错位置。开发调试过程中给自己带来不大不小的麻烦:

办法就是直接在源码的出错位置前插入一个✋。如有更合适的标志请建议,比如某个不常用但形象的中文字符?

 

代码统计

下面是几个主要部分的代码行数统计,格式为:上次->现在。

  • 测试
    • 木兰测试用例:1714 -> 1919 主要是英文版测试用例的添加
    • 测试/运行所有.py,检验所有木兰测试代码片段:156 -> 180
    • 未变
      • test语法树.py,确保生成的语法树与原始版本一致:67
  • Python 总代码量(包括测试部分):2200 -> 2237
    • 分析器/语法分析器.py:910 -> 913
    • 环境.py,加载木兰模块:124 -> 137
    • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:77 -> 78
    • 分析器/错误.py:18 -> 17
    • 未变
      • 分析器/词法分析器.py:190
      • 分析器/语法树.py:178
      • 演示高亮.py:100
      • 功用/反馈信息.py:49
      • 中.py,主程序:36
展开阅读全文
0 收藏
分享
加载中
精彩评论
你的初衷是什么?仅仅只是做一个克隆版的木兰编程语言吗?为什么重现?重现完了你要做什么
2020-09-10 08:27
8
举报
作者自己花时间做一个东西,即没强制让其他人花钱,花时间,为啥就有人看不惯,找各种理由喷昵?
关于有人提到”有什么意义”,这种人太以自我为中心了。意义对每个人是不一样的,这种人就是习惯了拿自己的所谓意义去评价,要求别人。
在动不动就否定其他人之前,首先需要想想自己比其他人做过什么更有意义的事情吗?
2020-09-10 12:52
7
举报
搞不懂,实在看不出有什么意义。
2020-09-10 09:22
5
举报
喷子? 如果你管发表不同意见叫喷子,那喷子就多的去了,开源不就是为了发能吸收各方意见来完美项目吗?然而你这做法完全相反,只要是有点不合心意就全删,只保留正面留言,怕被人说做什么开源
2020-09-10 09:13
5
举报
你发标的意见哪句话值得借鉴?哪句话值得吸收?不就是个盆子,还大谈开源精神,搞笑。
2020-09-10 16:28
3
举报
最新评论 (26)
作者自己花时间做一个东西,即没强制让其他人花钱,花时间,为啥就有人看不惯,找各种理由喷昵?
关于有人提到”有什么意义”,这种人太以自我为中心了。意义对每个人是不一样的,这种人就是习惯了拿自己的所谓意义去评价,要求别人。
在动不动就否定其他人之前,首先需要想想自己比其他人做过什么更有意义的事情吗?
2020-09-10 12:52
7
回复
举报
执着在这个方向上。。。。。
2020-09-10 12:35
1
回复
举报
我一直以为这个是当初被人鄙视的木兰语言,没想到只是爱好者的重制版而已。可以,学习一下语言制作,挺好的。至少比拿狗皮膏药骗经费好多了。
2020-09-10 10:39
0
回复
举报
重制是以原始木兰语言的可执行文件作为基准,语法没有区别。实现上基本沿用了可执行文件逆向出的代码的实现方式。
2020-09-10 11:30
0
回复
举报
说到这个项目的意义,我倒是觉得很不错的。
现代的编程语言,除了文字不一样,基本上是在西方的思维定式下发展的。这也难怪吗,本来吗,创造这些语言的人就已经决定了语言的基因。
木兰语言,算是在基于中文(且不说是古文,还是现代汉语)思维编程的尝试。虽然还只是初级的模仿他人,甚至只能是生硬的翻译,那怕就是一种乐趣的尝试又未尝不可呢。
说必是有用,谈必是新轮子,再争就是阴暗的沽名。我大胆的猜测一下,说这些回复的人,基本上不看科幻小说的吧,特别是不看中国的科幻小说吧。再武断一下,这些朋友肯定不看《三体》。
2020-09-10 10:19
0
回复
举报
强调一下,木兰语言的语法并不是中文的。请分清标识符和关键字。
2020-09-10 11:31
0
回复
举报
当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子
2020-09-10 09:44
1
回复
举报
有多少语言“像” C 该知道吧?
2020-09-10 09:48
0
回复
举报
搞不懂,实在看不出有什么意义。
2020-09-10 09:22
5
回复
举报
看不出不是你的错,但明显连项目说明都没看(里面目标和意义写的清清楚楚)就出来说这么一句是纯粹来秀的么?
2020-09-10 09:53
0
回复
举报
浪费时间....做个编程语言有啥用...完全理解不了
2020-09-10 08:57
0
回复
举报
“做个编程语言有啥用”——请先和隔三差五就出个新编程语言的国外巨头公司抗议去。
2020-09-10 09:54
1
回复
举报
果然发现一处疏漏。木兰原始效果如下:

> print(["a", "b"])
[a, b]
看出端倪吗?同样例程 Python 效果如下,输出带引号:

>>> print(["a", "b"])
['a', 'b']

这个有这么重要吗!而且字符串本来不就是要带引号的吗,我类对象转换的时候再一个一个加上去?
2020-09-10 08:53
0
回复
举报
是print的输出
2020-09-10 08:57
0
回复
举报
你的初衷是什么?仅仅只是做一个克隆版的木兰编程语言吗?为什么重现?重现完了你要做什么
2020-09-10 08:27
8
回复
举报
了解它的功能,学习它的实现方式,尝试理解它的设计意图和思路。
完了做什么?千种可能,现在想这个太远。
2020-09-10 08:56
0
回复
举报
我说如果你要做中文编程的话,建议把关键字也弄成中文的。可以做一点自己的创新,完善这个语言
2020-09-10 10:43
0
回复
举报
代码就在那里,有兴趣的自然可以 fork 后修改。做过中文化的该轻车熟路。
说过很多次了,重现木兰原始功能是本项目主旨,而木兰并不是中文语法。
2020-09-10 14:50
0
回复
举报
如果不删评论,我相信还是有初衷的,这个所有不合心意的评论全删,让人感觉就只是想蹭之前木兰语言的热度而已.
PS: 我想知道我这个评论能存在多久
2020-09-10 09:02
2
回复
举报
不用 PS 了,我会一直留着。
就为了清楚告诉你和某些账号,今后没营养的喷子评论我照样会毫不犹豫的删掉。
就像沾到鞋上的口香糖一样。
你倒是喷了爽了,我可不会由着你的口水继续污染社区氛围、浪费公众眼球!
2020-09-10 09:07
1
回复
举报
喷子? 如果你管发表不同意见叫喷子,那喷子就多的去了,开源不就是为了发能吸收各方意见来完美项目吗?然而你这做法完全相反,只要是有点不合心意就全删,只保留正面留言,怕被人说做什么开源
2020-09-10 09:13
5
回复
举报
除了“蹭热度”外还有什么高见?
2020-09-10 09:22
0
回复
举报
不才,没高见,我对国产还是很支持的,只是对删除不同意见的作法不能苟同,除了喷而喷的人,我相信大部分人应该是感觉有兴趣才点进这个页面的
2020-09-10 09:27
0
回复
举报
你发标的意见哪句话值得借鉴?哪句话值得吸收?不就是个盆子,还大谈开源精神,搞笑。
2020-09-10 16:28
3
回复
举报
看到了有3位贡献者🙈,加油!
2020-09-10 08:16
1
回复
举报
多谢,不过三个都是我。从 github 搬家到码云的。
2020-09-10 08:54
1
回复
举报
更多评论
26 评论
0 收藏
分享
返回顶部
顶部