これは何?
Brainf*ck言語のソースコードを解析してプログラム構造をツリー形式で表示します。
Rubyで書いたパーサによる解析結果をYahoo! UIのTreeViewを使って表示しています。
なんの役に立つの?
たぶん、私のように構文木フェチの人以外には役に立たないと思います。
言語仕様的にどうしても可読性が悪くなってしまうBrainf*ckのソースの見通しが良くなるかなあ、と思って作ってみたもののそれほどでもなかったです。
作った動機
最近、構文木のことばかり考えています。
構文木のことを思うとなんだか幸せな気分になります(嘘)。
前回ルビーの木を作りましたが、これは肝心のパーサ部分にライブラリを使ったために、作るのは楽チンだったものの、私の構文木欲は十分満たされるものではありませんでした。
そんなわけでパーサから自作することにしました。対象言語はとりあえずシンプルな方が良いのでBrainf*ckです。 これならC++でインタプリタを書いたこともあるので、Web用にRubyで書き直すだけです。
Brainf*ckは超シンプルな言語仕様であるのと、処理系のサイズを競ったりするので、普通は構文木は生成しないで実装します。そんな逆風の中あえて構文木です。メモリ効率も実行速度も関係ありません。だって構文木が見たいんだもん、しょうがないじゃん。