Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТФЯГ задания.DOC
Скачиваний:
15
Добавлен:
16.03.2015
Размер:
195.07 Кб
Скачать

Вариант 7.

Написать программу синтаксического анализа автоматного языка операторов описания констант языкаTurbo Pascal, имеющего вид:

CONST<описание>;

 <идентификатор>=<выражение>

<описание>:: =

<идентификатор>:<тип>=<значение>

<выражение>:: =<операнд><операнд><операция><операнд><текст>

<операнд>:: =<идентификатор><константа>

 + 

 - 

<операция >:: = /

 * 

 div 

 mod 

<тип>:: =STRINGWORDREALINTEGERCHAR

<значение>:: =<текст><константа>

<идентификатор>- идентификатор языкаTurbo Pascal, начинается с буквы или знака подчеркивания, включает буквы, цифры, подчеркивание, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (CONST, STRING, WORD, REAL, INTEGER, CHAR, DIV, MOD);

<константа >- целое число или число с фиксированной точкой.

Семантика:

Сформировать и вывести на печать таблицы идентификаторов и констант. Учесть перечисленные выше ограничения на идентификаторы и константы.

Для простых типизированных констант проверить правильность <значения>(соответствие типу, т.е. дляSTRING, CHAR-<текст>, дляWORD, INTEGER- целая константа, дляREAL- числа с фиксированной точкой.

Сообщать об ошибках при анализе цепочек языка, указывая курсором место ошибки и ее содержание.

Примеры правильных цепочек:

CONST A = ‘описание’;

CONST V : WORD = 1998;

CONST _min : REAL = 0.01;

CONST B_C = L + 12;

Вариант 8.

Написать программу синтаксического анализа автоматного языка операторов выбора языкаTurbo Pascal, имеющего вид:

CASE <идентификатор>OF <список выбора>[ELSE <оператор присваивания>] END;

<список выбора>:: =<константа выбора>[,<константа выбора>]:<оператор присваи-вания>;[<константа выбора>[,<константа выбора>]:<оператор присваивания>;]

<константа выбора>:: =<текст><константа любая>

<оператор присваивания>:: =<левая часть>:=<правая часть>

<правая часть>:: =<операнд>[<операция><операнд>]

 <идентификатор>

<операнд>:: =<идентификатор><идентификатор><константа

<целая константа> любая>

<идентификатор>

<левая часть>:: =<константа целая>

<идентификатор>

 <идентификатор>

 + 

 - 

<операция>:: = / 

 * 

 div 

 mod 

<идентификатор>- идентификатор языкаTurbo Pascal, начинается с буквы или знака подчеркивания, включает буквы, цифры, подчеркивание, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (CASE, OF, ELSE, END, DIV, MOD);

<константа>- целое число в диапазоне -32768+32767.

<константа любая>- целое число,число с фиксированной точкой, число с плавающей точкой.

Семантика:

Построить и вывести на печать таблицы идентификаторов и констант. Учесть перечисленные выше ограничения на идентификаторы и константы.

Сообщать об ошибках при анализе цепочек языка, указывая курсором место ошибки и ее содержание.

Не должно быть дублирования идентификаторов.

Примеры правильных цепочек:

case _oper of ‘A’, ‘B’ : C := x + y; ‘L’ : Z := x / y; end;

case A_B of 12 : A = 14.3 + C; 13 : B := 0.3 end;

case prim of 14.3 : A [-1] := _A_L; else C := 8.3E - 3 end;