Я использую Xtext 2.10.0 и, похоже, есть некоторые проблемы с перекрестными ссылками. Упрощенные, моя грамматика (с org.eclipse.xtext.common.Terminals) заключается в следующем:Проблемы с перекрестными ссылками в Xtext
Model:
package=Package
dtos+=DTO*;
Package:
'package' name=FQN;
FQN:
ID ('.' ID)*;
DTO:
'dto' name=ID ('extends' extendedDTO=[DTO|FQN])? '{' '}';
Для того, чтобы обеспечить правильное квалифицированное имя для DTOS, я реализовал собственный DefaultDeclarativeQualifiedNameProvider, который собирает составное имя на основе имени пакета и имени DTO.
Теперь я создаю первый DTO в файле "base.dto":
package base
dto BaseDTO {}
Во втором файле "mydto.dto" Я создаю второй DTO:
package mydto
dto MyDTO extends base.BaseDTO {}
Часть «base.BaseDTO» даже предлагается механизмом автозаполнения. Однако Eclipse отмечает эту часть как ошибку и говорит: «Не удалось разрешить ссылку на базу данных DTO.BaseDTO». ». Что мне нужно изменить, чтобы разрешить эту ссылку?
вы можете поделиться своим именем propvider impl –
Я думаю, что это был правильный намек. Первоначально я использовал это: «QualifiedName.create (packageName, dtoName)». Однако имя пакета состоит из нескольких элементов. Я разбиваю имя пакета на сегменты (в точке) и помещаю все сегменты в QualifiedName. Это работает. Большое спасибо! – user3575404