口吃 - Lisp,从头开始,在 C 中
stutter是一个用 C 语言编写的教育性 Lisp 解释器实现,完全从头开始编写,不使用任何库(显着的例外是editline以保持我的理智)。
换句话说, stutter是一系列广泛的 CS 主题的实践练习,包括
形式语言(词法分析、语法分析、抽象语法树)
元语言评估(eval/apply,宏)
数据结构(列表、树、地图、数组)
自动内存管理(标记和清除垃圾收集)
所有这些都是用最简单、最朴实(和无情)的语言之一实现的:C99。
stutter是一项正在进行的工作(并且在可预见的未来将会如此)。 查看以了解该语言已经具备的功能。
规则
显然,在现代,编写 Lisp 解释器不像以前那样具有挑战性,因为有很多库可以帮助我们实现这一目标。 因此,有两个规则:
从头开始写一切。
不要质疑规则。
入门
克隆 repo 及其子模块(子模块
1