7 个版本

0.3.5 2022年6月3日
0.3.4 2022年6月2日
0.3.1 2022年5月29日
0.0.1 2022年5月7日

#538编程语言

每月26次下载

MIT 许可证

1.5MB
1.5K SLoC

包含 (WOFF 字体, 99KB) fontawesome-webfont.woff, (WOFF 字体, 78KB) fontawesome-webfont.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-300.woff2, (WOFF 字体, 41KB) open-sans-v17-all-charsets-300italic.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-600.woff2, (WOFF 字体, 43KB) open-sans-v17-all-charsets-600italic.woff27 项更多.

lisp-rs

lisp-rs 是一个简单的 Lisp 解释器/库。解释器/库最初是作为一个 教学工具 开发的,用于解释 Lisp 解释器是如何工作的,以及如何使用 Rust 编程语言来实现它们。然而,解释器似乎已经获得了生命,并已使用 WASM 转移到 网页。解释器作为 crate 提供,可用于在 Rust 项目中嵌入 Lisp 解释器。WASM 实现使用 lisp-rs 作为库来实现在线解释器。

方言

解释器基于修改后的 Scheme 子集。以下是解释器支持的特性

  • 变量和常量
  • 函数(lambda)
  • 功能构造,如 map、filter 和 reduce
  • 闭包
  • 尾调用优化

有关方言的更多信息,请参阅

实现

解释器已分三个阶段实现

  • 第一阶段:完整的解释器和 REPL 实现以及支持基本数据类型(整数和布尔值)、变量、lambda 和 lambda 调用(分支 0.0.1)
  • 第二阶段:支持高级数据类型(字符串、浮点数和列表)和功能构造(分支 0.0.2)
  • 第三阶段:支持尾调用优化(分支 0.0.3)和闭包(分支 0.0.4)

有关第一阶段实现的详细代码分析,请参阅 文档。有关所有阶段的代码分析,请获取 电子书

asciicast

REPL

cargo run --features="build-binary"

测试

cargo test

WASM

解释器还编译成了WASM,以便在浏览器中运行,并托管在此处:链接.

依赖项