1

「Component」と呼ばれる xText のルールは、通常、src-gen フォルダーにクラス「Component」を生成します。DSL に小さな変更を加えるたびにオーバーライドされることなく、これらのクラスにメソッドを追加したいと考えています。これらのクラスに独自のコードを挿入する適切な方法は何ですか? また、すべてのクラスがデフォルトの EObject の代わりに独自のルート クラスを拡張する方法はありますか?

前もって感謝します。

4

1 に答える 1

2

基本的に次の 2 つの選択肢があります。

  • を使用しIXtext2EcorePostProcessorて、Xtext が文法から推測した EMF モデルを変更できます。実際のコード生成は EMF によって行われるため、そのボトルネックを介してコードをいじる必要があります。詳細はChristian Dietrich のブログに記載されています。このアプローチは、小さな変更にのみ適しています。

  • 生成されたモデルクラスから派生するクラスを作成できる「ジェネレーションギャップパターン」(別名「実装ギャップパターン」)を使用できます。ここでは、必要なものを追加できます。詳細はHeiko Behrens のブログに記載されています。このアプローチは、継承による大規模な変更に適しています。

もちろん、2つのアプローチを混在させることもできます...

于 2013-04-12T21:01:19.367 に答える