20

我想在 Lisp 方言中实现一个 Lisp 解释器,主要是作为一个学习练习。我被甩掉的一件事就是这个领域有多少选择。首先,我对了解一些已经存在了一段时间的 Lisp(如 Scheme 或 Common Lisp)更感兴趣。我不想使用 Clojure 来执行此操作,因为我已经使用过它。:-)

那么其中一种口味在解析方面是否比其他口味更好?你认为在 Common Lisp 中实现 Scheme 是个好主意吗(反之亦然)?或者两者之间会有足够的差异让我失望吗?

如果它有什么不同,我想要一些跨平台的东西。我有一台 Windows PC、一台 Mac 和一个 Linux 机器,我最终可以在其中任何一个上写这个。

4

2 回答 2

21

有一些关于这方面的书:

强烈推荐以上所有书籍,尽管 Anatomy of Lisp 已经过时、难以获得且难以阅读。

Scheme 和 Common Lisp 都适合您的任务。

实现 Common Lisp 是一项更大的任务,因为语言更大。通常在 Common Lisp 中实现 Common Lisp 会更好,因为有一些 Common Lisp 库可用于新的 Common Lisp 实现。;-)

于 2009-08-23T14:51:22.457 回答
4

PLT Scheme是试验编程语言的绝佳平台,尤其是 Lispy 语言。PLT 有一个可扩展的解析器(在 Scheme 中通常称为阅读器),它提供阅读器宏来操作内置语法;或者你可以用你自己的完全替换阅读器。如果您更愿意使用传统的 lex/yacc 风格的解析器和词法分析器,PLT 附带了一个解析器工具模块,它也提供了这些。作为奖励,它具有全面的文档和第三方软件包的存储库(许多方案中缺少的两件事)。

Arc 的参考实现 (arclanguage.org) 是一个相当简单易读的示例,用于构建可编译为 Scheme 的语言。它主要使用 PLT 的阅读器,并带有几个阅读器宏来更改与 Arc 不同的 Scheme 语法位。如果您想了解如何实现非 Lisp 语言,还可以从 PLT 的包存储库 (planet.plt-scheme.org) 获得 JavaScript 实现。

于 2009-11-11T20:37:12.357 回答