私は Xtext を使用して新しい言語を定義しています。この言語からコードを生成したいのですが、自動的に提案された doGenerate 関数を使用したくありません。代わりに、ビルド プロセスから呼び出すことができる Java コード (Xtend ではない) を使用する必要があります。
もちろん、その Java コードでは、元の提案された関数に渡される「リソース」を使用できるようにしたいので、DSL のコードからすべての情報にアクセスできます。
私は Xtext を使用して新しい言語を定義しています。この言語からコードを生成したいのですが、自動的に提案された doGenerate 関数を使用したくありません。代わりに、ビルド プロセスから呼び出すことができる Java コード (Xtend ではない) を使用する必要があります。
もちろん、その Java コードでは、元の提案された関数に渡される「リソース」を使用できるようにしたいので、DSL のコードからすべての情報にアクセスできます。
デフォルトでは、ジェネレーターの実装は xtend ファイルであると信じていますが、これを Java ファイルに変更することを妨げるものは何もありません。[LanguageName]RuntimeModule クラスのバインディングを次のようにオーバーライドするだけで済みます。
public class ExampleRuntimeModule extends com.example.AbstractExampleRuntimeModule {
@Override
public Class<? extends IGenerator> bindIGenerator() {
return YourOwnGenerator.class;
}
}
YourOwnGenerator が IGenerator を実装する場所。