Page 27 - 4625
P. 27
Формальне визначення класу лексем мови програму-
вання можна виконати одним з нижченаведених способів:
за допомогою праволінійних граматик;
за допомогою скінчених автоматів;
за допомогою регулярних виразів;
перелічити лексеми даного класу як скінченну
множину елементів;
Перші три способи визначення класів лексем за своєю
потужністю еквівалентні. Якщо деякий клас лексем мови про-
грамування скінченна множина, то одним з тривіальних способів
визначення лексем цього класу є їх перерахування.
Наприклад: клас однолітерних кодів операцій мови про-
грамування С можна визначити як скінченну множину:
L = { +, -, /, *, ….}.
0
Сформулюємо фундаментальне твердження теорії гра-
матик та автоматів: клас мов, які розпізнаються скінченними
автоматами, співпадає з класом мов визначених праволіній-
ними граматиками ті регулярними виразами та навпаки.
Відмітимо, що аналіз досвіду використання перелічених за-
собів визначення класів лексем показує, що скінченні автомати
знайшли широке використання при розробці лексичних ана-
лізаторів для конкретних мов програмування, а регулярні
вирази та праволінійні граматики широко використовують у
системах автоматизації побудови мовних процесорів як засоби
високого рівня денотативності опису класів лексем.
Розглянемо можливі варіанти використання різних підхо-
дів визначення класів лексем мов програмування та їх реалі-
зацію в мовних процесорах. Продемонструємо два підходи
розробки програмних модулів, які розпізнають множину
ланцюжків (лексем), що допускає скінченний автомат,
діаграма переходів котрого зображена на (рис.1).
Скінченний автомат має:
множину станів Q={q , q , q , q , q , q 5, …, q };
3
1
2
0
17
4
вхідний алфавіт ={0,1,..9, A, B,..F, a, b,..f, X, x, L, l, U,
u};
26