S式からgraphviz用dotファイルへの変換スクリプトを書いた

chiko2008-05-22


タイトルの通りのものを書きました. LISPのS式をgraphviz用のdotファイルへ変換します. 下記のアドレスからダウンロードできます. PerlとClass::Accessor::Fastがあれば動くはずです.
http://www.tom.sfc.keio.ac.jp/~chiko/s2dot/s2dot.pl

最近LISPで書かれたLISP処理系を読んでいました. その上で障害になったのが, 処理されるS式の構造がイメージできないということでした.わたしはノートにS式の構造を書いて理解したのですが, 「構造を可視化するツールがあればもっと楽なのに」とも思いました. これが作成の動機です.

使い方は以下の通り. 標準入力からS式を読み込み, 変換したdotファイルを標準出力へ出力します.

 % echo "(a (b c) . d)" | s2dot.pl > hoge.dot

もしWebで公開するためにSVGへしたいなら, 次のよう出力をパイプでdotコマンドに渡せば良いでしょう.

 % echo "(a (b c) . d)" | s2dot.pl | dot -Tsvg > hoge.svg

結果, 右のような図が出力されます(この図はpngです).

(2008/5/22 16:57追記) バグがあったので修正しました.

((a b) b)

このS式が次のS式と同じ扱いになってしまっていました.

(a b c)

あと, 若干レイアウトをいじりました.