我正在尝试在我的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。
有人可以解释一下我为什么会遇到这个错误,这个定制的正确方法是什么?
非常感谢
答案 0 :(得分:0)
您已将Java代码粘贴到Xtend文件中。等效的Xtend语法是:
class ADSLRuntimeModule extends AbstractADSLRuntimeModule {
override configureIScopeProviderDelegate(Binder binder) {
binder.bind(IScopeProvider)
.annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
.to(ADSLImportedNamespaceAwareLocalScopeProvider)
}
}