Xtext 2.9 RuntimeModule

时间:2016-04-27 13:34:04

标签: customization xtext xtend

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

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

因此,当我尝试更新ADSLRuntimeModule.xtend时,我会遇到语法错误,正如您在屏幕截图ADSLRuntimeModule.xtend中看到的那样。它声明此位置不允许@Override。

有人可以解释一下我为什么会遇到这个错误,这个定制的正确方法是什么?

非常感谢

1 个答案:

答案 0 :(得分:0)

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

class ADSLRuntimeModule extends AbstractADSLRuntimeModule {

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

}