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

Вариант 5.

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

WHILE <условие>DO<оператор присваивания>;

<условие>:: =<отношение>(<отношение>)(<отношение>)<логическая операция>(<отношение>)

<отношение>:: =<операнд><операция отношения><операнд>

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

 <

 >

<операция отношения>:: = <=

 >=

 =

 <>

 AND

<логическая операция>:: = OR

 XOR

<оператор присваивания>:: =<идентификатор>:= <операнд><арифметическая операция><операнд>

 + 

 - 

<арифметическая операция>:: = / 

 * 

 div 

 mod 

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

<константа>- целое число в диапазоне -32768+32767, либо число с фиксированной точкой, не должно быть незначащих нулей.

Семантика:

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

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

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

WHILE _AB DO L := 12.03;

WHILE ( N ) DO _A_B := -18.1 + A;

WHILE ( A = B ) AND ( C <> D ) DO E := F div G;

WHILE ( A ) OR ( BNK < -0.3 ) DO _N := 15 mod 0.2;

Вариант 6.

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

REPEAT <оператор присваивания> UNTIL<условие>;

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

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

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

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

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

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

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

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

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

 + 

 - 

<операция арифметическая>:: = / 

 * 

 div 

 mod 

<условие>:: =<отношение>(<отношение>)(<отношение>)<логическая операция>(<отношение>)

<отношение>:: =<операнд><операция отношения><операнд>

 <

 >

<операция отношения>:: = <=

 >=

 =

 <>

 AND

<логическая операция>:: = OR

 XOR

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

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

<константа любая>- целое число или число с фиксированной точкой, не должно быть незначащих нулей.

Семантика:

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

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

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

REPEAT A[ I ] := B + C UNTIL D;

REPEAT _A_B := 12.3 - CL UNTIL ( _M_K );

REPEAT A_N := -12.001 UNTIL ( A = B ) OR ( C = 18.3 );