質問
私が呼び出す場合:
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
}
}
他のヒント
完璧な答えを持つ古い質問を、しかし、コマンドラインオプションを求め、質問にコメントするので(そしてそれは私がここに来たとき、私は実際に探していたものだった)、私はちょうどチャイムしようと思いましたし、次のことを言う...
あなたはANTLR 4を使用している場合は、私はのhref =「https://theantlrguy.atlassian.net/wiki/display/ANTLR3/Command+line+options」のrel =の」<コマンドラインでパッケージをspecifiyすることができますそうの答えはへの道であるhref="https://stackoverflow.com/a/1655920/1039947"> noreferrerは "> にチェックし、バージョン3には存在しないようですANTLR 3.
のために行きますここでは一例であります:
java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4
ANTLRツールのコマンドライン・オプションで-package
オプションを参照してください。 A>詳細については、ます。