のったばしーしー

読めねえよ!Wipeoutなみのサイバー表記だ。

¬<><∪∪(notavaCC)は上記のBullet¬MLを支えるコンパイラコンパイラだ。コンパイラコンパイラ、とてつもなく面妖な名前だが、コンパイラコンパイルするコンパイラという意味で、こう書くとなお一層意味が分からなくて楽しい。

実際はコンパイラが利用するパーサを自動生成するものをコンパイラコンパイラと呼ぶ。オールドタイプにはyaccJava屋にはJavaCCが広く知られている。

¬<><∪∪はJavaCCをより使いやすく、機能を拡充したもの、だと、思う。というのも、私が最後にJavaCCを使ったのがかなり昔なため、もうJavaCCの表記方法をほとんど覚えてないのだ。だもんで、ぱっとサンプルを見ても差分が分からない。JavaCCと比べてここが優れている、というドキュメントがあると助かるのだけども。

たぶんこの辺に書いてある内容が特長だろう。あと、Bullet¬ML内のBulletNotML.notavaccを読めば、非常にコンパクトな記述ができることがよく分かる。Main.javaを見れば、解析結果をXML表記に落とす方法も記述してあり、参考になるだろう。

¬<><∪∪はビルドするときにスクリプト言語pnutsを要求することに注意。あと、JDK1.4を使って生成されたパーサは、1.4で導入されたassertionを使っているので、コンパイル時には'-source 1.4'オプション、実行時には'-ea'オプションが必要だ。