2016-04-27 7 views
0

Я пытаюсь реализовать механизм неявного импорта в моем dsl (ADSL). Для этого я следую подходу, примененному к примеру SmallJava около 3 лет назад, который доступен здесь: SmallJava source folder. Мой dsl очень похож на SmallJava, поэтому вы можете подумать, что сейчас я пытаюсь сделать то же самое, что и в SmallJava.Xtext 2.9 RuntimeModule

Я определил библиотеку (похожую на маленькую) и попытался реализовать имплицитный импорт для нее. Для этого мне нужно настроить класс ADSLRuntimeModule, аналогично SmallJavaRuntimeModule.java. Однако я заметил, что в 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