S式からgraphviz用dotファイルへの変換スクリプトを書いた
タイトルの通りのものを書きました. 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)
あと, 若干レイアウトをいじりました.