私が電話した場合:
java org.antlr.Tool -o outdir sources/com/example/Java5.g
...antlr-3.1.3 では、パーサーとレクサーのコードがディレクトリに生成されoutdir/sources/com/example
ます。package
しかし、生成されたクラスにはステートメントがありません。私はそれらがパッケージの中で生活する必要がありますcom.example
。
対象パッケージを指定する方法はありますか?
ANTLR は、パッケージとインポートを含めることができるヘッダー ツールを提供します。これを *.g 文法ファイルに含めます。
@header {
package org.xmlcml.cml.converters.antlr;
import java.util.HashMap;
}
また、レクサーでも必要になる場合があります。
@lexer::header {package org.xmlcml.cml.converters.antlr;}
いくつかのメンバーとコードを追加する必要がある場合:
@members {
HashMap<String, Object> objectMap = new HashMap<String, Object>();
//...
private void addArrayValue(String content) {
//... code required by snippets in the grammar
}
}