问题描述
我们有一个项目,我们使用 Xtext 生成语法并从该语言创建一个 java 输出文件。 接下来,我们还想创建一种 json 输出文件。它有另一个扩展名。 为此,我们希望将生成器拆分为不混合 java 生成和 json 生成。 编译dsl语法时,我们可以调用2个Igenerators吗?
示例: 我们有 1 种通用语言,它为此生成 java 文件,我们有一个 IGenerator2,它像标准 CommonGenerator 一样调用。 现在我们要使用 CommonLineageGenerator 为 json 文件创建第二个生成器。
component = org.eclipse.xtext.generator.GeneratorComponent {
register = CommonStandalonesetup{}
outlet = {
path = "${runtimeProject}/src-gen"
}
}
component = org.eclipse.xtext.generator.GeneratorComponent {
register = CommonStandalonesetup2{}
outlet = {
path = "${runtimeProject}/src-gen"
}
}
其中 Standalonesetup 包含 Igenerator2 绑定的覆盖
return Guice.createInjector(new CommonRuntimeModule())
return Guice.createInjector(new CommonRuntimeModule() {
override Class<? extends IGenerator2> bindIGenerator2() {
return CommonTracingGenerator;
}
});
我们也使用 mwe2 来生成我们的语言配置。
当执行我们的编译时,现在看起来虽然他只使用了一个 Generator。无论如何我们可以做到这一点。包装器也是可能的,但我们真的想避免混合两种类型的代。
kr
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)