heist:Rubyで実装されたScheme処理系
あまり時間が無くて[Nendo]の開発が滞っているが、[Nendo]の他にもRubyでLisp処理系を実装している人がそれなりに居る様なので、順番に見て行きたいと思う。 手始めとしてheistを調べ始めた。 作者のブログによると、開発動機は実用目的ではなく勉強目的の様だ。 SICPを読んでいるうちに一度実装してみたくなったという感じだろう。 作者のブログには自虐ネタ的なブログエントリもあったり。 April fool: area man releases world’s slowest Scheme interpreter : The If Works
勉強の割には、参考にできそうな所がいくもありそう。 ソースが公開されているので、簡潔に実装する方法については参考になるだろう。(まだ細かくはソースを読んでいないが…) まず、heistはTreetopというPEGパーサージェネレータを利用していてパーサーが短く書かれている様だ。 参考: InfoQ: Treetop-Ruby用のPEGパーサージェネレータ これは[Nendo]にも取り入れたい。[Nendo]はlexerとパーサーをベタで書いているので結構行数を食っているのだ。
他のプロジェクトの良い所を色々盗もう。 ちなみに、heistという名前はあまり良い名前じゃないなあ。辞書を引いて見たら『強盗』という意味だったんだけど。どういうつもりだろう。