50

私が電話した場合:

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

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

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

4

2 に答える 2

74

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

    }
}
于 2009-10-31T23:32:10.947 に答える