Page 31 - 4761
P. 31

3  ЕТАП АНАЛІЗУ

                      3.1 Лексичний аналізатор. Принцип роботи

                         Лексема – це структурна одиниця мови яка складається з елементарних символів
                  мови  і  не  містить  в  своєму  складі  других  структурних  одиниць.  Лексемами  мов
                  програмування є ідентифікатори, константи, ключові слова мови, знаки операцій і т.д.
                         Лексичний аналізатор (сканер) – це частина комп’ютера яка читає вхідну програму
                  і виділяє в її тексті лексеми вхідної мови. На вхід лексичного аналізатора поступає текст
                  вхідної програми, а вихідна інформація передається для подальшої обробки компілятором
                  на етапі синтаксичного аналізу і розбору.
                         Лексичний аналізатор – не є обов’язковою частиною комп’ютера, всі його функції
                  можуть виконуватись на етапі синтаксичного розбору. Основні причини функціонування
                  лексичного аналізатора:
                         -      застосування  лексичного  аналізатора  спрощує  роботу  з  текстом  вхідної
                  програми на етапі синтаксичного розбору і зменшує об’єм інформації, яка обробляється,
                  т.к. лексичний аналізатор структурує інформацію, яка поступає і відкидає незначущу;
                         -      для  виділення  в  тексті  і  розбору  лексем  можна  приміняти  просту  і
                  теоретично  добре  опрацьовану  техніку  аналізу,  а  на  етапі  синтаксичного  аналізу
                  використовують досить складні алгоритми розбору;
                         -      сканер  відділяє  складний  по  конструкції  синтаксичний  аналіз  від  роботи
                  безпосередньо  з  текстом  вхідної  програми,  структура  якого  може  варіюватися  в
                  залежності від версії вхідної мови;
                         -      при  такій  конструкцій  комп’ютера  для  переходу  від  однієї  версії  мови  до
                  другої достатньо тільки перебудувати лексичний аналіз.
                         Те,  які  функції  повинен  виконувати  лексичний  аналіз  і  які  типи  лексем  він  має
                  виділяти  в  вхідній  програмі,  а  які  залишати  для  синтаксичного  розбору,  вирішують
                  розробники комп’ютера. В основному лексичний аналіз виконують виключення з тексту
                  вхідної програми коментарів, керуючих пробілів, символів табуляції і переводу рядків та
                  виділення  наступних  лексем:  ідентифікаторів,  констант,  служб.  слів,  знаків  операцій  та
                  розділювачів.
                         Результатом  роботи  лексичного  аналізу  є  перелік  знайдених  в  тексті  вхідної
                  програми  лексем  з  врахуванням  характеристик  кожної  лексеми.  Цей  перелік
                  представляють  в  таблиці  лексем.  Кожній  лексемі  в  таблиці  лексем  відповідає  деякий
                  унікальний  умовний  код,  який  залежить  від  типу  лексем,  і  додаткова  службова
                  інформація.  Інформація  про  деякі  типи  повинна  поміщатись  в  таблиці  ідентифікаторів.
                  Таблиця  лексем  містить  весь  текст  вхідної  програми,  оброблений  лексичним
                  аналізатором.  В  неї  входить  всі  можливі  типи  лексем,  люба  лексема  може  повторятись
                  любу кількість разів. Лексеми в таблиці лексем розміщуються в тому ж порядку, що й в
                  програмі.

                         Принципи побудови лексичних аналізаторів
                         Лексичний  аналізатор  має  справу  з  такими  об’єктами  як  константи  і
                  ідентифікатори.  Мова  цих  об’єктів  є  регулярна,  тобто  описується  за  допомогою
                  регулярної граматики. Розпізнавачами для регулярних граматик є кінцеві автомати. Отже,
                  основою для реалізації лексичних аналізаторів є регулярні граматики і кінцеві автомати.
                  Існують  правила,  за  допомогою  яких  для  любої  регулярної  граматики  може  бути
                  побудований кінцевий автомат, який розпізнає ланцюги мови, заданої цією граматикою.
                  Кінцевий автомат для кожного вхідного ланцюга мови дає відповідь на питання про те, чи
                  належить він мові, заданій автоматом. Крім того, він виконує такі функції:
                         -      визначає границі лексеми, які в тексті вхідної програми явно не вказані;
                         -      виконує дії для збереження інформації про знайдену лексему.


                                                                29
   26   27   28   29   30   31   32   33   34   35   36