ANTLRのターゲットパッケージを指定するにはどうすればいいですか? 質問する

ANTLRのターゲットパッケージを指定するにはどうすればいいですか? 質問する

電話すると:

java org.antlr.Tool -o outdir sources/com/example/Java5.g

...antlr-3.1.3 では、パーサーとレキサーのコードがディレクトリに生成されますoutdir/sources/com/example。ただし、生成されたクラスにはステートメントがありませんpackage。パッケージ内でそれらを有効にする必要がありますcom.example

対象パッケージを指定する方法はありますか?

ベストアンサー1

ANTLR は、パッケージとインポートを組み込むことができるヘッダー ツールを提供します。これを *.g 文法ファイルに組み込みます。

@header {
    package org.xmlcml.cml.converters.antlr;
    import java.util.HashMap;
}

また、Lexer でも必要になる場合があります。

@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

    }
}

おすすめ記事