归零归零归ww
26-07-08 10:02

继续谈谈灵机解释器。灵机现在可以解释Scheme和JavaScript两门语言,所以就不叫“Scheme”解释器了,况且我本来也没想遵守RnRS,梦到啥就做啥。

Lua是我的重要参考,灵机的定位跟Lua也是类似的——自持、轻量、无依赖、嵌入式的脚本语言,给宿主世界打开一个完备的门户。我并不喜欢Lua的表世界,或者说我不喜欢没有括号的语言,但我很喜欢Lua的里世界。Lua是学术界搞出来的,品位很高,自我定位非常明确。

我并不懂Lua,也没怎么用过。前几年阿B整了个大活,就是Lua层的某个数学API搞出来的。具体来说,跟弱类型的内部数据类型转换规则有关。但这归根结底还是那句话,eval is evil,Lua这样的嵌入式解释器,给应用系统提供了一个危险的eval,而eval内部可以套娃eval,无限放大了系统的风险敞口。虽然危险,但是很酷,所以我也给灵机增加了eval、多任务、宏等危险特性。

Scheme标准(RnRS)描述了严谨的数值类型塔。这部分极其微妙,也是JS被吐槽最多的方面。数值类型的隐式转换非常复杂,所以我暂时没有处理这个问题。

我做灵机解释器的一个最终目标就是在ESP32上实现可编程的图形计算器。做计算器可以说是我入门单片机十多年来不变的一条主线了。从简单的状态机,到手搓中缀表达式解析,到如今的图灵完全解释器,始终围绕着这条主线。我是个有兴趣但没什么天赋的人,做到现在这个样子我已经很满意了。况且AI这么好用,我自己只要做梦就好了,梦里有的AI都能帮我整出来。

发布于 江苏