2009-08-23 9 views
20

私はLispのインタプリタをLispの方言で、主に学習の練習として実装したいと思っています。私が捨ててしまうのは、このエリアにいくつの選択肢があるかだけです。主に、私はSchemeやCommon Lispのように、しばらくしているLispsのいくつかについて学ぶことに少し興味があります。私はClojureを使用して、私が既にそれを使っているという真実の事実に対してこれをしたくない。 :-)どのようなLispが解析するのが良いですか?

したがって、解析時の味の方が優れていますか? Common LispでSchemeを実装するといいでしょうか(あるいはその逆)?それとも、二人の間に十分な違いがあり、私を捨てるのだろうか?

もしそれが何か変わるならば、私はそれがクロスプラットフォームのものを望んでいます。私はWindows PC、Mac、Linuxボックスを持っていますが、いずれにしてもこれを書くことができます。

答えて

20

そのことについていくつかの本があります。

の実装についての古い古典を実装説明します

上記の書籍のすべてが高いですLispのAnatomyは古くて入手が難しく、読みにくいですが、お勧めします。

あなたの仕事にはSchemeとCommon Lispの両方がうまくいきます。

Common Lispの実装は、言語が大きいのでより大きな作業です。通常、新しいLisp実装に使用できるCommon Lispライブラリがあるので、Common LispでCommon Lispをよりよく実装しています。 ;-)

+0

私はlispでlispインタプリタを書く際のPAIPとSICPの章を読んできましたが、前者はCommon Lispに新しい方が良いと思いますが、両方とも強くお勧めします。 – justinhj

+3

PAIPのSchemeインタプリタとコンパイラはどちらもCommon Lispで書かれていますが、これは質問の別の側面に答えるものです。 – Pillsy

+4

他の誰かがここでアイロニーを見ていますか、それとも私ですか? =) –

4

PLT Schemeは、プログラミング言語、特にLispy言語を実験するための優れたプラットフォームです。 PLTには、組み込みの構文を操作するためのリーダマクロを提供する拡張可能なパーサー(通常はSchemeのリーダーと呼ばれます)があります。あなたは完全に自分のものと置き換えることができます。従来のlex/yaccスタイルのパーサーとレクサーを使用する場合は、PLTにもパーサーツールモジュールが付属しています。ボーナスとして、包括的なドキュメントとサードパーティ製のパッケージ(多くのスキームから欠けている2つのパッケージ)のリポジトリを持っています。

Arc(arclanguage.org)のリファレンス実装は、Schemeにコンパイルされた言語を構築するためのかなり簡単で可読性の高い例です( )。これはPLTのリーダーを主に使用し、Arcのものとは異なるScheme構文のビットを変更するためのリーダーマクロをいくつか使用しています。 Lisp以外の言語を実装する方法を見たい場合は、PLTのパッケージリポジトリ(planet.plt-scheme.org)からJavaScript実装を利用することもできます。

関連する問題