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

Вариант 16.

Написать программу синтаксического анализа автоматного языка операторов формата (ограниченного) языка Fortran - 77, имеющих вид:

FORMAT (<список элементов>)

 <элемент>

<список элементов>:: =

<список элементов>,<элемент>

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

 ’текст

<элемент>:: =/

I<константа>

F<константа 1>.<константа 2> 

<константа>,<константа 1>,<константа 2>- константы;

Семантика:

Сообщать об ошибках, если текст более 50 символов, знаков перевода строки не превышает 3 и <константа 1>больше<константа 2>+ 2.

Осуществить вывод на печать по заданному формату:

/- переход на новую строку;

’текст- текст;

X- обозначить подчеркиванием (провалы);

F - знак числа;

I- целые цифры.

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

FORMAT ( 2X, ‘ALMN’, 12X, F10.4, ///, ‘lm’, /, I6)

Результат будет выглядеть следующим образом:

_ _ A L M N_ _ _ _ _ _ _ _ _ _ _ _F I I I I.I I I I

l m

F I I I I I

Вариант 17.

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

FOR<параметр>:=<начальные значения>TO<конечные значения>[BY<шаг>]DO

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

<список индексов>:: =<индекс>|<список индексов>,<индекс>

<индекс>:: =<идентификатор>|<константа целая>

<начальные значения>:: =<константа целая>

<конечные значения>:: =<константа целая>

<шаг>:: =<константа целая>

<идентификатор>- идентификатор не может быть зарезервированным словом (FOR, TO, BY, DO), не допускать дублирование идентификаторов.

Семантика:

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

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

Определить сколько раз выполняется цикл.

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

FOR I := 10 TO 20 BY 2 DO

FOR ABC1D [ I, 25, J, 75 ] := -100 TO -120 BY 5 DO

FOR A3 := 1 TO 200 DO

Вариант 18.

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

IF<условие>THEN<присваивание>

ELSIF<условие>THEN<присваивание>

ELSE<присваивание>END

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

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

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

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

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

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

 & 

 OR 

 NOT 

 AND 

 #|<> 

<условная операция>:: = < 

 > 

 <= 

 >= 

 = 

 ~ 

<идентификатор>(<идентификатор>)|(<константа целая>)

<правая часть>:: =

 <константа любая>

<идентификатор>- идентификатор должен быть не более 8 символов;

<константа любая>- целое число в диапазоне -32768+32767, либо число с фиксированной точкой.

Семантика:

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

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

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

  1. IF R1 THEN S1 := G

ELSIF R2 < 0 THEN D [10] := GFD [ I ]

ELSIF R6 = R5 THEN S4 := 15.3

ELSE GF := DCSX15

END;

  1. IF X = 0 THEN S := 0 END;

  2. IF K > 10 THEN F := 500E - 3 ELSE h := f END;