https://www.zhihu.com/question/22639407/answer/3150005844

从易于上手的角度看,做语言设计和实现更友好,而且相关技术可以用于很多大小方面。

依稀记得大约十年前看过某国外博文,说发现工作中很多任务都是在不同语言(包括数据格式等)之间转换,才发现学的编译技术如此有用。

刚在此答中:

严格依据「字源」和「造字本义」,汉字有多少个「基础部件」?5 赞同 · 5 评论回答

因为找到的字结构数据的格式是这样的:

瑕	⿰𤣩叚
瑤	⿰𤣩&JX2-7461;

为提取字型和各部分数据,开始用简单正则处理,但马上发现有这种嵌套的情况:

丽	⿱一⿰⿵冂丶⿵冂丶

于是用上锤子—— rply 定制版(支持部分无空格语法)做分析器,下面是所有语法规则:

规则

加上词法部分也不到五十行:https://gitee.com/zhishi/chinese_characters_words/blob/%E7%BB%9F%E8%AE%A1/src/chinese_characters_words/%E7%BB%93%E6%9E%84%E8%A7%A3%E6%9E%90.py

手写分析的话也许更简短,但个人感觉这样可读性挺好,也不用在递归调试上花费太多功夫。

顺便发个此项目的新悬赏任务:

DSL 添加功能:左边【某部分】,右边【某部分】 · Issue #I7P3Y8 · 吴烜/chinese_characters_words - Gitee.com

编译前端也还有很多空间,尤其与中文语法相关的。


我设计了一种语言,但是做不来编译器,怎么办?

建议先把需求说清楚。用语言实现并不一定最合适/经济。

另外,语言工具设计和实现并不需要绑定由一个人包办。随着语言工具研发的深入,这种分工是必然且自然的。

如果是中文语法尤其是无空格设计,不妨试试 rply定制版:

从“零”开始设计中文编程语言——SQL领域演示 13 赞同 · 13 评论文章

刚发的悬赏任务可以体验一下:

DSL 添加功能:左边【某部分】,右边【某部分】 · Issue #I7P3Y8 · 吴烜/chinese_characters_words - Gitee.com ​gitee.com/zhishi/chinese_characters_words/issues/I7P3Y8