Что такое практическое использование IDEA MPS и Eclipse Xtext

Обе эти структуры относятся к метамодели:

Есть ли у вас пример практических приложений, основанных на преобразовании метамодели с этими инструментами?

Ответ 1

Мы создали целую отслеживатель ошибок с использованием MPS. Генерация кода не является целью, а означает получение некоторого исполняемого кода. Цель состоит в том, чтобы дать разработчику инструмент, который позволяет создавать DSL с минимальными усилиями.

Прохладная вещь о MPS заключается в том, что она также предоставляет вам IDE для вашего языка. И разные DSL файлы, которые вы создаете, совместимы, т.е. Вы можете создавать DSL, который расширяет Java с помощью закрытий и другого DSL, который позволяет использовать внешние методы, и эти расширения будут работать вместе.

Ответ 2

Они отличаются с точки зрения хранения метамодели.

Относительно XText, эта статья иллюстрирует одно использование, когда речь заходит о создании собственных языков программирования и доменных языков (DSL).

Как только у вас есть язык, вы хотите обработать его, и это означает, что обычно нужно преобразовать вашу модель в другое представление.
Объект, ответственный за это преобразование, называется генератором и состоит из группы шаблонов преобразования (e.G. XPand) и некоторого кода, выполняющего их. В некоторых случаях модель считывается и преобразования применяются для создания кода.

Пример такого преобразования модели:

dot3zest, который поставляется с интерпретатором DOT to Zest (который теперь использует API-интерфейс Xtext, сгенерированный для DOT-грамматика) является поддержкой ad-hoc определений границ DOT.

alt text


Что касается MPS, у вас здесь серия практических примеров,
например генерация кода для GPL, такая как Java, С#, С++ или XML:

alt text

Ответ 3

Я думаю, что основное использование XText - это, во-первых, создание DSL из указанного вами грамматика и автоматическая генерация eclipse. Во-вторых, он может преобразовать скрипт, записанный в DSL, в java. Встроенные выражения из XText2 являются плюсом. Структура предоставляет бесплатную среду IDE для поддержки вашей созданной вами DSL-записи. И DSL - это продукт ulimate. Он может использоваться для абстрагирования правил и логик из реального мира. Например, в нашем проекте правило конфигурации продукта. Только специалист знает их, поэтому они пишут некоторые из созданного DSL.