1

受信メッセージを解析し、送信メッセージを EDIFACT 形式 (基本的に構造化された区切り形式) で生成する必要があります。

メッセージを解析して生成される Java モデルが欲しいです。次に、同じモデルを使用してインスタンスを作成し、メッセージを生成したいと思います。

前半は問題ありません。私は以前に ANTLR を使用して raw -> Java オブジェクトに移動しました。しかし、私はその逆をしたことはありません。

ANTLR は文法を使用した生成をサポートしていますか、それとも本当に解析のみのツールですか?

編集:

拡張 - 2 つのことを理想的に定義したいと思います。生のメッセージを記述する文法 (この場合は EDIFACT ですが、必要に応じて CSV のふりをします)。そしてJavaオブジェクトモデル。

raw -> Java モデルから取得する ANTLR 文法を記述できることはわかっています。たとえば、SQL 文字列の解析 -> 以前に行った Java モデル。しかし、理想的には、文法を変更せずに、逆の方向に進む必要があります。

JAXB(XMLの世界)に例えるなら、EDIFACTには(XMLではなく)どうしてもJAXBが欲しい。

4

2 に答える 2

1

ANTLR はあなたが求めていることを実行できますか、はい。複数のグラマーが必要になる場合がありますが。

私には、これはパーサーから AST を作成したいように思えます。必要なすべての Java オブジェクトの作成を実行する 1 つのツリー ウォーカーを用意します (2 番目の文法は可能性があります)。次に、出力メッセージを作成するための 2 つ目のツリー ウォーカー (3 つ目の文法) と、必要に応じて StringTemplate を使用することもできます。たぶん、2つのグラマーで逃げることができます。

しかし、この時点で、特定の入力に対してASTがどのように見えるか、出力メッセージがどうあるべきかなど、実際の詳細を提供する必要があります。

于 2010-03-31T20:34:11.190 に答える
0

自分でやったことはありませんが(ANTLRは解析のみに使用しました)、ANRLRをジェネレーターとしても使用できることは確かです。

実際、(同じ作成者による)独自のコード生成にstringtemplatesというライブラリを使用しています。

于 2010-03-31T11:11:16.467 に答える