- •Лабораторная работа.
- •Вариант 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.
Вариант 19.
Написать программу синтаксического анализа автоматного языка операторов присваивания языка Modula-2,имеющих вид:
<левая часть>:=<правая часть>;
<левая часть>:: =<идентификатор>|<идентификатор>[<список индексов>]
<список индексов>:: =<индекс>|<список индексов>,<индекс>
<индекс>:: =<идентификатор>|<константа>
<правая часть>:: =<левая часть>|<левая часть><операция><правая часть>
<операция>:: = + | - | / | * | MOD | DIV | > | < | = | # | <= | >=
Семантика:
Построить таблицы идентификаторов и констант.
Сообщать об ошибках, если число символов идентификатора более 8 символов, а число цифр константы более 5.
Не допускать переполнения константы при преобразовании, сообщать об этом (максимальное число в константе 32767).
Примеры правильных цепочек:
ABC [ 1, I, LF, 25 ] := ABC + 135 - LF * DKL1 / ZP MOD KP;
ASDE := Tgfr [ 1, 2, 7 ] > DK [ Y, I ] + 135 / 987;
Вариант 20.
Написать программу синтаксического анализа автоматного языка операторов формата PL/1,имеющих вид:
FORMAT (<список элементов>);
<элемент>
<список элементов>:: =
<список элементов>,<элемент>
X ( K )
A ( K )
<элемент>:: =SKIP [( K )]
F ( K [, K ] )
E ( K, K )
Семантика:
Сообщать об ошибках, если A > 50, вSKIP K > 3, в FиEпервое число более 33, в Е - второе больше 3.
Осуществить вывод на печать по заданному формату:
SKIP- переход на новую строку;
Х - обозначить подчеркиванием или знаком ‘-’;
А - символом А;
З - знак числа;
Ц - цифры мантиссы;
У - цифры порядка.
Примеры правильных цепочек:
FORMAT ( X (10), A (5), X (2), F (10,4), X (2), E (10,3), SKIP (2), A (10), SKIP, F (5) );
В результате получается следующее:
_ _ _ _ _ _ _ _ _ _ ААААА _ _ ЗЦЦЦЦ.ЦЦЦЦ _ _ ЗЦЦЦЦЦЕЗУУ
АААААААААА
ЗЦЦЦЦ
Вариант 21.
Построить синтаксический анализатор автоматного языка операторов описания языка PL/1,имеющих вид:
DCL
<список описаний>;
DECLARE
<описание>
<список описаний>:: =
<список описаний>,<описание>
<переменная>
<описание>:: =<переменная><атрибут>
(<список переменных>)<атрибут>
<переменная>
<список переменных>:: =
<список переменных>,<переменная>
<идентификатор>
<переменная>:: =
<идентификатор>(<список размерностей>)
<размерность>
<список размерностей>:: =
<список размерностей>,<размерность>
<константа>
<размерность>:: =
<константа 1>:<константа 2>
BIN FIXED
<атрибут>:: = FLOAT
CHAR ( K )
BIN FIXED - целый тип;
FLOAT- действительный тип;
CHAR ( K )- символьный тип (строка).
Семантика:
Сообщать об ошибках, если длина идентификатора более 8 символов; <константа 1>должна быть больше<константы 2>.
Построить и вывести на печать таблицу переменных с указанием типа и объема памяти под переменную.
По умолчанию идентификатор, начинающийся с I, J, K, L, M, N - BIN FIXED ( BIN FIXED - 2байта,FLOAT - 4 байта, CHAR (1) - 1 байт).
Примеры правильных цепочек:
DCL A, B, C, D FLOAT, E BIN FIXED, TEXT CHAR (100);
DECLARE ( AB1, CD2E ) BIN FIXED, ( EF (-1:10), LN (3:15, 2 :21) ) FLOAT;
DCL A (100), B (1:15, -5:5) CHAR (15), (V, K, L ) CHAR (15);