Методические указания к лабораторным работам по курсу "Теория вычислительных процессов и структур". Домашова Д.В - 11 стр.

UptoLike

Пример -
program var k,sum :int; begin k:=0;
TI
(1,1)(1,2)(4,1)(2,3)(4,2)(2,4)(1,3)(2,2)(1,5) (4,1)(2,5)(3.1)(2,2)
function scanner: boolean;
var CS: (H,I,N,C,DV,O,V.ER);
TN
begin GC;CS:=H;
0
1
2
1
su
m
K
repeat
case CS of
H:if CH:=:` ` then GC else
If let then begin NULL;ADD;GC;CS:=:I end else
If digit then begin B:=ord(CH)-ord(10);
GC; CS:= N end else
If CH= `:` then begin GC;CS:=:d end else
If CH=`.` then begin OUT (2,1); CS:=V end else CS:=0;
I:if let or digit then begin ADD;GС end else begin LOOK (TW)
If Z<>0 then begin OUT(l,z); CS:=H end else begin PUT(TI);
OUT(4,z);CS:=Hend end;
N:if dogit then begin B:=10*B+ord(CH)-ord('O');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;
Лексемы можно записать с помощью регулярных грамматик (N::=t,
N::=Mt)
I::=a|b|…|z|Ia|Ib|…|Iz|I0\I1|…|I9
Пусть l-любая буква, d-любая цифра:
I::=l|Il|Id P-грамматика
N::=d|Nd
Лексический анализпрограмма разбора по Р-грамматике. Задача
разбора- обратная задаче порождения (дана цепочканайти вывод )
14
        Пример -
        program var k,sum :int; begin k:=0;
        (1,1)(1,2)(4,1)(2,3)(4,2)(2,4)(1,3)(2,2)(1,5) (4,1)(2,5)(3.1)(2,2)   TI
                                                                         1   K
       function scanner: boolean;                                        2
                                                                             sum
       var CS: (H,I,N,C,DV,O,V.ER);
                                                                             TN
        begin GC;CS:=H;
        repeat                                                      1         0
       case CS of
       H:if CH:=:` ` then GC else
        If let then begin NULL;ADD;GC;CS:=:I end else
         If digit then begin B:=ord(CH)-ord(10);
                                     GC; CS:= N end else
        If CH= `:` then begin GC;CS:=:d end else
         If CH=`.` then begin OUT (2,1); CS:=V end else CS:=0;
        I:if let or digit then begin ADD;GС end else begin LOOK (TW)
          If Z<>0 then begin OUT(l,z); CS:=H end else begin PUT(TI);
                                            OUT(4,z);CS:=Hend end;
        N:if dogit then begin B:=10*B+ord(CH)-ord('O');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;

     Лексемы можно записать с помощью регулярных грамматик (N::=t,
N::=Mt)
     I::=a|b|…|z|Ia|Ib|…|Iz|I0\I1|…|I9
     Пусть l-любая буква, d-любая цифра:
     I::=l|Il|Id       P-грамматика
     N::=d|Nd
     Лексический анализ – программа разбора по Р-грамматике. Задача
разбора- обратная задаче порождения (дана цепочка – найти вывод )




14