Лабораторные работы 1-7(старые) / Отчет по ТЯП1
.doc
Санкт-Петербургский государственный электротехнический университет |
КАФЕДРА МО ЭВМ ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ N1 по дисциплине "Теория языков программирования"
Преподаватель: Самойленко В.П. студенты гр. 0341 Юбрин А.Н. Шин Е.Д.
Санкт-Петербург 2002
|
Задание: Описать синтаксис описания процедуры в языке Паскаль при условии, что операторы, составляющие тело процедуры, описывать не нужно.
Описание в БНФ:
<Описание процедуры>::=<заголовок процедуры> ; <тело процедуры>;
<заголовок процедуры>::= procedure <идентификатор> <список формальных параметров>
<тело процедуры>::=<блок описания меток>
<блок описания констант>
<блок описания переменных>
<блок описания локальных процедур>
begin
<операторы>
end
<список формальных параметров>::=(<формальные параметры>) |
<формальные параметры>:=<идентификаторы> : <имя типа> |
var <идентификаторы> : <имя типа> |
<формальные параметры> ; <идентификаторы> : <имя типа> |
<формальные параметры> ; var <идентификаторы> : <имя типа>
<блок описания меток>::=label <идентификаторы>; |
<блок описания констант>::=const <описания констант>; |
<описания констант>::=<идентификатор> = <константное выражение>|
<описания констант> ; <идентификатор> = <константное выражение>
<константное выражение>::=<идентификатор> | <число>
<блок описания переменных>::=var <описания переменных> ; |
<описания переменных>::=<идентификаторы> : <имя типа> |
<описания переменных> ; <идентификаторы> : <имя типа>
<блок описания локальных процедур>::=<описание процедуры>|
<блок описания локальных процедур><описание процедуры>|
<операторы>::= | <операторы> ; <оператор присваивания>
<имя типа>::=real | double | … | boolean | <пользовательский тип>
<идентификаторы>::=<идентификатор>|<идентификаторы>,<идентификатор>
<идентификатор>::=<буква>|<идентификатор><буква>|<идентификатор><цифра>
<буква>::=a|A|b|B|c|C|d|D|e|E|f|F|g|G|h|H|i|I|j|J|k|K|l|L|m|M|n|N|o|O|p|P|q|Q|r|R|s|S|t|T|u|U|v|V|w|W|x|X|y|Y|z|Z|_
<число>::=<целое> | <целое>.<дробное>
<целое>::=<цифра> | <число><цифра>
<дробное>::=<цифра> | <число><цифра>
<цифра>::=0|1|2|3|4|5|6|7|8|9