МП-автомат строит левосторонние выводы и читает цепочку входных символов слева
направо, поэтому построение дерева вывода идет сверху вниз – нисходящий распознаватель с возвратом.
Недостаток алгоритма нисходящего разбора с возвратами – значительная временная емкость, так как имеется экспоненциальная зависимость необходимых для работы алгоритма вычислительных ресурсов от длины входной цепочки.
Преимущества данного алгоритма:
простота реализации – практически его использовать только тогда, когда известно, что длина исходной цепочки символов заведомо не будет большой (не больше нескольких десятков символов), для реальных же компиляторов такое условие невыполнимо, но для некоторых небольших распознавателей вполне допустимо, и здесь данный алгоритм разбора может найти применение благодаря своей простоте;
универсальность – на его основе можно распознавать входные цепочки языка, заданного любой КС-грамматикой, достаточно лишь привести ее к нелеворекурсивному виду (можно сделать с любой КС-грамматикой).
Сам по себе алгоритм разбора с подбором альтернатив,
использующий возвраты, не находит применения
в реальных компиляторах, но его основные принципы
лежат в основе многих нисходящих распознавателей,
строящих левосторонние выводы и
работающих без использования возвратов.
Этот алгоритм может быть напрямую использован для построения распознавателей, но исходная грамматика не должна быть леворекурсивной.
Символ A∈VN в КС-грамматике G(VT, VN, P, S)
называется рекурсивным, если для него существует
цепочка вывода вида А⇒+αАβ, где α, β∈(VT∪VN)*:
если α=λ и β≠λ, то рекурсия называется левой, а грамматика G – леворекурсивной;
если α≠λ и β=λ, то рекурсия называется правой, а грамматика G – праворекурсивной;
если α=λ и β=λ, то рекурсия представляет собой цикл.