Может ли шаблон интерпретатора быть таким же простым, как анализ файла конфигурации? - PullRequest
0 голосов
/ 01 октября 2018

Надеюсь, это не глупый вопрос, однако, является ли процесс разбора файла конфигурации и делает содержимое доступным для программы простым примером шаблона интерпретатора?

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

1 Ответ

0 голосов
/ 02 октября 2018

Одним из ключевых преимуществ шаблонов является общий язык для описания известных проблем вместе с их решениями .

Канонический пример Interprepter - это простой анализатор арифметических выражений, в котором входное выражение анализируется в составном дереве.Затем примените execute() к главному узлу, чтобы вычислить значение выражения, причем каждое подвыражение (в узлах ветви) вносит свой вклад.

Если ваш конфигурационный файл написан на простом языке, таком как XML или JSON, то шаблон интерпретатора кажется излишним, поскольку нет никакой реальной "грубой работы", чтобы интерпретировать языковые операторы (то есть синтаксический анализ), которые необходимо выполнить,Может быть академически полезно наблюдать некоторые сходства с Интерпретатором (как вы это сделали), но может вводить в заблуждение других , чтобы комментировать в своем коде, что вы используете Шаблон Интерпретатора .

Однако, если ваша конфигурация выражена на более сложном языке, включающем, например, условные выражения, циклы и т. Д., То, конечно, Интерпретатор может быть разумным.Код шаблона интерпретатора будет включать в себя «синтаксический анализатор» для языка, который, в свою очередь, создаст некоторую форму полезной древовидной структуры.Затем дерево будет использоваться для настройки по мере необходимости путем загрузки модулей и взаимозависимостей и т. Д. Или того, что нужно вашему приложению.Это Переводчик .

...