Ruby言語構文木表示Webサービス
Ruby言語構文木表示Webサービス「ルビーの木」というのを作ってみました。
ルビーの木
http://aikelab.net/rubytree
Ruby言語のソースコードを解析してプログラム構造を折りたたみ可能なツリー形式で表示します。ruby_parserで解析した結果をYahoo! UIのTreeViewを使って表示します。
これが何の役に立つのか問われるとちょっと困ってしまいますが、とにかく作りたかったのです。今は反省している。
構文木萌え
プログラミング言語が内部的に生成する構文木って、何百、何千もの小さなメモリの塊がひとつの矛盾もなく緻密につながりあっていて、構築物として圧倒的に美しいと思うのですよ。
yacc/lexなんかを使ってインタプリタを自作したことがある人には分かってもらえると思うけど、正しく構文木が生成できるようになったときは叫びたくなるほど嬉しいもんです。
それからプログラム終了時には構文木のメモリを開放するんですが、先頭のノードをdeleteしただけで、パタパタパタっとすべてのノードが連鎖的に1バイトの漏れもなく消えていく様子なんて、まるで巨大なドミノ倒しのようで想像するだけでゾクゾクしてきます。
この構文木の美しさをなんとか視覚化したいと思っていたところ、ruby_parserなるライブラリが最近リリースされたとの情報を得て、思わず作ってしまいました。
ちなみにRubyソースコード完全解説 - 第12章 構文木の構築によるとNodeDumpというツールもあるそうです。