Языковая рабочая среда
Языковая рабочая среда — это инструмент или набор инструментов, предназначенных для разработки программного обеспечения в парадигме языко-ориентированного программирования[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].
Примечания
Литература
- Martin Fowler, Language Workbench
- Language Workbench Challenge


