Интерпретатор (шаблон проектирования)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Шаблон проектирования
Интерпретатор
Interpreter
Тип:

поведенческий

Назначение:

решает часто встречающуюся, подверженную изменениям задачу

Описан в Design Patterns

Да

Интерпретатор (англ. Interpreter) — поведенческий шаблон проектирования, решающий часто встречающуюся, но подверженную изменениям, задачу. Также известен как Little (Small) Language

Проблема[править | править исходный текст]

Имеется часто встречающаяся, подверженная изменениям задача.

Решение[править | править исходный текст]

Создать интерпретатор, который решает данную задачу.

Преимущества[править | править исходный текст]

Грамматику становится легко расширять и изменять, реализации классов, описывающих узлы абстрактного синтаксического дерева похожи (легко кодируются). Можно легко изменять способ вычисления выражений.

Недостатки[править | править исходный текст]

Сопровождение грамматики с большим числом правил затруднительно.

Пример[править | править исходный текст]

Задача поиска строк по образцу может быть решена посредством создания интерпретатора, определяющего грамматику языка. "Клиент" строит предложение в виде абстрактного синтаксического дерева, в узлах которого находятся объекты классов "НетерминальноеВыражение" и "ТерминальноеВыражение" (рекурсивное), затем "Клиент" инициализирует контекст и вызывает операцию Разобрать(Контекст). На каждом узле типа "НетерминальноеВыражение" определяется операция Разобрать для каждого подвыражения. Для класса "ТерминальноеВыражение" операция Разобрать определяет базу рекурсии. "АбстрактноеВыражение" определяет абстрактную операцию Разобрать, общую для всех узлов в абстрактном синтаксическом дереве. "Контекст" содержит информацию, глобальную по отношению к интерпретатору.

C#[править | править исходный текст]


См.также[править | править исходный текст]

Языково-ориентированное программирование
Предметно-специфичный язык