Оглавление Предисловие 17 Благодарности 24 Часть I. Описание 27 Глава 1. Вводный пример 29 Глава 2. Использование предметно-ориентированных языков 49 Глава 3. Реализация предметно-ориентированных языков 63 Глава 4. Реализация внутреннего DSL 85 Глава 5. Реализация внешнего DSL 105 Глава 6. Выбор между внутренними и внешними DSL 119 Глава 7. Альтернативные вычислительные модели 127 Глава 8. Генерация кода 135 Глава 9. Языковые инструментальные средства 143 Часть II. Общие вопросы 157 Глава 10. Зоопарк DSL 159 Глава 11. Семантическая модель 171 Глава 12. Таблица символов 177 Глава 13. Переменная контекста 187 Глава 14. Построитель конструкции 191 Глава 15. Макрос 195 Глава 16. Уведомление 205 Часть III. Вопросы создания внешних DSL 211 Глава 17. Трансляция, управляемая разделителями 213 Глава 18. Синтаксически управляемая трансляция 229 Глава 19. Форма Бэкуса–Наура 237 Глава 20. Лексический анализатор на основе таблицы регулярных выражений 247 Глава 21. Синтаксический анализатор на основе рекурсивного спуска 253 Глава 22. Комбинатор синтаксических анализаторов 263 Глава 23. Генератор синтаксических анализаторов 277 Глава 24. Построение дерева 289 Глава 25. Встроенная трансляция 305 Глава 26. Встроенная интерпретация 311 Глава 27. Внешний код 315 Глава 28. Альтернативная токенизация 325 Глава 29. Вложенные операторные выражения 333 Глава 30. Символ новой строки в качестве разделителя 339 Глава 31. Прочие вопросы 343 Часть IV. Вопросы создания внутренних DSL 347 Глава 32. Построитель выражений 349 Глава 33. Последовательность функций 357 Глава 34. Вложенные функции 361 Глава 35. Соединение методов в цепочки 375 Глава 36. Перенос области видимости в объект 387 Глава 37. Замыкание 397 Глава 38. Вложенные замыкания 403 Глава 39. Список литералов 415 Глава 40. Ассоциативные массивы литералов 417 Глава 41. Динамический отклик 423 Глава 42. Аннотации 439 Глава 43. Работа с синтаксическим деревом 449 Глава 44. Класс таблицы символов 461 Глава 45. Шлифовка текста 469 Глава 46. Расширение литералов 473 Часть V. Альтернативные вычислительные модели 477 Глава 47. Адаптивная модель 479 Глава 48. Таблицы принятия решений 485 Глава 49. Сеть зависимостей 495 Глава 50. Система правил вывода 503 Глава 51. Конечный автомат 517 Часть VI. Генерация кода 521 Глава 52. Генерация с помощью преобразователя 523 Глава 53. Шаблонная генерация 529 Глава 54. Встроенный помощник 537 Глава 55. Генерация, осведомленная о модели 545 Глава 56. Генерация, игнорирующая модель 557 Глава 57. Отделение генерируемого кода с помощью наследования 561 Список литературы 569 Предметный указатель 570