Чтобы лучше всего проиллюстрировать мое требование, рассмотрим java-подобный язык с классами и интерфейсами.
Этот язык требует, чтобы все классы находились в файле с расширением '.classdef', а все интерфейсы должны находиться в файлах с расширением '.intdef'. Элемент корневой грамматики в этих файлах будет другим.
В файле интерфейса у него будет корневой элемент Interface
, который может содержать экземпляры AbstractMethod
и StaticConstant
.
Элемент корневой грамматики для '.classdef' будет Class
и может содержать экземпляры MethodDeclaration
, MemberVariable
, StaticConstant
и т. д.
Возможно ли, чтобы xtext имел другой корневой элемент грамматики в зависимости от расширения файла из одного файла грамматики? Для меня нет смысла разделять это на две связанные грамматики. Мне не нужны два плагина/пакета eclipse для разных грамматик.
Вышеприведенное является просто иллюстрацией. На самом деле у меня есть два разных типа файлов... но два поддерживаемых набора членов между двумя типами файлов почти полностью перекрываются.
Теоретически я мог бы реализовать это в валидаторе, чтобы вы не использовали пропущенный тип в одном из файлов. Но тогда мне также нужно было бы отфильтровать предложение из помощника по контенту и т. д. и т. д.