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

Вариант 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);