Языковая рабочая среда

Языковая рабочая среда — это инструмент или набор инструментов, предназначенных для разработки программного обеспечения в парадигме языко-ориентированного программирования[1][2]. Такая среда обычно включает средства для определения, повторного использования и композиции предметно-ориентированных языков программирования вместе с их интегрированной средой разработки. Понятие языковой рабочей среды было предложено и популяризировано Мартином Фаулером (англ. Martin Fowler) в 2005 году.

Языковые рабочие среды обычно поддерживают:[1]

  • спецификацию концепций языка или метамодели;
  • спецификацию среды редактирования для предметно-ориентированного языка программирования;
  • спецификацию семантики исполнения, например, посредством интерпретации или генерации кода.

Примеры

  • Racket — кроссплатформенная языковая рабочая среда, включающая компилятор, JIT-компилятор, интегрированную среду разработки и инструменты командной строки. Она предназначена для создания как новых предметно-ориентированных языков программирования, так и совершенно новых языков с возможностью добавления собственной нотации, ограничения конструкций и создания инструментов для среды разработки.[3][4][5]
  • JetBrains MPS — инструмент для проектирования предметно-ориентированных языков программирования. Использует проекционное редактирование, позволяющее преодолевать ограничения парсеров и строить редакторы языков, такие как таблицы и диаграммы. Реализует концепции языко-ориентированного программирования, совмещая среду для определения языка, языковую рабочую среду и интегрированную среду разработки для таких языков[6].
  • Kermeta — академическая языковая рабочая среда с открытым исходным кодом. В Kermeta используются три различных метаязыка: один для абстрактного синтаксиса (совместим с Emof), один для статической семантики (совместим с OCL) и один для поведенческой семантики (собственно язык Kermeta).
  • Melange — языковая рабочая среда, предоставляющая модульный подход к настройке, сборке и интеграции нескольких спецификаций и реализаций предметно-ориентированных языков программирования (DSL)[7].
  • Spoofax[8]. — открытая языковая рабочая среда для генерации парсеров, средств проверки типов, компиляторов, интерпретаторов, а также плагинов для Eclipse и IntelliJ[9]. Использует SDF и бессканерный GLR-парсер для синтаксиса, а также формализмы, производные от Stratego/XT, для определения семантики.
  • Xtext — открытый фреймворк для разработки языков программирования и предметно-ориентированных языков. В отличие от стандартных генераторов парсеров, Xtext генерирует не только парсер, но и модель классов для абстрактного синтаксического дерева, а также предоставляет полноценную настраиваемую интегрированную среду разработки на базе Eclipse[10].
  • Meeduse[11] — основанный на EMF фреймворк, позволяющий создавать, проверять и анимировать исполняемые предметно-ориентированные языки (xDSL) с использованием метода B. Инструмент включает ProB — аниматор и средство проверки моделей для метода B[12].

Примечания

Литература