Xtext 2.9 运行时模块

Xtext 2.9 RuntimeModule

我正在尝试在我的 dsl(名为 ADSL)中实现隐式导入机制。为此,我遵循大约 3 年前应用于 SmallJava 示例的方法,可在此处获得:SmallJava source folder。我的 dsl 与 SmallJava 非常相似,因此您可能会认为我现在正在尝试做与 SmallJava 中基本相同的事情。

我定义了一个库(类似于 smalljava 的库)并尝试为其实现隐式导入。为此,我需要以类似于 SmallJavaRuntimeModule.java 的方式自定义 ADSLRuntimeModule class。 但是,我注意到在源文件夹中的 Xtext 2.9 中,我的 ADSLRuntimeModule 是 xtend,而不是 java 文件。

因此,当我尝试更新我的 ADSLRuntimeModule.xtend 时,我遇到了句法错误,如您在屏幕截图中所见 ADSLRuntimeModule.xtend。它声明此位置不允许使用@Override。

有人能解释一下为什么我会遇到这个错误吗?进行此自定义的正确方法是什么?

非常感谢

您已将 Java 代码粘贴到 Xtend 文件中。等效的 Xtend 语法是这样的:

class ADSLRuntimeModule extends AbstractADSLRuntimeModule {

    override configureIScopeProviderDelegate(Binder binder) {
        binder.bind(IScopeProvider)
            .annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
            .to(ADSLImportedNamespaceAwareLocalScopeProvider)
    }

}