Скачиваний:
20
Добавлен:
01.05.2014
Размер:
38.4 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

КАФЕДРА МО ЭВМ

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ 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. Левый вывод

(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. Правый вывод:

(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. Левый вывод

(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;

Соседние файлы в папке Лабораторные работы 1-7(старые)