質問

私が呼び出す場合:

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オプション詳細については、ます。

scroll top