Antlrworks

最近、ANTLR 始めました。

Antlrworks(AW)、最初にちょっとだけハマった。
まず、Lexer と Parser のファイルを分けたら連携してくれない。Parserで、「そんなToken知らん」と怒られる。
これはどうやら debug なりしてクラスファイル生成してやれば解決するらしい。

で、最初、debug しても「time-out waiting to connect to remote parser」みたいなエラーで動かなかった。
これは、AW の jar をデスクトップに置いてい実行していたのを、マルチバイト・スペース無しのパスに置いて実行したらなんか動いた。
というか、一回、AWを起動しなおせば治る場合もあるのかも・・・よく分からん。

あと、
@lexer::header {package com.hoge;}
とかって書くと生成されるクラスのパッケージを指定できるのだが、その場合、「Run > Edit XXX Test Rig for Java」でテスト実行クラスを自分で書き、そこで「com.hoge」をimport しないと動かない。自動生成されるクラスをコピペして書きなおすのが楽だろう。
なお、「Edit XXX Test Rig for Java」で書いた内容は、grammarと同じディレクトリの「XXX_testrig.st」というファイルに保存されるようだ。直接このファイルを編集するのでもよい。