BNF 系文法定義の可視化、たまにしたいよね

そもそも自分で全部作ってる場合はそうでもないけれど、人にちょっとした説明をしたいときに絵にしたかったりするわけで。

graphviz 化して画像ファイルにするのを自作するのは簡単だろうなとは思いつつ、「美しい可視化」にはやや厳しいし、「やらんで済むならやりたくない」わけで。どうせたっくさん出てくるダロ、と思ったら全然。随分少ないわね。

C# で書かれたそのものズバリの「EBNF Visualizer」は、ホームページのスクリーンキャプチャと軽い説明を見た時点からして全然印象良くない、なんでって、「.ebnf ファイルを渡せやヲラ」式だということが推察出来るから。うーん、せっかくの GUI ならそういうことじゃのーて「テキストボックスに書いて評価」とかを基本 UI にすべきなんじゃねーの? これじゃぁ「ファイルオープンダイアログを使いたいだけのための GUI」だわ。と、使う前から期待してなかったが、動かしてみてさらにびっくり。起動したらハングアップ、やり直して「File」メニューを選択してハングアップ。なんぢゃこりゃ。5回ほどトライしてみるも、一度もまともに動作せず。なんか .NET バージョンの問題とかかもなぁ。

で、Quiita で紹介されてたヤツ。「ほとんどこれしかヒットしない」ヤツがポジティブな意味で「それしかない」だった。それしかないので仕方なく、じゃなくて良かった。やってみた動画:

動画でやってる例は ply で書いたパーサから BNF を抽出してるけど、単に抽出しやすかったからというだけのこと。pyparsing への文句から始まって、ply も捨てて rply を使っている今となっては rply で書いたものからやったほうがほんとは「オレ的に」は相応しいんだけど、まぁhttp://bottlecaps.de/convert/ の使用例だからね、許してな。

動画のとおり。シンプルかつパワフル。…まぁ「コンバータ」に関してはパワフルつーたって、 BNF 系の方言の差異の吸収なんぞたかが知れておるしね、なので「可視化の方は結構パワフル」ちぅことやね。

まぁ「惜しむらくは」というていいのかどうか、例えばこれを「設計書に貼り付けたい鍋の具」に使いたいって向きには全然役に立たんのであるわけよな。そうした場合はやっぱし DOT (graphviz) 化して絵にするしかないんじゃろか。これを「やった」という人が見つかるのだがその「作ったツール」が公開されてるように見えなかった。「ないの? あったら教えて、見つからないから AWK で 50 行くらいで作っちゃったよ」言うておるのにね…。…と思いながら動画を見直していて、右端に「svg/png」のラジオボタンが目に入った。あ、エキスポート出来る?