Основы разработки трансляторов в САПР. Коробова И.Л - 13 стр.

UptoLike

begin
BP:=false;
if t = ид или t = конст then
begin
BP:=true;
Перейти к следующей лексеме;
end {if ид или конст}
else
if t = ( then begin
Перейти к следующей лексеме;
if <арифметическое выражение> завершилось успешно then
if t = ) then
begin
BP:=true;
Перейти к следующей лексеме;
end; {if )}
end; {if (}
if BP = true then успешное завершение
else неудачное завершение;
end;
Графически разбор этого предложения методом рекурсивного спуска выглядит так:
1. Вызывается процедура <присваивание>, которая обнаружила лексемы ид и := во входном по-
токе (рис. 5, а).
2. Процедура < присваивание > вызывает процедуру <арифметическое выражение> (рис. 5, б)
3. Процедура <арифметическое выражение> вызывает процедуру <слагаемое> (рис. 6, а).
4. Процедура <слагаемое>. вызывает процедуру <значение>, которая обнаруживает лексему ид.
Управление возвращается в процедуру <слагаемое> (рис. 6, б).
5. Процедура <слагаемое> обнаруживает лексему div и вызывает процедуру <значение>, которая
обнаруживает лексему конст. и передает управление в процедуру <слагаемое>, которая передает управ-
ление в процедуру <арифметическое выражение> (рис. 7, a).
присваивание присваивание
ид :=
rez
ид :=
rez
арифметическое
выражение
а)
б)
Рис. 5