- •Лабораторная работа.
- •Вариант 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.
Вариант 11.
Написать программу синтаксического анализа автоматного языка операторов описания заголовков процедур и функций языкаTurbo Pascal, имеющего вид:
PROCEDURE <идентификатор>[(<список формальных параметров>)];
FUNCTION <идентификатор>[(<список формальных параметров>)]:<тип>;
<список формальных параметров> :: = <описание>[;<список формальных параметров>]
<описание>:: =[VAR]<список идентификаторов>:<тип>
<список идентификаторов>:: =<идентификатор>[,<список идентификаторов>]
<тип>:: =REALINTEGERCHARBYTEDOUBLESTRINGBOOLEAN
<идентификатор>- идентификатор языкаTurbo Pascal, начинается с буквы или знака подчеркивания, включает совокупность букв, цифр; не допускает использование пробелов и специальных символов, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (PROCEDURE, FUNCTION, VAR, REAL, INTEGER, CHAR, BYTE, DOUBLE, STRING, BOOLEAN).
Семантика:
Построить таблицу идентификаторов с указанием типа и объема памяти под переменную. Учесть ограничения на идентификаторы.
Сообщать об ошибках в случае дублирования идентификаторов. Указывать курсором место ошибки при анализе и ее содержание.
Примеры правильных цепочек:
PROCEDURE _CA_B;
PROCEDURE SUBSTR ( S : CHAR; I : INTEGER );
PROCEDURE IM1 ( A, B : BOOLEAN; VAR C, D : DOUBLE );
FUNCTION IM2 : REAL;
FUNCTION IM3 ( E, F : BYTE; G : STRING ) : INTEGER;
Вариант 12.
Написать программу синтаксического анализа автоматного языка вызова процедур языкаFortran - 77;цепочки языка имеют вид:
CALL <идентификатор><список фактических параметров>
<список фактических параметров>:: =<параметр>[,<список фактических параметров>]
<константа любая>
<параметр>:: =<константа целая>
<идентификатор>
<идентификатор>
<идентификатор>- идентификатор, начинается с буквы, включает последовательность букв, цифр, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (CALL, FORMAT, FOR, TO);
<константа целая>- целое число в диапазоне1+32767;
<константа любая>- целое число в диапазоне -32768+32767,число с фиксированной точкой, число с плавающей точкой. Число цифр порядка2.
Семантика:
Построить таблицу идентификаторов и констант с указанием номера параметра. Учесть перечисленные выше ограничения на идентификаторы и константы. Не допускать дублирование идентификаторов.
Сообщать об ошибках при анализе, указывая курсором место ошибки и ее содержание.
Примеры правильных цепочек:
CALL SINUS
CALL PRIMER1 ( ABC, 3.14, 0.25E4, 15 )
CALL PRIMER2 ( A ( B ), C ( 35 ), 34E - 2, AB ( KB ) )
Вариант 13.
Написать программу синтаксического анализа автоматного языка операторов цикла языкаQBasic, имеющих вид:
FOR <идентификатор счетчика>=<константа 1>TO<константа 2>STEP<шаг>
<оператор присваивания>
EXIT FOR
NEXT <идентификатор счетчика>
<оператор присваивания>:: =<идентификатор>=<константа>
<шаг>- целое число;
<константа 1>,<константа 2>,<константа>- целое число;
<идентификатор>- идентификатор, начинается с буквы, включает буквы, цифры, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (FOR, TO, STEP, EXIT, NEXT).
Семантика:
Построить таблицу идентификаторов и констант. Подсчитать число раз выполнения цикла (если это возможно). Учесть перечисленные выше ограничения на идентификаторы и константы. Не допускать дублирование идентификаторов.
Сообщать об ошибках при анализе, указывая курсором место ошибки и ее содержание.
Примеры правильных цепочек:
FOR I =1 TO 10 STEP 2
A = 18
NEXT I
2. FOR J12 = 85 TO 100
B = -386
EXIT FOR
NEXT J12
3. FOR BL = 30 TO 1 STEP -3
Z8 = 0
NEXT BL