【问题标题】:What Lisp is better at parsing?Lisp 更擅长解析什么?
【发布时间】:2010-11-22 01:38:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: parsing lisp scheme common-lisp language-implementation


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      有一些关于这方面的书:

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

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

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

      【讨论】:

      • 我已经阅读了 PAIP 和 SICP 关于在 lisp 中编写 lisp 解释器的章节,我认为前者更适合 Common Lisp 新手,尽管强烈推荐两者。
      • 值得一提的是,PAIP 的 Scheme 解释器和编译器都是用 Common Lisp 编写的,这回答了问题的另一个方面。
      • 有没有其他人看到这里的讽刺意味,还是只有我? =)
      猜你喜欢
      • 2010-12-25
      • 2012-02-02
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2012-06-09
      • 2010-10-02
      • 2012-11-09
      • 2011-03-26
      相关资源
      最近更新 更多