Нет завершения для выражений Xbase, когда они встроены в другой Xtext DSL - PullRequest
0 голосов
/ 02 октября 2019

Я создаю Xtext DSL и хочу встраивать выражения Xbase в некоторые конкретные места для интерпретации части моих моделей с помощью интерпретатора Xbase, но я не могу завершить метод в сгенерированном редакторе.

Я использовал приведенные здесь примеры: https://www.eclipse.org/Xtext/documentation/201_sevenlang_introduction.html, и сумел интегрировать Xbase как часть моей грамматики. Предложение завершения ключевого слова работает нормально (например, do, for, while ...), но я не могу найти способ выполнить завершение для методов Java / Xbase (например, newArrayList или myArray.add(X)). Разъяснение по комментариям ниже: если я напишу var x = newArrayList в редакторе, метод не будет выделен курсивом, но у меня также нет ошибок.

Это пример версииЯ использую грамматику:

grammar org.xtext.example.common2.Common2 with org.eclipse.xtext.xbase.Xbase

generate common2 "http://www.xtext.org/example/common2/Common2"
import "http://www.eclipse.org/xtext/xbase/Xbase"

Test returns Test:
    {Test}
    'test'
    expressions+=Script
;

Script returns XBlockExpression:
    {Script}
    '{'
    (expressions+=XExpressionOrVarDeclaration ';'?)*
    '}'
;

Я обнаружил, что если я изменю свою грамматику на следующую, у меня может быть завершение, как и ожидалось:

grammar org.xtext.example.common2.Common2 with org.eclipse.xtext.xbase.Xbase

generate common2 "http://www.xtext.org/example/common2/Common2"
import "http://www.eclipse.org/xtext/xbase/Xbase"

Test returns XBlockExpression:
    {Test}
    'test'
    expressions+=Script
;

Script returns XBlockExpression:
    {Script}
    '{'
    (expressions+=XExpressionOrVarDeclaration ';'?)*
    '}'
;

Я предполагаю, что вседерево должно состоять из экземпляров XExpression, чтобы включить завершение, но я не понимаю, почему? Для меня Test не должен быть подклассом XBlockExpression (в моем реальном случае использования Test имеет дополнительные атрибуты / ссылки), но он должен содержать XBlockExpression.

Есть ли способ достичь этого? Любая помощь / ресурс, на который можно посмотреть, будет высоко ценится

Примечание Я уже проверил этот вопрос SO Как встроить выражения XBase в Xtext DSL , у меня уже есть xbase.lib в моем пути сборки.

...