Как стать автором
Обновить

Паттерн «Интерпретатор»: что такое и как использовать

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.6K
Всего голосов 9: ↑8 и ↓1+11
Комментарии6

Комментарии 6

когда нужно разработать язык для описания операций или поведения;

Вот эта тема не раскрыта. Ещё один парсер математических выражений, скорее всего, не нужен. Ну, разве что для обучения.

А вот ситуация, когда у нас настолько разнообразный круг задач (в рамках одной области!), что стоит переходить от простой цепочки ветвлений или "стратегии" к "интерпретатору"...

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

Сам паттерн только про интерпретацию набора команд для достижения вариативности результата путём предоставления различного набора команд, лексический разбор и даже AST не обязательны.

К примеру PNG формат состоит из команд, которые обрабатываются интерпретатором для построения изображения.

Другой пример-любая GUI программа содержит в себе интерпретатор, т.к. ОС в Event Loop присылает команды на которые программа должна реагировать (нажатия кнопок, действия мышью итд)

По-моему, паттерн, заточенный чисто на обработку команд - паттерн «Команда». Ведь его задача именно представлять команды в виде объектов, которые отправляются в том числе в Event loop ОС. Ну и в том же GUI паттерн активно используется (помимо прочих по типу компоновщика или наблюдателя).

Примерно по такой же схеме я недавно делал на Расте разборщик химических формул, а так же растовский аналог lambdify из python sympy - по сути парсер символьных выражений в нормальную функцию. Очень хорошо что кто-то сподобился обобщить этот подход и описать его.

Спасибо за Вашу поддержку!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории