Page 36 - 4761
P. 36

ідентифікаторів.  При  відсутності  створюється  новий  елемент  таблиці  для  цього
                  ідентифікатора.  При  чому  номер  рядка  стає  специфікатором  в  коді  лексеми.  Якщо  в
                  таблиці  виявлено  можливий  ідентифікатор,  то  новий  рядок  не  додають,  а  лише
                  формується код лексеми. Лексичний аналіз може здійснюватись за один певний перегляд
                  вихідного  тексту  програми  або  шляхом  виклику  модуля  лексичного  аналізатора  кожен
                  раз, коли для синтаксичного аналізу необхідно розпізнавання чергової лексичної одиниці.
                         Приклад  3.1.  Для  заданого  фрагменту  програми  утворити  таблиці  лексем  та
                  сформувати послідовність кодів.
                         PROGRAM Exam;
                         VAR x,y,z: INTEGER;
                         BEGIN
                         z:=x+y-1;
                         END.

                  Таблиця  1  -  Таблиця  термінальних              Таблиця 2 – Таблиця ідентифікаторів
                  символів                                              Код           Ідентифікатор
                    Код      Термінальні символи                         0        Exam
                     0      PROGRAM                                      1        x
                     1      VAR                                          2        y
                     2      INTEGER                                      3        z
                     3      BEGIN
                     4      END
                     5      ;                                       Таблиця 3 – Таблиця літералів
                     6      /                                           Код               Літерал
                     7      :                                            0        1
                     8      :=                                           1        …
                     9      +                                            2        …
                     10     -                                            3        …
                     11     ,
                     12     .

                         При обробці тексту за допомогою заданого алгоритму формуються наступні рядки:
                         <01,00><02,00><01,05>
                         <01,01><02,01><01,11> <02,02><01,11><02,03><01,07><01,02><01,05>
                         <01,03><02,03> <01,08> <02,01><01,09><02,02><01,10><03,00>
                         <01,05><01,04><01,12>
                         Крім  того,  в  результаті  такої  обробки  вихідний  еталон  також  є  таблицею
                  ідентифікаторів та літералів.

                      Лексичний аналізатор як кінцевий автомат

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

                                                                34
   31   32   33   34   35   36   37   38   39   40   41