Внешний DSL для генерации кода CRUD для нескольких платформ - PullRequest
0 голосов
/ 06 мая 2018

Я занимаюсь разработкой универсального приложения для генерации кода CRUD. Идея состоит в том, что коды / файлы (модель, контроллер, представление) для общих операций вставки, обновления, списка, удаления и т. Д. Будут автоматически генерироваться из определения модели (например, определения, используемого в Grails). Но сгенерированный код может быть для любого фреймворка, например Play (версия для Scala или Java), Django, Grails или все, что хочет использовать пользователь фреймворка, даже AngularJ. То есть одно и то же определение модели можно использовать для генерации кода для любой платформы.

У меня вопрос: что я могу использовать для этой задачи - Scala или Groovy или некоторые специализированные инструменты DSL, такие как Xtext?

1 Ответ

0 голосов
/ 07 мая 2018

Это похоже на хороший случай для DSL. DSL можно суммировать как следующие 3 элемента:

  1. Абстрактный синтаксис: концепции вашего DSL. Здесь вы хотите указать приложения CRUD.
  2. Конкретный синтаксис (ы): способ материализации вашего абстрактного синтаксиса. Как программист, первая мысль - это часто текстовые синтаксисы, но вы также можете использовать графический или древовидный синтаксис или даже просто графический интерфейс с текстовыми полями и флажками.
  3. Семантика: значения вашего DSL. Здесь вы хотите сгенерировать код.

Теперь я предложу некоторые решения, основанные на Java и происходящие из экосистемы Eclipse Modeling.

  1. Eclipse EMF реализует стандарты для определения так называемых "метамоделей" (в основном абстрактных синтаксисов). В мире Eclipse EMF является основой для множества инструментов.
  2. Если у вас есть метамодель EMF, текстовые синтаксисы можно указать с помощью Eclipse Xtext , а графические синтаксисы - с помощью Eclipse Sirius . Обратите внимание, что вы также можете разработать свой собственный графический интерфейс на Java и создать свою модель с помощью API-интерфейсов Java EMF. Также обратите внимание, что Xtext может создать вашу метамодель для вас на основе грамматики, которую вы хотите для своего текстового синтаксиса. Это хорошо, если вы не хотите погружаться слишком глубоко в саму ЭДС (таким образом, шаги 1 и 2 - это одно и то же).
  3. Eclipse Acceleo предоставляет язык шаблонов, специально разработанный для генерации текста, включая код. Еще раз, вы также можете написать свой генератор кода, используя обычный Java или любой язык на основе JVM, благодаря Java API-интерфейсам EMF. Если вы используете Xtext, есть также средство для , включая генератор кода на основе Xtend , наряду с вашим синтаксисом.
...