発端
RubyKaigi行ってきました。情熱プログラマChad=Fowlerの講演がとても心に残っています。その講演の中でいろいろな言語を実装した話をしていまして、Ook! - Wikipediaという言語が出てきました。
どうやらこれBrainf*ckと等価らしいです。いつかBrainf*ckは自力で実装してみたいと思っていたので実装してみました。
参考
- JavascriptでBrainfuckのインタプリタを実装してみた。 | tech.kayac.com - KAYAC engineers' blog
- かなり参考にさせていただきました。
- BrainFuck ダイナマイツ
- Webからデバッグもできる実装。内部の動きの理解ができました。
- SICP Lite | Google グループ
- Brainf*ckの8つの命令語の説明。なるほどポインタを扱う言語なんですね。
コード
まとめ
言語の実装楽しいですね。動いただけでかなり感動してしまいました。いまのところException投げる処理とかが全然書かれてないのでここは後々修正します。それにしてもBrainf*ckはソースコード書く方が大変ですねぇ。
そうそう余談になりますが、SICP Lite | Google グループがついに4章に入ります。Schemeの処理系を実装したい人は是非参加してください!