- •Лабораторная работа.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •Вариант 13.
- •Вариант 14.
- •Вариант 15.
- •Вариант 16.
- •Вариант 17.
- •Вариант 18.
- •Вариант 19.
- •Вариант 20.
- •Вариант 21.
- •Вариант 22.
- •Вариант 23.
- •Вариант 24.
- •Вариант 25.
Вариант 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 );