百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

minilisp

> 编程语言
开源

一个可读的 Lisp,少于 1k 行 C 代码

1.6K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一个可读的 Lisp,少于 1k 行 C 代码

MiniLisp

有一天,我想看看我能用 1k 行 C 语言做什么。 决定编写一个 Lisp 解释器。事实证明,这 这是一个有趣的周末项目,结果是一个迷你 Lisp 实现 支持

  • 整数、符号、cons 单元
  • 全局变量,
  • 词法作用域的局部变量,
  • 闭包,
  • if 条件语句,
  • 原始函数,例如 +、=、< 或 list
  • 用户定义的函数,
  • 一个宏系统,
  • 以及一个拷贝垃圾回收器。 所有这些都是 C 语言的 1000 行代码,我没有为了规模而牺牲可读性。 在我看来,代码有大量注释,以帮助读者理解 所有这些功能如何工作。 编译

$ make

MiniLisp 已经在 Linux x86/x86-64 和 64 位 Mac OS 上进行了测试。代码不太依赖于架构,因此您应该能够在其他类似 Unix 的操作系统上编译和运行。

MiniLisp 支持整数字面量、(), t, 符号和列表字面量。

  • 整数字面量是正整数或负整数。 * () 是唯一的假值。 它还表示空列表。 * t 是一个预定义的变量,其值为自身。 这是表示真值的首选方式,而任何非 () 值都被认为是真值。 * 符号是具有唯一名称的对象。 它们用于表示标识符。 由于 MiniLisp 没有字符串类型,有时也用作字符串的替代。 * 列表字面量是 cons 单元。 它是一个普通列表,其最后一个元素的 cdr 为 (),或者是以任何非 () 值结尾的斜线列表。 斜线列表写成为 (a . b)。

cons 传入两个参数, 并返回一个新的 cons 单元, 使第一个参数成为 car, 第二个参数成为 cdr。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言