- •Лабораторная работа.
- •Вариант 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.
Вариант 9.
Написать программу синтаксического анализа автоматного языка операторов присоединения языкаTurbo Pascal, имеющего вид:
WITH <переменная>DO <оператор присваивания>;
<переменная>:: =<идентификатор>[,<идентификатор>]<идентификатор>.<иден-тификатор>
<оператор присваивания>:: =<левая часть>:=<правая часть>
[<идентификатор>]
<левая часть>:: =<идентификатор>
[<целая константа>]
<правая часть>:: =<оператор>[<операция><оператор>]
[<идентификатор>]
<оператор>:: =<идентификатор> <константа
[<константа целая>] любая>
+
-
<операция>:: = /
*
div
mod
<идентификатор>- идентификатор языкаTurbo Pascal, начинается с буквы или знака подчеркивания, включает буквы, цифры, не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (WITH, DO, DIV, MOD);
<константа целая>- целое число в диапазоне -32768+32767.
<константа любая>- целое число,число с фиксированной точкой, число с плавающей точкой.
Семантика:
Построить таблицу идентификаторов и констант. Учесть перечисленные выше ограничения на идентификаторы и константы.
Сообщать об ошибках при анализе цепочек языка, указывая курсором место ошибки и ее содержание.
Примеры правильных цепочек:
WITH A DO B := 13.3E - 10;
WITH A, B DO C := ‘текст’;
WITH A.D DO L := 18.1 + D;
WITH A.D, C.M DO _A_N [-3] := 3E + 2 - _D1 [ I ];
Вариант 10.
Написать программу синтаксического анализа автоматного языка операторов описания файлов языкаTurbo Pascal, имеющего вид:
VAR<идентификатор переменной>:<описание файла>;
<описание файла>:: =FILE OF<идентификатор> FILE OF<тип>TEXTFILE<иденти-фикатор типа>
<тип>:: =CHARSTRING[[<целая константа>]]INTEGERREALDOUBLESINGLEBYTE
<идентификатор>- идентификатор языкаTurbo Pascal, начинается с буквы или знака подчеркивания, включает совокупность букв, цифр, подчеркиваний; не допускает пробелы и специальные символы, ввести ограничение на длину (не более 8 символов) и не может быть зарезервированным словом (VAR, FILE OF, TEXT, FILE, CHAR, STRING, DOUBLE, SINGLE, BYTE, REAL, INTEGER);
<целая константа>- число в диапазоне 0255;
Семантика:
Построить и вывести на печать таблицу идентификаторов и констант. Учесть перечисленные выше ограничения на идентификаторы и константы. Не допускать совпадение идентификаторов типа и переменной.
Сообщать об ошибках при анализе, указывая курсором место возникновения ошибки и ее содержание.
Примеры правильных цепочек:
VAR name : file of char;
VAR _A_B : file of mytype;
VAR _A_C : TEXT;
VAR C12 : file of STRING [10];
VAR D : myfile;