Xtext 语言上的多个生成器调用

问题描述

我们有一个项目,我们使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...