Лабораторные работы 1-7(старые) / Отчет по ТЯП1_1
.doc
Санкт-Петербургский государственный электротехнический университет |
КАФЕДРА МО ЭВМ ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ N1 по дисциплине "Теория языков программирования"
Преподаватель: Самойленко В.П. студенты гр. 0341 Юбрин А.Н. Шин Е.Д.
Санкт-Петербург 2002
|
Задание: Описать синтаксис описания процедуры в языке Паскаль при условии, что операторы, составляющие тело процедуры, описывать не нужно.
Описание в БНФ:
<Описание процедуры>::=<заголовок процедуры> ; <тело процедуры>;
<заголовок процедуры>::= procedure <id> <список формальных параметров>
<тело процедуры>::=<блок описания меток>
<блок описания констант>
<блок описания переменных>
<блок описания локальных процедур>
begin
<операторы>
end
<список формальных параметров>::=(<формальные параметры>) |
<формальные параметры>:=<ids> : <имя типа> |
var <ids> : <имя типа> |
<формальные параметры> ; <ids> : <имя типа> |
<формальные параметры> ; var <ids> : <имя типа>
<блок описания меток>::=label <ids>; |
<блок описания констант>::=const <описания констант>; |
<описания констант>::=id = <константное выражение>|
<описания констант> ; id = <константное выражение>
<константное выражение>::= id | число
<блок описания переменных>::=var <описания переменных> ; |
<описания переменных>::=<ids> : <имя типа> |
<описания переменных> ; <ids> : <имя типа>
<блок описания локальных процедур>::=<описание процедуры>|
<блок описания локальных процедур><описание процедуры>|
<операторы>::= | <операторы> ; <оператор присваивания>
<имя типа>::=id
<ids>::=id | <ids>,id
G= <T,N,S,R>
S - <описание процедуры>
T={procedure, begin, end, id, var, label, const, число, =, , , ; , : , (, ), оператор присваивания}
N={S, A, B, C, D, E, F, H, I, L, M, N, ids, ce}
R={
(1) S A ; B ;
(2) A procedure id C
(3) B D E F H begin I end
(4) C ( L )
(5) C
(6) D label ids ;
(7) D
(8) E const M ;
(9) E
(10) F var N ;
(11) F
(12) H S
(13) H H S
(14) H
(15) I
(16) I I ; оператор присваивания
(17) L ids : id
(18) L var L
(19) L L ; L
(20) M id = ce
(21) M M ; M
(22) N ids : id
(23) N N ; N
(24) ids id
(25) ids ids , id
(26) ce id
(27) ce число
Разбор выражения 1:
Procedure id ;
Label id;
Var id, id : id;
Begin
End;
-
Левый вывод
(1) (2) (5) (3)
S A ; B ; procedure id C ; B ; procedure id; B ; procedure id; D E F H begin I end;
(6) (24)
procedure id; label ids; E F H begin I end; procedure id; label id; E F H begin I end;
(9) (10)
procedure id; label id; F H begin I end; procedure id; label id; var N; H begin I end;
(22)
procedure id; label id; var ids : id; H begin I end;
(25)
procedure id; label id; var ids, id : id; H begin I end;
(24)
procedure id; label id; var id, id : id; H begin I end;
(14)
procedure id; label id; var id, id : id; begin I end;
(15)
procedure id; label id; var id, id : id; begin end;
Результат:
procedure id;
label id;
var id, id : id;
begin
end;
-
Правый вывод:
(1) (3) (15)
S A ; B ; A ; D E F H begin I end; A ; D E F H begin end;
(14) (10) (22)
A ; D E F begin end; A ; D E var N begin end; A ; D E var ids : id ; begin end;
(25) (24)
A ; D E var ids , id : id ; begin end; A ; D E var id , id : id ; begin end;
(9) (6)
A ; D var id , id : id ; begin end; A ; label ids; var id, id : id ; begin end;
(24) (2)
A ; label id; var id, id : id ; begin end; procedure id C ; label id; var id, id : id; begin end;
(5)
procedure id; label id; var id, id : id; begin end;
Разбор выражения 2:
Procedure id (var id : id; id, id : id);
Begin
End;
-
Левый вывод
(1) (2) (4) (19)
S A ; B ; procedure id C ; B ; procedure id ( L ); B ; procedure id ( L ; L ); B ;
(18) (17)
procedure id ( var L ; L ); B ; procedure id ( var ids : id ; L ); B ;
(24) (17)
procedure id ( var id : id ; L ); B ; procedure id ( var id : id ; ids : id ); B ;
(25) (24)
procedure id ( var id : id ; ids, id : id ); B ; procedure id ( var id : id ; id , id : id ); B ;
(3)
procedure id ( var id : id ; id , id : id ); D E F H begin I end;
(7)
procedure id ( var id : id ; id , id : id ); E F H begin I end;
(9)
procedure id ( var id : id ; id , id : id ); F H begin I end;
(11)
procedure id ( var id : id ; id , id : id ); H begin I end;
(14)
procedure id ( var id : id ; id , id : id ); begin I end;
(15)
procedure id ( var id : id ; id , id : id ); begin end;
Результат:
procedure id ( var id : id ; id , id : id );
begin
end;
4. Правый вывод:
(1) (3) (15)
S A ; B ; A ; D E F H begin I end; A ; D E F H begin end;
(14) (11) (9) (7)
A ; D E F begin end; A ; D E begin end; A ; D begin end; A ; begin end;
(2) (4) (19)
procedure id C; begin end; procedure id ( L ); begin end; procedure id ( L ; L ); begin end;
(17) (25)
procedure id ( L; ids : id ); begin end; procedure id ( L ; ids , id : id ); begin end;
(24) (18)
procedure id ( L, id , id : id ); begin end; procedure id ( var L ; id, id : id ); begin end;
(17)
procedure id (var ids : id ; id, id : id ); begin end;
(24)
procedure id (var id : id ; id, id : id ); begin end;