言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

自己記述 lisp コンパイラ tamacola の完成

記録を続けます。今週いよいよ Flash 向け自己記述 lisp コンパイラが完成しました。自己記述コンパイラというのは、自分自身の言語で書かれたコンパイラという事で、私のやつは次のように構築しました。

自己記述言語を作る理由は色々あると思うけど、何よりプログラミング言語ファンなら一度は作ってみたいと思う一つの目標地点であります。まるで富士山に登った時のような達成感があります。とても勉強になるのでみんなもやってみると良いと思います。自己記述言語と一言で言っても、難易度に色々あると思うけど、参考までに私がこれを作ると決めた理由をあげます。

  • コンパイラインタプリタか -> コンパイラに決定
  • ガベコレを作るかどうか -> 作らない。
    • 正直低レベルの話は苦手なので。
  • ネイティブコードか VM か -> VM
  • VM を自作するか -> しない。
    • 面倒くさいので。しかし、出来合いの VM (Tamarin) が ActionScript 前提に作られていて結構苦労した。
  • アセンブラを自作するか -> 自作した。
    • 面倒だったが、Tamarin についてくる奴がバギー過ぎて使い物にならなかったので自作しました。
  • 言語の選択 -> Scheme もどき。
    • ドキュメントが沢山あって楽。

こうして見ると、自作言語を作る人用のキットみたいな物があったらいいのになーと思いました。特に、Tamarin は末尾再帰の最適化や継続が作れなくて面白いテーマに挑戦出来ないので、もっと最近の言語に対応した VM で、外から使えるアセンブラがあって、ガベコレなんかも好きな人はカスタマイズ出来るような奴があれば良いなと思います。