692
ГЛАВА 11. МЕТОДЫ, ОСНОВАННЫЕ НА РЕКУРСИИ
индекс для понимания не представляет интереса, то он опускается. В некото-
рых примерах ряд непосредственных промежуточных порождений, не прин-
ципиальных для понимания, опускается. Эта ситуация отмечается символом
“*” после “⇒”.
11.6.2. Метод рекурсивного спуска
Алгоритм синтаксического анализа, который используется в предлагае-
мой программе для распознавания принадлежности строк к языку, задавае-
мому грамматикой, основывается на методе рекурсивного спуска. Суть мето-
да состоит в моделировании вывода анализируемой строки путем выдвиже-
ния и проверки гипотез о применении в ходе вывода тех или иных правил.Ка-
ждому правилу грамматики сопоставляется (рекурсивная) подпрограмма —
процедура или функция, которая способна распознавать свойство выводи-
мости части входной строки из данного правила. Эти подпрограммы орга-
низуют синхронное перемещение по правым частям правил грамматики и
входному потоку символов. В ходе такого перемещения возможно либо срав-
нение входного символа с символом из правила, либо проверка гипотезы о
выводимости очередной части строки из некоторого (нового,не являющегося
текущим) правила. В первом случае, когда сравнение успешно, происходит
продвижению по входной строке слева направо, а когда оно не успешно —
отвержение текущей гипотезы и возврат к подпрограмме правила, которая
вызвала исполняемую в данный момент подпрограмму.
Для произвольной грамматики метод рекурсивного спуска требует, во-
обще говоря, возвратов анализа к уже прочитанной части строки. Но, если
грамматика удовлетворяет некоторым условиям, то возможен безвозвратный
анализ. Приведенная грамматика не удовлетворяет этим условиям.
Мы специально выбрали такое представление грамматики, которое тре-
бует преобразования, приспосабливающего ее к безвозвратной схеме анали-
за, чтобы продемонстрировать достаточно типичный метод. Ради этого мы
даже пожертвовали соответствием конкретного синтаксиса правилам вычи-
слений выражений. К слову сказать, представленное ниже преобразование
вернет новой грамматике это полезное свойство.
7
При модификации грамматики варианты правил переписываются в ви-
де так называемых регулярных выражений, которые образуются из исход-
7
Обсуждение вопросов, связанных с преобразованием сложно структурированных данных
см. в главе, посвященной сентенциальным методам.