Языковой верстак [1] [2] — это инструмент или набор инструментов, которые позволяют разрабатывать программное обеспечение в парадигме разработки программного обеспечения с использованием языково-ориентированного программирования [2] . Языковой верстак обычно включает инструменты для поддержки определения, повторного использования и композиции предметно-ориентированных языков вместе с их интегрированной средой разработки . Языковые верстаки были представлены и популяризированы Мартином Фаулером в 2005 году.
Языковые среды обычно поддерживают: [1]
Примеры
- Racket — это кроссплатформенная среда разработки языков, включающая компилятор, JIT-компилятор, IDE и инструменты командной строки, предназначенные для создания как доменно-ориентированных языков , так и совершенно новых языков с возможностями добавления новых обозначений, ограничений конструкций и создания инструментов IDE. [3] [4] [5]
- JetBrains MPS — это инструмент для проектирования доменно-специфичных языков. Он использует проекционное редактирование, которое позволяет преодолеть ограничения языковых парсеров, и создавать DSL-редакторы, например, с таблицами и диаграммами. Он реализует языково-ориентированное программирование. MPS объединяет среду для определения языка, языковой верстак и интегрированную среду разработки (IDE) для таких языков. [6]
- Kermeta — это академический языковой верстак с открытым исходным кодом. В верстаке Kermeta используются три разных метаязыка: один метаязык для абстрактного синтаксиса (соответствует Emof ), один для статической семантики (соответствует OCL ) и один для поведенческой семантики (называемый самим языком Kermeta).
- Melange — это языковая среда, которая обеспечивает модульный подход к настройке, сборке и интеграции нескольких спецификаций и реализаций предметно-ориентированных языков (DSL). [7]
- Spoofax. [8] — языковая среда с открытым исходным кодом для создания парсеров, средств проверки типов, компиляторов, интерпретаторов, а также плагинов IDE для Eclipse и IntelliJ . [9] Он использует SDF и бессканирующий парсер GLR для синтаксиса, а также формализмы, полученные из Stratego/XT, для семантики.
- Xtext — это программная среда с открытым исходным кодом для разработки языков программирования и предметно-ориентированных языков (DSL). В отличие от стандартных генераторов парсеров, Xtext генерирует не только парсер, но и модель класса для абстрактного синтаксического дерева. Кроме того, он предоставляет полнофункциональную, настраиваемую IDE на базе Eclipse. [10]
- Meeduse [11] — это фреймворк на основе EMF, который позволяет создавать, доказывать и анимировать исполняемые доменно-специфические языки (xDSL) с использованием метода B. Инструмент встраивает ProB, а также аниматор и средство проверки моделей метода B. [12]
Смотрите также
Ссылки
- ^ ab Fowler, Martin. "LanguageWorkbench" . Получено 14 апреля 2015 г.
- ^ ab Fowler, Martin (12 июня 2005 г.). «Language Workbenches: The Killer-App for Domain Specific Languages?» . Получено 14 апреля 2015 г. .
- ^ Фелти, Дэниел; Флоренс, Спенсер П.; Кнутсон, Тим; Сент-Амур, Винсент; Калпеппер, Райан; Флэтт, Мэтью; Финдлер, Роберт Брюс; Феллейзен, Маттиас (2016). «Languages the Racket Way» (PDF) . 2016 Language Workbench Challenge (65) . Получено 9 июня 2019 г.
- ^ Тобин-Хохштадт, С.; Сент-Амур, В.; Калпеппер, Р.; Флэтт, М.; Феллейзен, М. (2011). "Языки как библиотеки" (PDF) . Проектирование и реализация языков программирования .
- ^ Флэтт, Мэтью (2012). «Создание языков в Racket». Сообщения ACM . Получено 2012-04-08 .
- ^ «JetBrains MPS: Создатель предметно-ориентированного языка».
- ^ «Меланж».
- ^ «Рабочая среда языка Spoofax».
- ^ Kats, Lennart CL; Visser, Eelco (2010). «Языковая среда Spoofax: правила декларативной спецификации языков и IDE». Труды 25-й ежегодной конференции ACM SIGPLAN по объектно-ориентированному программированию, системам, языкам и приложениям, OOPSLA 2010. doi : 10.1145/1869459.1869497.
- ^ "Xтекст".
- ^ Идани, Акрам; Ледрю, Ив; Вега, Герман (декабрь 2020 г.). «Альянс инженерии на основе моделей с формальным подходом, основанным на доказательствах». Инновации в системной и программной инженерии (ISSE), NASA Journal . 6 (3): 289–307. doi : 10.1007/s11334-020-00366-3 .
- ^ "Медуза".
Внешние ссылки
- Мартин Фаулер, Language Workbench
- Задача языкового верстака