Русская Википедия:Интерпретатор (шаблон проектирования)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Шаблон проектирования

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

Проблема

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

Решение

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

Преимущества

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

Недостатки

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

Пример

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

C#

Шаблон:Hider hiding

Python

Шаблон:Hider hiding

PHP

Шаблон:Hider hiding

См.также

Шаблон:Типы шаблонов проектирования