Язык столешниц [1] [2] представляет собой инструмент или набор инструментов , который позволяет разработки программного обеспечения в языке-ориентированного программирования [2] парадигмы разработки программного обеспечения. Языковая рабочая среда обычно включает инструменты для поддержки определения, повторного использования и композиции предметно-ориентированных языков вместе с их интегрированной средой разработки . Языковые рабочие места были представлены и популяризированы Мартином Фаулером в 2005 году.
Языковые рабочие места обычно поддерживают: [1]
- Спецификация языковых концепций или метамодели
- Спецификация сред редактирования для предметно-ориентированного языка
- Спецификация семантики выполнения, например, посредством интерпретации и генерации кода
Примеры
- Racket - это средство разработки кроссплатформенных языков, включающее компилятор, JIT-компилятор, IDE и инструменты командной строки, предназначенные для создания как предметно-ориентированных языков, так и совершенно новых языков с возможностями добавления новых обозначений, ограничения конструкций и создания инструментов IDE. [3] [4] [5]
- JetBrains MPS - это инструмент для разработки предметно-ориентированных языков. Он использует проекционное редактирование, которое позволяет преодолеть ограничения языковых парсеров, и создавать редакторы DSL, например, с таблицами и диаграммами. Он реализует языково-ориентированное программирование. MPS объединяет среду для определения языка, языковую рабочую среду и интегрированную среду разработки (IDE) для таких языков. [6]
- Kermeta - это рабочая среда академического языка с открытым исходным кодом. [7] Среда Kermeta использует три разных метаязыка: один метаязык для абстрактного синтаксиса (согласованный с Emof ); один для статической семантики (согласованный с OCL ) и один для поведенческой семантики (называемый самим языком Kermeta).
- Melange - это языковая рабочая среда, которая обеспечивает модульный подход для настройки, сборки и интеграции нескольких спецификаций и реализаций предметно-ориентированного языка (DSL). [8]
- Подделка . [9] - это языковая рабочая среда с открытым исходным кодом для создания синтаксических анализаторов, средств проверки типов, компиляторов, интерпретаторов, а также подключаемых модулей IDE для Eclipse и IntelliJ . [10] Он использует SDF и анализатор GLR без сканирования для синтаксиса, а также формализмы, полученные из Stratego / XT для семантики.
- Xtext - это программная среда с открытым исходным кодом для разработки языков программирования и предметно-ориентированных языков (DSL). В отличие от стандартных генераторов парсеров, Xtext генерирует не только парсер, но и модель классов для абстрактного синтаксического дерева. Кроме того, он предоставляет полнофункциональную настраиваемую среду IDE на основе Eclipse. [11]
Смотрите также
- Языко-ориентированное программирование
- Компилятор-компилятор
- Преднамеренное программирование
- Категория: Языковые инструменты
Рекомендации
- ^ a b Фаулер, Мартин. «LanguageWorkbench» . Проверено 14 апреля 2015 года .
- ^ а б Фаулер, Мартин (12 июня 2005 г.). "Language Workbenches: приложение-убийца для языков, специфичных для предметной области?" . Проверено 14 апреля 2015 года .
- ^ Фелтей, Дэниел; Флоренс, Спенсер П .; Кнутсон, Тим; Сент-Амур, Винсент; Калпеппер, Райан; Флатт, Мэтью; Финдлер, Роберт Брюс; Фелляйзен, Маттиас (2016). "Ракетный язык" (PDF) . 2016 Language Workbench Challenge (65) . Проверено 9 июня 2019 .
- ^ Tobin-Hochstadt, S .; Сен-Амур, В .; Culpepper, R .; Flatt, M .; Фелляйзен, М. (2011). «Языки как библиотеки» (PDF) . Разработка и реализация языков программирования .
- ^ Флатт, Мэтью (2012). «Создание языков в ракетке» . Коммуникации ACM . Проверено 8 апреля 2012 .
- ^ «JetBrains MPS: Создатель предметно-ориентированного языка» .
- ^ Жезекель, Жан-Марк; Combemale, Бенуа; Баре, Оливье; Монперрус, Мартин; Фуке, Франсуа (2013). «Мэшап метаязыков и его реализация в языковой среде Kermeta» (PDF) . Программное обеспечение и моделирование систем . 14 (2): 905–920. arXiv : 1306.0760 . DOI : 10.1007 / s10270-013-0354-4 . S2CID 199965 .
- ^ «Меланж» .
- ^ «Инструментальные средства Spoofax Language» .
- ^ Кац, Леннарт К.Л.; Виссер, Eelco (2010). «Инструментальные средства языка Spoofax: правила декларативной спецификации языков и IDE». . Материалы 25-й ежегодной конференции ACM SIGPLAN по объектно-ориентированному программированию, системам, языкам и приложениям, OOPSLA 2010 . DOI : 10.1145 / 1869459.1869497 .
- ^ «Xtext» .
Внешние ссылки
- Мартин Фаулер, Language Workbench
- Language Workbench Challenge