И наконец, хочется сказать о связи Xtext с EMF моделями.
У каждой EMF модели есть класс serializer, который определяет как загружается и как сохраняется модель в виде файла на диске.
Xtext реализует serializer (XTextResource) для EMF модели, который в себя включает парсинг текста и генерацию
Serializer XText на основе анализа текстового файла с DSL создает модель в формате EMF.
При этом, сам dsl файл - получается представлением EMF модели на диске.
С помощью такого механизма можно заменить формат хранения
любой EMF модели на какой-нибудь текстовый DSL, вместо стандартно используемого XML.
После этого EMF модель будет спокойно загружаться модели из
этого DSL, производя в фоне парсинг DSL с помощью Xtext и даже не будет это знать.
Доступ к EMF модели для DSL из Java полностью аналогичен доступу к EMF модели для xml файла. Вот так это примерно выглядит.
ResourceSet resSet = new ResourceSetImpl();
Resource resource = resSet.getResource(URI.createURI("model/List.xmi"), true);
EObject EMFroot = resource.getContents().get(0);
EMFroot - корневой элемент EMF модели. Его можно привести к определенному пользовательскому типу и работать с ним на уровне модели. При изменении EMF модели из программного кода изменения будут отражаться и в тексте DSL.
К данной модели EMF могут получать доступ различные редакторы:
- стандартный иерархический редактор, генерируемый EMF
- визуальные редакторы (диаграммы GMF, Sirius, ...)
- текстовый редактор Xtext
- инструменты автоматического построения диаграмм
- программные расширения через Java API EMF модели
Пользователь сам выбирать какие средства ему удобны для работы с формальной моделью.
Комментариев нет:
Отправить комментарий