ESC
输入关键词搜索文章
目录

Build Your Own Lisp

用 C 语言构建你自己的 Lisp 解释器
从零开始,学习 C 语言的同时编写一个完整的编程语言
Introduction · 关于本书
为什么读这本书

在本书中,你将在学习 C 语言的同时学会编写你自己的编程语言——一个 1000 行左右代码的简单 Lisp。这不仅仅是一本关于 C 语言的教程,也不仅仅是一本关于编程语言理论的书。它是一本通过实践来学习的指南,让你在构建真实项目的过程中掌握底层编程的精髓。

很多人非常想学习 C 语言,但却无从下手。现在大可不必担心了。如果你能坚持看完本书,我敢保证,至少你将拥有一个非常酷的新语言可以把玩,说不定还能成为一个熟练的 C 程序员呢!

项目信息

原作者:Daniel Holden (contact@theorangeduck.com)

原书地址buildyourownlisp.com

中文翻译KSCO (GitHub)

共享协议:CC BY-NC-SA 3.0

🗺️ 学习路径
路径一:C 语言基础

如果你是 C 语言新手,建议从第 1-5 章开始,打好基础后再进入实际的解释器编写。这些章节涵盖了变量、函数、指针、内存管理等核心概念。

路径二:直接上手

如果你已有 C 语言基础,可以直接从第 6 章开始,进入语法解析器的编写。从这里开始,你将真正开始构建自己的 Lisp。

🔑 核心概念
抽象语法树 (AST)

解析器将用户输入转化为树形结构,每个节点代表一个语法元素。这是理解解释器工作原理的关键。

递归求值

Lisp 的求值过程天然适合递归:对表达式递归求值,直到遇到基本类型(数字、符号)。

S-表达式

Lisp 的核心数据结构,用括号表示的嵌套列表。程序和数据在 S-表达式中是统一的。

环境与作用域

变量绑定存储在环境中,支持词法作用域和闭包。这是实现函数式编程的基础。

📖 相关资源
资源类型说明
原书网站在线书籍英文原版,包含交互式代码编辑器
中文翻译GitHubKSCO 的中文翻译版本
原书源码GitHub作者的完整实现
mpc 库GitHub本书使用的解析器组合子库