Написать программу синтаксического анализа автоматного языка операторов присоединения языка 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 ];