木兰诗 / 木兰辞
南北朝:佚名
唧唧复唧唧,木兰当户织。不闻机杼声,唯闻女叹息。
问女何所思,问女何所忆。女亦无所思,女亦无所忆。昨夜见军帖,可汗大点兵,军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄,愿为市鞍马,从此替爷征。
东市买骏马,西市买鞍鞯,南市买辔头,北市买长鞭。旦辞爷娘去,暮宿黄河边,不闻爷娘唤女声,但闻黄河流水鸣溅溅。旦辞黄河去,暮至黑山头,不闻爷娘唤女声,但闻燕山胡骑鸣啾啾。
万里赴戎机,关山度若飞。朔气传金柝,寒光照铁衣。将军百战死,壮士十年归。
归来见天子,天子坐明堂。策勋十二转,赏赐百千强。可汗问所欲,木兰不用尚书郎,愿驰千里足,送儿还故乡。
爷娘闻女来,出郭相扶将;阿姊闻妹来,当户理红妆;小弟闻姊来,磨刀霍霍向猪羊。开我东阁门,坐我西阁床。脱我战时袍,著我旧时裳。当窗理云鬓,对镜帖花黄。出门看火伴,火伴皆惊忙:同行十二年,不知木兰是女郎。
雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雄雌?
本人特此声明:
任何人,可以借助于任何现有开源技术,包括 Python 编译器本身。只要实现一个解释器或编译器,能够完成 ulang-0.2.2.exe 的功能,与它的编程语言语法和结果一致(1 月 26 日补:项目目标),并且将代码公开开源,以证明实现的原创性,本人将以个人名义奖励一万元。奖金将随时间推移逐渐改变(当前收支见此)。
当然可以组队攻关(只要有明确的贡献,将会提高奖金总额,以便分配),也可以基于之前的逆向工程。
当然也可以与我一同努力(演示版已经发布:木兰编程语言,向您拜年!),奖金同上处理。
毕竟,现在有了设计者的思路(鸣谢《刘雷关于“木兰”编程语言的情况说明》)以及之后中科院的专家分析(见处理报告),以及对逆向工程的分析,技术路线已非常明晰(吧?)。
以至于,听说这几乎是计算机本科生就能完成的类似于专业课作业的难度(吗?)。
那么,请各位千万不要让我这个半路出家、业余摸索的外行人占了先!
来吧,让我看看后浪们的实力!
请广为告之!
附上:知乎链接
将会至少每周更新!
-
25日,搜集相关原始资料,为分析和加工打下基础,也为来者提供资料参考。在此基础上开始复现文档。
号外!悬赏发布短短数小时之后,就有首位响应者提交了实现代码。让我们一同研究一下。
开始编写「木兰」语言设计文档。
-
26 日,祝贺!第一笔款项已支付!
正式提出项目目标。
-
27 日,感激!刚收到第一笔赞助!
-
28 日,已向第一位参与者付酬金累计 ¥954.88。
创建细分悬赏任务:
-
29 日,学习rply用法并通过分析逆向工程获取while和loop的语法并通过测试代码。
用脚本自动运行循环语法的测试,暂时依赖打印输出。exe启动时间较长,大约2秒一个测试,需改进。将在摸索各语法规则时添加对应测试代码。
-
30 日,继续分析语法,if/导入模块等等。开始编写用户手册。
-
31 日,继续基于逆向工程中的 ply 代码,确认语法和功能。编写用户手册第二章——控制走向
- 1 日,尝试了基于「木兰」定制新语法,比较简单。
- 3 日,木兰编程语言知乎专栏创建,收录了之前的文章,欢迎指教。
- 7 日,编写用户手册第三章——函数和类型,类型部分还有不少没有摸索出来。
- 14 日, 摸索导入Python 模块功能,有些疑问,需要对 Python 模块导入机制作深入研究。
- 19 日,初步构建可执行文件, 但测试未完全通过, 待深究.
- 22 日,编写用户手册第四章——模块。
- 5 日,项目首月小结
- 8 日,编写用户手册第五章——数据结构
- 18 日,通过修改逆向工程中的bug,生成了exe能够通过所有当前测试用例。
- 22 日,木兰编译器技术验证——用 cmd 模块实现最简单交互控制台
- 24 日,木兰编译器技术验证——交互控制台集成 rply 语法分析器
- 25 日,木兰编译器技术验证——通过 AST 转换和 eval 实现语法定制
- 10 日 木兰逆向工程中的 bug(三)——交互控制台,以及下一步
- 12 日,木兰编译器技术验证——源文件解析与 exec
- 15 日,暂时不实现 REPL 部分,开始搭建原型加法部分
- 16 日,延伸调研 RPly 和 PyPy,作了简单性能对比试验
- 19 日,原型搭建——调用 print
- 21 日,原型搭建——整数的減、乘、除,其中除较特别
- 24 日,原型搭建——行号,多行支持
- 1 日,为方便调试改进语法树格式化输出
- 2 日,原型搭建——行列号,语法树比照
- 四日,原型搭建——赋值语句
- 11 日,原型搭建——“块”结构({})支持
- 16 日,原型搭建——条件语句(if...elif...else)
- 19 日,原型搭建——大小比较、while循环,不允许无效果表达式
- 23 日 木兰编程语言体验版更新,附带 VS Code 支持插件,通过更多测试。短期内,将基于体验版编写一些例程,过程中改进周边设施,包括对反馈信息进行中文化。此过程中原型项目将以技术验证(包括体验版中的 bug 重现和修复)为主要目的。
- 30 日 木兰编程语言体验版更新:中文交互环境、调用 Python 库. 原型项目推进到引用本地 python.
- 3 日, 原型项目: 开始类型定义部分.
- 13 日,原型项目搬家到OSChina,并发布阶段小结。下面除了继续完善语言功能,打算向编辑器方向摸索。
- 19 日,原型进展:支持列表操作,演示编辑器高亮
- 26 日,儿歌查询实例,引用模块、字符串列表操作
- 6 日,范围语法“下限..上限 by 间隔”,重构
- 10 日,无参数函数、字典基本功能,语法设计的取舍有感
- 16 日,匿名函数,lambda表达式初步
- 24 日,完善函数功能,常用字拆分数据处理实例
- 7 日,通过玩三岁游戏完善语言功能
- 8 日,小结了木兰编程语言待重现语法和功能,在此 issue 持续更新。
- 18 日,引用本地木兰模块;模拟凑十法加法
- 28 日,支持乘法省略乘号(2长+3宽)等等
- 3 日,优先级实现细节阶段小结与问题
- 7 日,阶段小结,重申悬赏
- 9 日,整理测试用例,回归测试
- 11 日,木兰 vs. Python 之语法对用户体验的影响(一)
- 14 日,交互环境复现,新添新手入门
- 21 日,150 行木兰代码为木兰自身实现高亮效果
- 25 日,$ 的妙用,更多编辑器高亮
- 1 日,更多 $ 的妙用,self 的拓展语义
- 6 日,木兰代码格式化之自动调整缩进的 150 倍性能优化
- 8 日,与 Python 生态的兼容问题;字符串插值
- 11 日,重温初见木兰的那个战场——二零二零年一月「木兰」编程语言风暴亲历记
- 14 日,PyPI 发布 ulang 0.0.14.1
- 17 日,0.0.14.3:井字棋演示,tuple、枚举等
- 21 日,0.0.14.4:中文报错信息规整,枚举引用新发现
- 25 日,0.0.14.6:网络服务演示;with...as 的替代语法
- 1 日,0.0.14.7:功能覆盖初版用户手册;Gitee Go 流水线尝鲜
- 6 日,0.0.14.8:websocket 聊天演示;部分比较 Python 语法
- 18 日,0.0.15.0:基于网络的运行环境;词法错误处理
- 25 日,为木兰开发环境雏形添加输入补全,功能测试大提速
- 30 日,为简化正则表达式读写,构思相关 API
- 4 日,用木兰编程语言编写文字冒险游戏(前八章)
- 6 日,小结正则表达式 API,寻觅合作者
- 12 日,文字冒险游戏九到十一章
- 14 日,0.0.15.1:继续改写 Python 冒险游戏;引用包路径规则小结
- 23 日,木兰语言的引用相关功能与问题新发现
- 28 日,对 PyPI 发布版和 PyInstaller 生成版在 Python 路径方面的差异分析
- 4 日,继续改写 Python 文字冒险游戏(十三、四章),又一个特性发现
- 17 日,重现木兰编程语言的基本 try……catch 语法
- 21 日,木兰编程语言一岁了!
- 9 日,木兰语言多次引用模块的行为小结
- 19 日,木兰编程语言报错信息分类与可用性简析
- 24 日,从木兰的 1[0] = [0] 有感编程语言语法设计的舍与得
- 2 日,木兰语言 0.0.17:着手由 Python 语法树生成木兰源码
- 20 日,0.0.17.1:源码生成支持更多函数、类相关语法
- 30 日,0.0.17.2:实现简易网页浏览器,又一次碰到语法歧义
- 5 日,木兰 0.0.17.3 支持不需 __init__的 super 调用
- 13 日,木兰语言 0.0.17.4 发现依赖库风险、不支持 in;发布 Gitee Reward 首批悬赏任务
- 17 日,木兰语言 0.0.18 补完所有内置函数,悬赏任务合作顺利
- 27 日,木兰语言 0.0.19 补完二元运算;重现 yield 语法;赋值时可指定变量类型
- 用 rply-ulang 实现“求8的oct值”语法
- 九月 解析中文编程语法诸如“删除钟表表”的一次粗糙尝试(上)
- 解析中文编程语法诸如“删除钟表表”的一次粗糙尝试(下)
- 用rply按语法分词实现中文无空格语法设计(一)
- 用 RPly 按语法分词实现中文编程无空格语法设计(二)——生成对应SQL演示
- 从“零”开始设计中文编程语言——SQL领域演示
- 17日 木兰编程语言两岁了
- 18 日, 木兰语言 0.1.0 展示今年悬赏任务成果
- 5 日, 木兰语言 0.1.3 复现大多数命令行选项
- 25 日,木兰编程语言工具设计与实现中的巧思
- 11 日,北京时间二月十一日一点 知乎 live 讲座《木兰编程语言重现项目三年小结》。自行整理后发布到 哔哩哔哩、知乎视频。