Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Методика програмування лексичних аналізаторів на основі скінчених автоматів



Продемонструємо використання методики програмування лексичних аналізаторів на прикладі лексичного аналізатора для мови програмування С. Множину лексем мови програмування С розіб'ємо на наступні класи:

- зарезервовані слова (підмножина ідентифікаторів);

- цілочислові константи (тип int);

- дійсні константи (типи double, float);

- літерні константи (тип char);

- рядкові константи (масиви елементів базового типу char);

- коментарі;

- коди операцій та спеціальні символи;

- символи, які не мають семантичної інтерпретації, окрім як роздільники лексем (проміжок, \n, \v, \r, \t, \b, \0 тощо).

Побудуємо діаграму переходів об'єднаного скінченого автомата для лексичного аналізатора мови програмування С – Мал. 7.

проміжок, /r, /t, /b,…. /n, /0

 
 


Підпрограма виділення ідентифікатора
_, A,.., Z,

       
   


a,.., z

 
 
Підпрограма виділення числової константи


0,.., 9

       
   


Все \ {*}

 
 


/ * * /

               
     
     
 
 


Все \ {/}


/n

Все \ {\n}


............................

............................

Далі продовжуємо у тому ж стилі.

Мал. 7.

Після виділення нової лексеми програмний модуль переходить у початковий стан. Перед звертанням до функції, яка виділяє лексему з вхідного тексту, необхідно виконати функцію ungetch(fp).

Окрім виділення лексем з вхідного тексту програми лексичний аналізатор повинен виконувати функцію локалізації лексичних помилок. Функція локалізації лексичної помилки повинна "пропустити" фрагмент тексту вхідної програми мінімальної довжини так, щоб подальша робота була продовжена. Очевидно, що таку умову задовольняють літери, по яких лексичний аналізатор переходить з початкового стану в інші. З діаграм переходів видно, що це – літери з множини

{ проміжок, \n, \v, \r, \t, \b, +, -, …}.





Дата публикования: 2015-04-06; Прочитано: 342 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...