Нужно ли использовать Xtend / Acceleo?

1

Я создал метамодель Ecore и создал редактор через EMF. Чтобы сгенерировать мой выходной код, я анализирую набор ресурсов (XMI) при создании диаграммы и затем сопоставляю эти ресурсы с моими собственными классами Java. Эти классы Java отвечают за генерацию моего вывода, который представляет собой некоторые файлы javascript, основанные на нескольких файлах шаблонов (.stg). Все работает нормально, но мой вопрос заключается в том, куда входят технологии, такие как Xtend/Acceleo? Нужен ли мне какой-нибудь из них? Я знаю, что они основаны на шаблонах, но поскольку у меня есть свои собственные шаблоны, которые отображаются через мои классы Java, почему мне нужно использовать Xtend, например? Я совершенно смущен.

огромное спасибо

Теги:
xtend

2 ответа

1
Лучший ответ

Xtend - это язык общего назначения. Вы могли бы назвать это "лучшей Java". Это особенно верно для шаблонов, потому что Xtend имеет красивые выражения шаблонов. Поэтому, если вы хотите, чтобы ваш код генератора был более читабельным, вы могли бы заменить некоторые классы Java классами Xtend. Вам не нужно переписывать все, Xtend взаимодействует с Java. Просто перепишите части, которые больше всего выигрывают от функциональных возможностей языка Xtend.

0

Вы используете Eclipse Enterprise Modeling Framework (EMF). Это дает вам метамодель ECore и может генерировать базовые редакторы на основе диалогов. В основном EMF выводит ваши диаграммы из формата файла XMI в стандартизованную объектную модель, аналогичную DOM.

Возможно, вы также используете Графический редактор Framework (GEF), чтобы визуализировать ваши диаграммы. Он берет ваш DOM и отображает его в графическом представлении. Обычно вы также можете изменять графику с помощью графического интерфейса пользователя, что также изменит содержимое вашего DOM.

Параллельно с ГЭФ существует также текстовый редактор, называемый xText. Это приносит вашему DOM текстовое представление. Затем вы можете использовать текстовый редактор для изменения текстового представления. xText может анализировать этот измененный текст и соответственно изменять DOM. Кроме того, он создает хороший редактор Eclipse с синтаксисом высокой молнии, сворачивание кода, завершение кода и возможности для расширений для пользовательского завершения кода и рефакторинга.

xText может быть дополнен XBase. XBase - это базовый язык программирования, который работает на виртуальной машине Java. Затем вы можете предоставить сопоставление от ваших артефактов ECore к концепциям XBase (например, какой объект ECore представляет оператор if или цикл). Затем XBase может генерировать байт-код Java и, следовательно, преобразовывать вашу модель ECore в исполняемый код.

XTend - это язык общего назначения. Он часто используется как очень продвинутый механизм шаблонов для преобразования вашей модели ECore в текст. В отличие от xText нет пути назад, чтобы преобразовать сгенерированный текст обратно в DOM ECore. Конечно, вы можете использовать любой механизм шаблонов или даже xText/xbase для генерации вашего исполняемого кода в соответствии с вашими потребностями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню