1 个不稳定版本
0.0.1 | 2019 年 9 月 11 日 |
---|
#62 在 #subset
52KB
1.5K SLoC
一个小型 Scheme 子集的实现
这是一个 R7RS-small(目前非常小)子集的实现。请参阅 示例目录 和 烟雾测试,以了解已实现的功能。
当前架构是一个相当基本的解释器,具有前置的语法分析阶段,将原始 S-表达式转换为 AST,然后进行评估。这段代码起源于作为使用 lexpr
包的示例而编写的代码,以实现一个简单的 S-表达式计算器,然后变得有些失控 😀。
当前的架构不足以支持 Scheme 的几个主要语言特性,例如宏或延续。计划逐步改进实现,以使这些特性成为可能,然后再基于当前架构投资于其他特性。
poco-scheme 的演变可能将主要受 chibi-scheme 代码库的指导。chibi-scheme 是 R7RS-small 的完整实现,用 C 编写,采用字节码 VM,并使用语法闭包作为基本宏机制。
已存在的特性
- 正确的尾调用。
- 使用
gc
包进行垃圾回收。 define
、lambda
、if
。- 整数,以及一些操作数字的进程。
- 一个非常原始的
display
和newline
版本,两者都没有端口参数。
下一步
- 基本的 cons 单元支持。
- 在
lexpr
中实现更多语法。- 引用语法简写(即
'
)。
- 引用语法简写(即
- 将 AST 转换为某种字节码。
依赖关系
~665KB
~13K SLoC