Parsing 什么Lisp更擅长解析?

Parsing 什么Lisp更擅长解析?,parsing,lisp,scheme,common-lisp,language-implementation,Parsing,Lisp,Scheme,Common Lisp,Language Implementation,我想用Lisp方言实现一个Lisp解释器,主要是作为一个学习练习。有一件事让我感到不安,那就是这个领域有多少选择。首先,我更感兴趣的是学习一些已经存在了一段时间的Lisp(比如Scheme或Common Lisp)。我不想用Clojure来做这件事,因为我已经用过它了。:-) 那么,在解析方面,其中一种口味比其他口味好吗?您认为在CommonLisp中实现Scheme是个好主意吗(反之亦然)?或者两者之间会有足够的差异让我失望 如果有什么不同的话,我想要一些跨平台的。我有一台Windows PC

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

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


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

有一些关于这方面的书:

  • ,第五章
  • ,整本书解释了如何实现Lisp
  • ,关于实现Lisp的老经典
以上所有的书都是极力推荐的,尽管Lisp的解剖学很古老,很难获得,也很难阅读

Scheme和CommonLisp都适合您的任务

实现公共Lisp是一项更大的任务,因为该语言更大。通常,在Common Lisp中可以更好地实现Common Lisp,因为有一些Common Lisp库可用于新的Common Lisp实现

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

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

我已经阅读了PAIP和SICP关于用Lisp编写Lisp解释器的章节,我认为前者更适合普通Lisp新手,尽管这两种语言都是极力推荐的。值得一提的是,PAIP的Scheme解释器和编译器都是用Common Lisp编写的,这回答了问题的另一个方面。是否有其他人看到了这里的讽刺之处,还是只有我一个人?=)