Разработка компиляторов. Ишакова Е.Н. - 19 стр.

UptoLike

Составители: 

19
CS:=H
end
end
;
N
: if digit then
begin
B
:=10*B+ord(CH)-ord(‘0’);
gc
end
else begin
put
(TN);
out
(3,z); CS:=H
end
;
C
: if CH=’}’ then begin
gc
; CS:=H
end
else if CH
=’.’ then CS:=ER else gc;
DV
: if CH=’=’ then begin
gc
; out(2,5);
CS
:=H
end
else begin
out
(2,4); CS:=H
end
;
O
: begin
null
; add; look(TL);
if z
<>0 then begin
gc
; out(2,z);
CS
:=H
end
else CS
:=ER
end
end
{case}
until
(CS=V) or (CS=ER);
scanner
:= CS=V
end
;
2.4 Синтаксический анализатор программы
Задача синтаксического анализатора (СиА) - провести разбор текста про-
граммы, сопоставив его с эталоном, данным в описании языка. Для синтаксиче-
ского разбора используются контекстно-свободные грамматики (КС-
грамматики).
Один из эффективных методов синтаксического анализаметод рекур-
сивного спуска. В основе метода рекурсивного спуска лежит левосторонний
разбор строки языка. Исходной сентенциальной формой является начальный
                                CS:=H
                             end
                       end;
               N: if digit then
                       begin
                           B:=10*B+ord(CH)-ord(‘0’);
                           gc
                       end
                  else begin
                           put(TN);
                           out(3,z); CS:=H
                         end;
               C: if CH=’}’ then begin
                                        gc; CS:=H
                                     end
                  else if CH=’.’ then CS:=ER else gc;
               DV: if CH=’=’ then begin
                                         gc; out(2,5);
                                         CS:=H
                                      end
                     else begin
                              out(2,4); CS:=H
                           end;
               O: begin
                       null; add; look(TL);
                       if z<>0 then begin
                                        gc; out(2,z);
                                        CS:=H
                                      end
                       else CS:=ER
                  end
           end {case}
        until (CS=V) or (CS=ER);
        scanner:= CS=V
     end;

     2.4 Синтаксический анализатор программы

     Задача синтаксического анализатора (СиА) - провести разбор текста про-
граммы, сопоставив его с эталоном, данным в описании языка. Для синтаксиче-
ского разбора используются контекстно-свободные грамматики (КС-
грамматики).
     Один из эффективных методов синтаксического анализа – метод рекур-
сивного спуска. В основе метода рекурсивного спуска лежит левосторонний
разбор строки языка. Исходной сентенциальной формой является начальный
                                                                         19