Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| mdd:dsl_design_patterns [2026/08/29 07:53] – Bulk sync migration user | mdd:dsl_design_patterns [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Notable design patterns for domain-specific languages ====== | ||
| + | Diomidis Spinellis. 2001. Notable design patterns for domain-specific languages. J. Syst. Softw. 56, 1 (February 2001), 91-99. DOI=10.1016/ | ||
| + | |||
| + | ===== Введение ===== | ||
| + | |||
| + | Автор рассматривает паттерны проектирования для создания предметно-ориентированных языков программирования. | ||
| + | |||
| + | ===== Содержание ===== | ||
| + | |||
| + | ==== 1. Создание на основе другого языка (Piggyback) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Обычно в предметно-ориентированном языке используются широко распространенные инструменты многих языков программирования: | ||
| + | |||
| + | ==== 2. Композиция из нескольких предметно-ориентированных языков (Pipeline) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Часто система может быть хороша описана с использованием нескольких предметно-ориентированных языков (например, | ||
| + | |||
| + | ==== 3. Создание на основе лексического анализа текста (Lexical processing) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Предметно-ориентированный язык программирования можно создать так, чтобы его можно было обрабатывать лексическим анализатором. Этот паттерн можно также совмещать с паттерном piggyback: после лексического анализа результат дать обрабатывать компилятору исходного языка. Благодаря использованию этого паттерна снижается стоимость создания языка. Большое количество подобных предметно-ориентированных языков было создано с помощью sed, awk, Perl, Python, m4 и др. | ||
| + | |||
| + | ==== 4. Расширение другого языка (Language extension) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Предметно-ориентированный язык может быть создан как расширение уже существующего языка. Он использует новые типы данных, | ||
| + | |||
| + | ==== 5. Специализация другого языка (Language specialisation) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | По аналогии с предыдущим пунктом, | ||
| + | |||
| + | ==== 6. Преобразование в исходный код другого языка (Source-to-source transformation) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Исходный код предметно-ориентированного языка программирования может быть преобразован с помощью компилятора/ | ||
| + | |||
| + | ==== 7. Облегчение работы со сложными структурами (Data structure representation) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Предметно-ориентированный язык, использующий этот паттерн, | ||
| + | |||
| + | ==== 8. Конфигурация сложной системы (System front-end) ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | Конфигурация системы часто приводит к появлению соответствующего предметно-ориентированного языка программирования, | ||
| + | |||
| + | ==== Как паттерны связаны между собой ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | ===== Заключение ===== | ||
| + | |||
| + | В данной статье не были рассмотрены традиционные способы создания языков программирования, | ||