スクリプト言語作成について

WizardBibleid:KenjiAikoさんが、『スクリプト言語を作ってみよう』という記事を書かれています。
私もポエニーを始める半年ほど前にスクリプト言語にチャレンジしていました。
コンパイラの場合は、マシンコードを作ったり、OSの実行形式を作ったり、それとリンクしたりと、土台的な部分を作るのが大変ですが、スクリプト言語の場合は、一般的なアルゴリズム(ハッシュテーブルだとか、バランスツリーだとか、再起関数だとか、バリアント型だとか)を理解しているなら、FlexBisonを使えば、そこそこ簡単に作れます。(程度を求めなければ)
スクリプト言語作成というと、大げさにきこえるのと、いまさら新しい言語なんて作っても…と思うかもしれないですが、スクリプト言語作成というのは内容が広いので、さまざまなアルゴリズムの復習になるのと、アプリケーションの設定ファイルや、XMLや他の言語を本質から考えられるようになるので、たとえRubyPerlを超えるスクリプト言語を作る!!という気がなくても、やっておくことはオススメです。

で、気になったのは、記事の序文で資料がないと嘆いているところで、私もこのあたりは初め苦労したのですが、いくつかはわりいい資料にめぐり合えました。WizardBibleをみるかぎり、ケンジさんが求めていたのは、字句解析や構文解析自体とも伺えるので、その部分からやりたい人には向かないかもしれないですが、一般的にスクリプト言語作成!といえば、flex(lex)とbison(yacc)が定石なので紹介。

まず、千葉滋氏のLecture Notes
一番下の『資料』の『コンパイラ作成他』にCでの簡単なCコンパイラ作成について書かれています。タイトルはコンパイラですが、前段階としてLispインタプリタを作成していて、そこまでの説明がかなり分かりやすく、lexやyaccが初めてでも十分読めます。また、『スレッド・ライブラリ』では、ユーザレベルスレッドについて書かれています。スクリプト言語とは関係ないといえばないですが、Rubyのように言語自体にユーザレベルスレッドを組み込むなら、かなり参考になります。私が、ITRONでお飯を食べれるのも、ここでスレッドについて学んだからといっても過言ではない!です。 ここの講義内容は、システムプログラマなら全部理解しておきたい内容なので、みんなにオススメ。
それと、Rubyソースコード完全解説。これをみてどうこうできるというわけではないですが、有名なRubyはどんなふうに実装されているのか(雰囲気だけでも)知っておくのはよいことだと思います。
他に、C++Lispインタプリタを作る記事を読んだのですが、URLが分からなくなりました。残念。たしかGCの実装まで作っていたので、よかったんですけど。

  • 追記

C++Lispインタプリタを作る記事』について、sumaさんに教えていただきました。
http://www.jah.ne.jp/~naoyuki/Writings/Writings.html
Schemeを作ろう 第1回
Schemeでした。
実は、作った後に読んだので、あまりまじめに読んだとはいえないのですが、第一回のオブジェクト(バリアント型)の話は、オブジェクト指向言語で作る際に役立つと思われるのでオススメです。