Разбор рекурсивным спуском
Рассмотрим сначала разбор сверху в низ. Исходными данными для такого разбора является входная сентенциальная форма и дерево разбора, содержащее только корень, т.е. выделенный нетерминал. Задача разбора – ,используя правила грамматики построить полное дерево, соответствующее сентенциальной форме. Самый простой, но не самый оптимальный подход, состоит в создании рекурсивной программы, которая каждый раз выполняет подстановку для самого левого нетерминала дерева с использованием первого правила подстановки для этого нетерминала. Дойдя до терминалов, выполняется сравнение полученной части сентенциальной формы дерева с исходной. Если они совпадают, то часть дерева вывода принимается. Если нет, то выполняется рекурсивный шаг назад, и пытаемся подставить второе правило для нетерминала, а если больше правил нет, то выполняется еще шаг назад. Если в результате таких выводов будет построено дерево, соответствующее исходной сентенциальной форме, то исходная цепочка считается правильной и синтаксический анализ завершенным. Если дерево построить не удалось, то исходная цепочка отвергается.
Разумеется, такая процедура будет работать только для правой грамматики, т.к. левая зациклится.
Продолжить читать "Разбор рекурсивным спуском"