Page 28 - 4625
P. 28

 початковий стан q ;
                                      0
                    множину заключних станів F= Q\{q , q };
                                                            12
                                                        0
                   відображення  визначено діаграмою переходів.
                  Програму, яка розпізнає множину лексем, реалізуємо дво-
             ма способами:
                   перший        спосіб: створимо програмний модуль, роботою
            котрого керує таблиця управління скінченного автомата М( ,
                                                                           
             ), яка визначається в програмі явно;
             
                   другий  спосіб: розробимо програмний модуль з управ-
            лінням  за  номером поточного стану скінченного автомата та
            поточною вхідною літерою.

                  2.8  Методика програмування лексичних аналізаторів
            на основі скінчених автоматів
                  Продемонструємо використання методики програмуван-
             ня лексичних аналізаторів на прикладі лексичного аналізатора
             для мови програмування С. Множину лексем мови програму-
             вання С розіб'ємо на такі класи:
                   зарезервовані слова (підмножина ідентифікаторів);
                   цілочислові константи (тип int);
                   дійсні константи (типи double, float);
                   літерні константи (тип char);
                   рядкові  константи  (масиви  елементів  базового  типу
            char);
                   коментарі;
                   коди операцій та спеціальні символи;
                   символи,  які  не  мають  семантичної  інтерпретації,
            окрім  як  роздільники  лексем  (проміжок,  \n,  \v,  \r,  \t,  \b,  \0
            тощо).
                  Побудуємо діаграму переходів об’єднаного скінченного
            автомата для лексичного аналізатора мови програмування С –
            (рис. 8).




                                           27
   23   24   25   26   27   28   29   30   31   32   33