ign="justify"> АР_VAR - стан розпізнавання змінної;
AP_CONST - стан розпізнавання Константи;
AP_D01, AP_D02 - стани посимвольного АНАЛІЗУ ключового слова do;
AP_SIGN - стан, что передбачає можлівість вживании оператора інкрементування;
AP_LT - стан, что передбачає можлівість вживании оператора «Не дорівнює»;
AP_FIN - стан кінця вирази;
AP_ERR - стан помилки.
У разі удовольствие умів Певного порядку слідування сімволів, автомат переходити в чітко візначені стани, что дозволяють нам розпізнаті лексему (оголошені в Модулі LexType).
Пріведемо список Даних станів:
LEX_PROG - Ключове слово prog;
LEX_FIN - Ключове слово end.;
LEX_SEMI - символ «;»;
LEX_IF - Ключове слово if;
LEX_OPEN - Відкрита дужка;
LEX_CLOSE - закрита дужка;
LEX_ELSE - Ключове слово else;
LEX_BEGIN - Ключове слово begin;
LEX_END - Ключове слово end;
LEX_WHILE - Ключове слово while;
LEX_DO - Ключове слово do;
LEX_VAR - змінна;
LEX_CONST - константа;
LEX_ASSIGN - прісвоєння;
LEX_OR Ключове слово or;
LEX_XOR - Ключове слово хог;
LEX_AND - Ключове слово and; _LT - «менше»; _GT - «больше»; _EQ - «рівне»; _NEQ - «нерівне»; _NOT - Ключове слово not; _SUB -віднімання;
LEX_ADD - додавання; _UMIN - інкрементування; _START - качан вирази.
На Основі Даних станів головна програма почінає побудову табліці ідентіфікаторів. Модуль LexElem візначає тип ЕЛЕМЕНТІВ табліці та Робить вивід, что Відображається у вігляді простого списку в Другій закладці форми ОСНОВНОЇ програми (перед Цім Попередньо в основному Модулі програми ВСІ Константи переводящем у формат, визначеня варіантом Завдання). После цього на основ хеш-функції, яка візначається результатом додавання ASCII-коду Першого СЕРЕДНЯ сімволів лексеми, поміщається в таблицю ідентіфікаторів ті Виконує підключеній модуль FncTree).
2.3 синтаксичною аналіз
синтаксичною аналіз здійснюється модулем SyntSymb на Основі результатів роботи модуля LexElem, а такоже віходячі з Даних, поданих індивідуальних в Модулі SyntRule. До ціх Даних відносяться правила віхідної граматики та матриця операторного передування, побудовали на Основі ціх правил.
Пріведемо дані правила нижчих:
? prog L end.
L? Про | L; Про | L;
О? if (B) Про else Про | if (B) Про | begin L end | while (B) do Про | a:=E? B or C | B xor C | C? C and D | D? E E | E=E | EoE | (B) | not (B)? ET | E + T | T? inc T | F? (E) | a | c
После визначення правої та лівої граматики Для шкірного символу, Ми можемо побудуваті матрицю операторного передування, яка буде візначаті порядок синтаксичних структур.
За заданій матріці модуль SyntSymb проводити синтаксичний розбір з пом...