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

Вариант 22.

Написать программу синтаксического анализа автоматного языка операторов начала итерационного цикла языка PL/1,имеющих вид:

DO WHILE (<условие>);

<условие>:: =<выражение>[<сравнение><выражение>]

<выражение>:: =<операнд>[<операция><операнд>]

 ** 

 + 

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

 / 

 * 

 <

 >

<сравнение>:: = <=

 >=

 #

 <константа> 

<операнд>:: = 

 <идентификатор>[(<идентификатор>)|(<константа>)] 

Семантика:

Построить массив идентификаторов и констант и вывести их на печать.

Сообщать об ошибках, если число символов в идентификаторе или константе более 8.

Массив констант должен быть типа WORD.

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

DO WHILE ( ABC );

DO WHILE ( A ( I ) + B (10) >= XX131Y ** 15 );

DO WHILE ( INX / ABC ( IJKLMN ) # B4 / X ( I ) );

DO WHILE ( 15 );

Вариант 23.

Написать программу синтаксического анализа автоматного языка операторов заголовков процедуры языка PL/1,имеющих вид:

PROC

<идентификатор>:[(<список параметров>)][RETURNS(<атрибут>)];

PROCEDURE

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

<список параметров>:: =

 <список параметров>,<идентификатор>

 BIN FIXED 

<атрибут>:: = FLOAT 

 CHARACTER ( K )

Семантика:

Построить и вывести на печать таблицу идентификаторов с указанием номера параметра.

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

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

ABCD10 : PROC;

ABCD20 : PROC ( A );

PRIMER : PROC ( A, B, CD, DEF );

PRIMER1 : PROC ( A, B ) RETURNS ( FLOAT );

PRIMER2 : PROC RETURNS ( BIN FIXED );

PRIMER3 : PROCEDURE ( A, B ) RETURNS ( CHARACTER (20) );

Вариант 24.

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

TYPE <идентификатор>=<простой тип>|<тип массив>|<тип запись>| <тип множество>|<тип указатель>;

<простой тип>::=CARDINAL | INTEGER | REAL | CHAR | BOOLEAN | [ 1..N ] | ( C1,..,C2 )

<тип множество>:: =SET OF <простой тип>

<тип массив>:: =ARRAY <диапазоны> OF<простой тип>

<диапазоны>:: =<диапазон>|<диапазоны>,<диапазон>

<диапазон>:: =[ K1 .. K2 ]

<тип запись>:: =RECORD <идентификатор>[,<идентификатор>]: <простой тип> END

<тип указатель>:: =POINTER TO <простой тип>| POINTER TO<идентификатор>

Семантика:

Сформировать и вывести на печать таблицы идентификаторов и констант. Константы индексов в массиве - INTEGER.

Сообщать об ошибках при дублировании имен, указать размер памяти под тип (CHAR - 1; REAL - 4; INTEGER, CARDINAL - 2 байта).

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

TYPE er = SET OF CARDINAL;

TYPE GF = ARRAY [ 7 .. 78 ], [ 98 .. 566 ] OF CHAR;

TYPE G = POINTER TO gvl;

TYPE gvf = RECORD g : INTEGER, FD : BOOLEAN END;

TYPE FR = [ 1 .. 25 ];

TYPE YGTFRE = ( 6, 3, 2, 4, 1, 980 );