jayというパーサジェネレータがあります。今日までずっと、これはJavaで書かれたものだと思い込んでいました。が、Cで書かれているんですね。この思い込みのせいで時間を無駄してしまいました…。
以前調べたときには「yaccのJava版です」とか「yaccをJavaに移植したものです」などという解説をよく見かけたのです。この表現を読んでてっきりJavaで書かれていると思んだ当時の私は、jarファイルだけダウンロードして保管しておきました。そして、今日使ってみようと思ってjarを取り出して使ってみたところ全然まともに動作しません。具体的には、文法定義ファイルを正しいコマンドラインでフルパスで指定しているのにファイルを開けないとエラーが出てしまいました。仕方がないのでソースをダウンロードしてファイルオープンに失敗する原因を調べようと思ったところ、ソースがCで書かれていて驚いた、という経緯です。
いや、改めて調べてみると、古いオフィシャルサイトに堂々とCで書かれていると書かれているのですが…新しいオフィシャルサイト(?)にはjarファイルでの配布が行われています。うーん、いったいなんでjarファイルで配布しているんでしょう??しかもjarを開くと.classファイル群が入っていて確かにJavaプログラムのような感じなのですが…はて。
まあ、CのソースはVisual Studio 2008で普通にビルドできましたので、深追いするより自前ビルドしたexeを使うことにします 🙂