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


этого не делается, так что анализ ошибки откладывается на процедуру, вызвавшую A.
void A(){ // A

if (InSym

if (parse(ui))
result("A

else error();
else
//Вариант 1:
if (имеется правило A

такое, что ui

//Вариант 1.1
if (InSym

result("A

else error();
//Конец варианта 1.1
//Вариант 1.2:
result("A

//Конец варианта 1.2
//Конец варианта 1
//Вариант 2:
if (нет правила A


error();
//Конец варианта 2
}
boolean parse(u){ // из u не выводится e!
v = u;
while (v

if (X - терминал a)
if (InSym

return(false);
else InSym = getInsym();
else // X - нетерминал B
B();
v = z;
}
return(true);
}