2016-04-27 47 views
0

我想在我的dsl(名爲ADSL)中實現隱式導入機制。要做到這一點,我正在遵循大約3年前應用於SmallJava示例的方法,可在此處獲得:SmallJava source folder。我的dsl與SmallJava非常相似,所以你可能會認爲我現在正在嘗試在SmallJava中完成基本相同的事情。Xtext 2.9 RuntimeModule

我已經定義了一個類庫(類似於smalljava),並試圖爲它實現隱式導入。爲此,我需要以類似於SmallJavaRuntimeModule.java的方式定製ADSLRuntimeModule類。 但是,我注意到在源文件夾中的Xtext 2.9中,我的ADSLRuntimeModule是xtend,而不是java文件。

因此,當我嘗試更新我的ADSLRuntimeModule.xtend時,我遇到語法錯誤,如屏幕截圖ADSLRuntimeModule.xtend所示。它聲明@Override不允許用於這個位置。

是否有人可以解釋爲什麼我面臨這個錯誤以及做這種定製的正確方法是什麼?

非常感謝

+0

您需要發佈您的代碼。我們不知道你在做什麼。 – Halfstop

+0

非常感謝您的回覆,我更新了一些更詳細的問題。希望現在能夠提供更多信息;) – Marina

回答

0

您已將Java代碼粘貼到Xtend文件中。等效的Xtend語法如下:

class ADSLRuntimeModule extends AbstractADSLRuntimeModule { 

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

} 
+0

非常感謝Miro修正語法,現在正在編譯。可能不用說,我是一個xtend和xtext的初學者;) – Marina