1 个不稳定版本

0.0.1 2019 年 9 月 11 日

#62#subset

BSD-3-Clause 许可协议

52KB
1.5K SLoC

一个小型 Scheme 子集的实现

这是一个 R7RS-small(目前非常小)子集的实现。请参阅 示例目录烟雾测试,以了解已实现的功能。

当前架构是一个相当基本的解释器,具有前置的语法分析阶段,将原始 S-表达式转换为 AST,然后进行评估。这段代码起源于作为使用 lexpr 包的示例而编写的代码,以实现一个简单的 S-表达式计算器,然后变得有些失控 😀。

当前的架构不足以支持 Scheme 的几个主要语言特性,例如宏或延续。计划逐步改进实现,以使这些特性成为可能,然后再基于当前架构投资于其他特性。

poco-scheme 的演变可能将主要受 chibi-scheme 代码库的指导。chibi-scheme 是 R7RS-small 的完整实现,用 C 编写,采用字节码 VM,并使用语法闭包作为基本宏机制。

已存在的特性

  • 正确的尾调用。
  • 使用 gc 包进行垃圾回收。
  • definelambdaif
  • 整数,以及一些操作数字的进程。
  • 一个非常原始的 displaynewline 版本,两者都没有端口参数。

下一步

  • 基本的 cons 单元支持。
  • lexpr 中实现更多语法。
    • 引用语法简写(即 ')。
  • 将 AST 转换为某种字节码。

依赖关系

~665KB
~13K SLoC