MPS — IDE для быстрой разработки языков

MPS — это IDE для разработки проблемно- ориентированных языков (DSL) и написания программ с их использованием. Среда позволяет легко описывать большинство аспектов языка: синтаксис, умный редактор, генератор, систему типов и другие неконтекстные ограничения, рефакторинги, миграции между версиями языка и т.д.

Созданные языки можно сразу же начинать использовать для написания программ в среде MPS. При помощи плагина можно использовать созданные в MPS языки для редактирования программ прямо из IntelliJ IDEA.

В MPS уже описан язык Java, а также его расширения для работы с замыканиями, датами, математическими и регулярными выражениями, язык для написания SQL-like запросов к коллекциям и многие другие. Несмотря на доминирование языка Java, MPS может работать с абсолютно любым языком. В частности, в поставке MPS уже есть языки, генерирующиеся в Ant и XML. Существуют проекты, использующие в качестве базового языки JavaScript, ActionScript, C и некоторые другие.

Ключевые возможности

  • Быстрая разработка новых языков
  • Возможность разработки языка совместно с разработкой программы на нем
  • Применение только что произведенных в языке изменений без перезагрузки IDE
  • Наглядное описание языка
  • Использование нескольких языков от разных авторов, вплоть до использования внутри одной синтаксической конструкции
  • Отсутствие этапов лексического и синтаксического анализа исходного кода
  • Встроенная система для описания запаковки языков
  • Интеграция DSL в IDE: автодополнение кода, рефакторинги, поиск использований, анализ зависимостей, расширение интерфейса IDE из пользовательского языка
  • Чтение/запись исходного кода в формате, определенном пользователем; возможность интеграции с существующими языками

Что нового в MPS 3.1

MPS IDE

  • Значительные улучшения редактора кода Java
  • Default editor для конструкций, для которых не определен аспект редактора
  • Поддержка нескольких способов отображения одного нода в редакторе
  • Режим Darcula
  • История локальных изменений (Local History)
  • Улучшения UI для VCS-интеграции
  • Java API для работы с AST
  • Возможность сохранения исходников в формате, определенном пользователем
  • Build language: возможность генерации исходников из билд-скрипта с автоматической обработкой зависимостей, запуск тестов на запакованных модулях, значительно уменьшен размер запакованных моделей

Плагин к IntelliJ IDEA

  • Генерация кода вне процесса IDE
  • Прозрачное взаимодействие с существующим java-кодом
  • Интеграция с find usages, refactorings и другими подсистемами IDE