2014-02-06 2 views
0

Чтобы лучше всего проиллюстрировать мое требование, рассмотрите Java-подобный язык, который имеет классы и интерфейсы.Xtext: объединение различных корневых элементов с различными расширениями файлов

Этот язык требует, чтобы все классы находились в файле с расширением «.classdef», и все интерфейсы должны быть в файлах с расширением «.intdef». Корневой элемент грамматики в этих файлах будет другим.

В файле интерфейса он будет иметь корневой элемент Interface, который может содержать экземпляры AbstractMethod и StaticConstant.

Грамматика корневой элемент для «.classdef» будет Class и может содержать экземпляры MethodDeclaration, MemberVariable, StaticConstant и т.д.

это возможно с XText иметь другой корень грамматики элемент в зависимости от того, что расширение файла из одного файла грамматики? Мне не имеет смысла разделять это на две грамматики, которые связаны между собой. Я не хочу использовать два плагина/комплекта eclipse для разных грамматик.


Вышеупомянутое является иллюстрацией. На самом деле у меня есть два разных типа файлов ... но два поддерживаемых набора элементов между двумя типами файлов почти полностью перекрываются.

Теоретически я мог бы реализовать его в валидаторе, чтобы вы не использовали пропущенный тип в одном из файлов. Но тогда мне также нужно будет отфильтровать предложение от помощника по контенту и т. Д. И т. Д.

ответ

1

Что относительно нескольких dsls/языков в сочетании с наследованием, например.

  • baselang (без редактора вклад)
  • classlang расширяет baselang
  • interfacelang расширяет baselang
+0

Могу ли я сделать это с помощью одного проекта грамматике/Ui? Я могу понять, как это сделать с отдельными проектами, но я бы предпочел избежать этих накладных расходов! – jwa

+0

Да, вы можете добавить несколько разделов языка в рабочий процесс, , но я не могу сказать, насколько это стабильно работает –

Смежные вопросы