我正在使用 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。