Я делаю очень простой DSL с xtext. Проект будет содержать файлы, которые либо определяют имя сообщения, либо ссылаются на него. Я включил упрощенный пример:
Грамматика:
Model:
statements+=(MessageDefinition | MessageUsage)*;
MessageDefinition:
'[MESSAGE_DEF]' name=ID;
MessageUsage:
'[MESSAGE_USAGE]' usage=[MessageDefinition];
File1.ex:
[MESSAGE_DEF] EXAMPLE_1
[MESSAGE_DEF] EXAMPLE_2
[MESSAGE_USAGE] EXAMPLE_1
File2.ex:
[MESSAGE_USAGE] EXAMPLE_2
В этом примере перекрестная ссылка из EXAMPLE_1 работает так, что «Открытое объявление» об использовании приводит меня к определению. Однако перекрестная ссылка на ПРИМЕР_2 не работает. Я думаю, что правила области действия по умолчанию не позволяют разным файлам обмениваться ссылками.
Что мне нужно добавить, чтобы все файлы в проекте имели одну и ту же глобальную область для перекрестных ссылок?
Дополнительная информация:
- Параметр «Создавать автоматически» включен во время выполнения проекта.
- Файл .project включает buildCommand для xtextBuilder и характер для xtextNature.
- Я только пытаюсь использовать функцию перекрестных ссылок IDE, код не генерируется.
- Все файлы в проекте среды выполнения находятся в одной папке.
Проект был создан с использованием «Xtext Project» в стандартном мастере, я только отредактировал грамматику из предварительно сгенерированного кода, все остальное соответствует значениям по умолчанию. Я думал, что мне нужно добавить какое-то настраиваемое поведение / правила области видимости для загрузки всех файлов в глобальную область, но я не уверен, как это должно быть сделано?