ВУЗ:
Составители:
Пример -
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
- …
- следующая ›
- последняя »
