ВУЗ:
Составители:
Пример -
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
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »