2016-11-03 6 views
0

Я использовал MPS в прошлом в небольшом проекте (например, в лабораторном проекте), поэтому у меня есть основное понимание того, как использовать MPS (хотя это была версия 2.4 или что-то так). Теперь я пытаюсь ввести некоторое полезное программное обеспечение (в идеале, плагин для IntelliJ), построенный поверх функциональности MPS. Поскольку MPS не так широко используется, я хотел бы проконсультироваться с опытными людьми здесь.MPS: абстрактный (без генератора?) Язык и его реализация

Что я хочу сделать, это обернуть некоторый доступ к базе данных реляционных знаний (SQL-запросов) в плагин на основе MPS. Я хочу, чтобы вы могли быстро начать и генерировать код уже существующей библиотеки jdbc-wrapping, и в будущем я хочу иметь возможность переключиться на мою реализацию с добавленными функциями, специфичными для db. В то же время я хочу сохранить существующие пользовательские модели, чтобы они могли легко переключаться на новый язык и отступать, если что-то не так с этим новым языком. Как может быть реализована эта функция простого переключения? Моя первая идея заключалась в использовании абстрактного языка без генераторов и добавлении языка реализации в mps-модуле в Idea как зависимости (тот или иной), но я не уверен, что это легко возможно.

ответ

1

Да, если я правильно вас понимаю, это должно быть легко возможным. Вам не нужно создавать язык без генераторов, но можете создавать свой язык с помощью генераторов и всех. Затем, если вы хотите просто добавить новые конструкции, которые пользователи смогут использовать в дополнение к уже определенным конструкциям, вы можете расширить этот язык с помощью более конкретного языка для функций, специфичных для db (в случае, если вы хотите иметь более одного специалиста язык). В качестве альтернативы, если вы хотите продолжать использовать один и тот же язык и обновлять его, MPS предлагает сценарии миграции, в которых вы можете указать, как обновить существующие модели, созданные в более старой версии вашего языка, до более новой версии. Для начала создания плагина Idea с MPS см. https://confluence.jetbrains.com/display/MPSD30/Using+MPS+inside+IntelliJ+IDEA.