MPS: абстрактный (без генератора?) Язык и его реализации
В прошлом я использовал MPS в небольшом проекте (например, в лабораторном проекте), поэтому у меня есть базовые представления о том, как использовать MPS (хотя это была версия 2.4 или что-то подобное). Сейчас я пытаюсь представить некоторое служебное программное обеспечение (в идеале плагин для IntelliJ), построенное на основе функциональности MPS. Поскольку MPS не так широко используется, я бы хотел проконсультироваться с опытными людьми здесь.
Что я хочу сделать, это обернуть некоторые доступ к базе данных реляционных знаний (SQL-запросов) в плагин на основе MPS Я хочу иметь возможность быстрого запуска и создания кода для уже существующей библиотеки jdbc-wrapping, и в будущем я хочу иметь возможность переключиться на мою реализацию с добавленными функциями, специфичными для БД. В то же время я хочу сохранить существующие пользовательские модели, чтобы они могли легко переключаться на новый язык и отступать, если что-то не так с этим новым языком. Как эта функция легкого переключения могла быть достигнута? Моей первой идеей было использование абстрактного языка без генераторов и добавление языка реализации в модуль на основе mps в Idea в качестве зависимости (той или иной), но я не уверен, легко ли это возможно.
1 ответ
Да, если я вас правильно понимаю, это должно быть легко возможно. Вам не нужно создавать язык без генераторов, но вы можете создать свой язык с помощью генераторов и всего остального. Затем, если вы хотите просто добавить новые конструкции, которые пользователи смогут использовать в дополнение к уже определенным конструкциям, вы можете расширить этот язык более конкретным языком для функций, специфичных для БД (если вы хотите иметь более одной специализированной язык). В качестве альтернативы, если вы хотите продолжать использовать один и тот же язык и обновлять его, MPS предлагает сценарии миграции, в которых вы можете указать, как обновить существующие модели, созданные в более старой версии вашего языка, до более новой версии. Для начала создания плагина Idea с MPS, пожалуйста, смотрите https://confluence.jetbrains.com/display/MPSD30/Using+MPS+inside+IntelliJ+IDEA.