Математическая логика и теория алгоритмов. Стенюшкина В.А. - 100 стр.

UptoLike

Составители: 

6.5 Лексический анализ
Лексический анализ (ЛА)- этап предварительной обработки исходной
программы на лексемы и составные таблицы лексем. Сама же программа пред-
ставляется последовательностью пардескрипторов: <дескриптор>::=(<тип
лексемы>, <указатель>), где тип лексемыкод класса лексем, указательссы-
лка на область памяти, где хранится лексема или номер в таблице, куда поме-
щено значение лексемы. Наиболее распространёнными классами лексем являю-
тся: идентификаторы, служебные слова, разделители, константы. Содержимое
таблиц дополняется на этапе семантического анализа исходной программы ге-
нерацией объектного кода программы.
Программа, выполняющая лексический анализ, называется лексическим
анализатором. Последовательность работ лексического анализатора следую-
щая. Сначала, при просмотре слева направо, выделяется последовательность
символов, которая предположительно является лексемой. Затем (или паралле-
льно) проводится идентификация лексемы и проверка правильности её записи.
Это делается, например, путём сравнения с эталонным значением. В случае не-
успешной идентификации формируются сообщения об ошибках. Могут выпол-
няться и другие виды лексического контроля: парность символов и т. п. При
успешной идентификации значение лексемы данного класса (если её там нет).
Выходной поток лексического анализатора поступает на вход синтаксического
анализатора. При построении лексических анализаторов используются форма-
льный математический аппараттеория регулярных языков и грамматик.
ПримерВход лексического анализатора
Program Glob;
Var a, b: integer;
Begin
a:=10;
b:=12;
a:=1+b;
writeln(a)
End.
Выход лексического анализатора
N Идентификатор NЗначение
константы
1 Glob 1 10
2 a 2 12
3 b
Последовательность дескрипторов: (10, 1)(30, 1)(20, 1)(10, 6)(30,
2)(20,2)…(30, 3)(20, 9).
Внимание! Здесь используются таблицы:
      6.5 Лексический анализ

       Лексический анализ (ЛА)- этап предварительной обработки исходной
программы на лексемы и составные таблицы лексем. Сама же программа пред-
ставляется последовательностью пар – дескрипторов: <дескриптор>::=(<тип
лексемы>, <указатель>), где тип лексемы – код класса лексем, указатель – ссы-
лка на область памяти, где хранится лексема или номер в таблице, куда поме-
щено значение лексемы. Наиболее распространёнными классами лексем являю-
тся: идентификаторы, служебные слова, разделители, константы. Содержимое
таблиц дополняется на этапе семантического анализа исходной программы ге-
нерацией объектного кода программы.
       Программа, выполняющая лексический анализ, называется лексическим
анализатором. Последовательность работ лексического анализатора следую-
щая. Сначала, при просмотре слева направо, выделяется последовательность
символов, которая предположительно является лексемой. Затем (или паралле-
льно) проводится идентификация лексемы и проверка правильности её записи.
Это делается, например, путём сравнения с эталонным значением. В случае не-
успешной идентификации формируются сообщения об ошибках. Могут выпол-
няться и другие виды лексического контроля: парность символов и т. п. При
успешной идентификации значение лексемы данного класса (если её там нет).
Выходной поток лексического анализатора поступает на вход синтаксического
анализатора. При построении лексических анализаторов используются форма-
льный математический аппарат – теория регулярных языков и грамматик.
       Пример – Вход лексического анализатора
       Program Glob;
       Var a, b: integer;
       Begin
       a:=10;
       b:=12;
       a:=1+b;
       writeln(a)
       End.
       Выход лексического анализатора

         N         Идентификатор                       N       Значение
                                                         константы
         1          Glob                               1       10
         2          a                                  2       12
         3          b
       Последовательность дескрипторов: (10, 1)(30, 1)(20, 1)(10, 6)(30,
2)(20,2)…(30, 3)(20, 9).
       Внимание! Здесь используются таблицы: