Page 34 - 4761
P. 34
Таку функцію f (q,a) – як правило записують на графі переходів кінцевого
автомата, під дугами, які з’єднують стан автомата. Вона може бути пустою (не виконує
дії), тоді відповідний запис відсутній.
3.3 Побудова лексичного аналізатора
Речення вихідної мови найчастіше представляється як послідовність лексем.
Лексеми – елементарні одиниці мови з яких ця мова будується int, var, real. Тобто
лексемами можуть бути: ключове слово, ім’я змінної тощо. Причому точний перелік
лексем залежить від мови програмування і граматики, що використовується для її опису.
Приклад для мови Pascal:
PROGRAM, INTEGER, REAL , VAR ...
Приклад для мови С:
main, int, float, char ...
Основними функціями лексичного аналізатора є:
1) введення рядка вихідного тексту програми;
2) розпізнавання лексем;
3) заповнення таблиць ідентифікаторів і літералів;
4) друк лістинга вихідної програми.
Крім того лексичний аналізатор повинен враховувати особливості різних мов
програмування (врахувати інформацію, що пов’язана з узгодженнями по формату
розташування рядків вихідного тексту програми). Крім того, в процесі лексичного аналізу
необхідно враховувати чи є пробіли обмеженнями лексем, чи можуть речення
розміщуватись в кількох рядках одного тексту.
Для обробки текстів використовується так звана функція сканера, який
використовує наступну інформацію для своєї роботи:
- вихідний текст програми;
- таблицю термінальних символів;
- таблицю літералів;
- таблицю ідентифікаторів.
Таблиця термінальних символів – постійна таблиця, кожен елемент якої містить
термінальний символ мови, код лексеми та іншу інформацію. Наприклад:
Таблиця 3.1 – Таблиця термінальних символів
№ Термінальний Признак
символ розділювача
1 PROGRAM -
2 VAR -
3,4 BEGIN, END -,-
5 INTEGER -
6 FOR -
7 TO -
8 DO -
9 WHILE -
10 DIV -
11 MOD -
12 AND -
13 OR -
14 := +
32