Что такое практическое использование IDEA MPS и Eclipse Xtext - PullRequest
10 голосов
/ 28 июля 2010

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

У вас есть пример практического применения, основанного на преобразовании метамодели с помощью этих инструментов?

Ответы [ 3 ]

11 голосов
/ 07 октября 2010

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

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

7 голосов
/ 28 июля 2010

Они отличаются с точки зрения документа, хранящего метамодель .

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

Если у вас есть язык, вы хотите его обработать, и это обычно означает преобразование вашей модели.в другое представление.
Средство, ответственное за это преобразование, называется генератором и состоит из набора шаблонов преобразования (например, 1015 *XPand) и некоторого кода, выполняющего их.В некоторых случаях модель считывается, и преобразования применяются для создания кода.

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

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

alt text


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

alt text

1 голос
/ 18 августа 2011

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

...