Я создаю 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
в моем пути сборки.