Пожалуйста, взгляните на ваш вопрос еще раз. Вы имеете в виду переменную $words
, которой нет в вашем примере. Также нет кода, не зная, что делается, вам сложно ответить.
Судя по названию переменной $deep
, это, вероятно, не состояние. Состояние в автомате является элементом набора, который является специфическим для автомата; $deep
похоже, что оно может содержать глубину, любое положительное целое число. Опять же, трудно сказать без кода.
В любом случае, вы, вероятно, вообще не «неявно используете» какой-либо автомат, если вы не спроектировали свой код как его реализацию.
Ваши простые xml-подобные файлы, вероятно, могут быть распознаны машиной детерминированного стека или сгенерированы детерминированной грамматикой без контекста, что делает их Тип-2 в иерархии Хомского. Еще раз, это всего лишь предположение, что «XML-подобная сериализованная древовидная структура» слишком расплывчата для любого вида формализма.
Короче говоря, если вы хотите использовать какую-либо формальную теорию, сформулируйте свои вопросы более формально.
Редактировать (увидев код):
Вы строите дерево. Это вне досягаемости для автомата (по крайней мере, «стандартных»). Конечные автоматы работают только с входом и состоянием, стековые машины добавляют к этому стек, а у машин Тьюринга есть лента чтения-записи, которую они могут перемещать в обоих направлениях.
«Выход» автомата - это простое «Да» (принято) или «Нет» (не принято или бесконечный цикл). (Машины Тьюринга могут быть определены, чтобы обеспечить больше вывода на их ленте.)
Лучшее, на что я могу ответить «что является минимальным автоматом для выполнения той же работы», - это то, что ваш язык может быть принят стековой машиной; но это будет работать совсем по-другому и не даст вам деревья.
Однако вы можете взглянуть на грамматики - еще одну формальную языковую конструкцию, которая вводит концепцию деревьев разбора .
Здесь вы создаете такое дерево синтаксического анализа с анализатором сверху вниз.