Разработка компиляторов. Ишакова Е.Н. - 15 стр.

UptoLike

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

15
2) ЛА уменьшает длину программы, устраняя из ее исходного представ-
ления несущественные пробелы и комментарии;
3) если будет изменена кодировка в исходном представлении программы,
то это отразится только на ЛА.
В процедурных языках лексемы обычно делятся на классы:
1)
служебные слова;
2)
ограничители;
3)
числа;
4)
идентификаторы.
Каждая лексема представляет собой пару чисел вида (
n, k), где nномер
таблицы лексем,
k - номер лексемы в таблице.
Входные данные ЛА - текст транслируемой программы на входном языке.
Выходные данные ЛА - файл лексем в числовом представлении.
Пример 2.5. Для модельного языка М таблица служебных слов будет
иметь вид:
1)
program; 2) var; 3) int; 4) bool; 5) begin; 6) end; 7) if; 8) then; 9) else;
10)
while; 11) do; 12) read; 13) write; 14) true; 15) false.
Таблица ограничителей содержит:
1) . ; 2) ; ; 3) , ; 4) : ; 5) := ; 6) (; 7) ) ; 8) + ; 9) - ; 10) * ; 11) / ; 12) ; 13) ;
14) ¬ ; 15) = ; 16) > ; 17) <.
Таблицы идентификаторов и чисел формируются в ходе лексического
анализа.
Пример 2.6. Описать результаты работы лексического анализатора для
модельного языка
М.
Входные данные ЛА:
program var k, sum: int; begin k:=0;…
Выходные данные ЛА: (1, 1) (1, 2) (4, 1) (2, 3) (4, 2) (2, 4) (1, 3) (2, 2) (1, 5)
(4, 1) (2, 5) (3, 1) (2, 2)…
Анализ текста проводится путем разбора по регулярным грамматикам и
опирается на способ разбора по диаграмме состояний, снабженной дополни-
тельными пометками-действиями. В диаграмме состояний с действиями каждая
дуга имеет вид, представленный на рисунке 2.4. Смысл этой конструкции: если
текущим является состояние
А и очередной входной символ совпадает с
i
t для
какого либо
i, то осуществляется переход в новое состояние В, при этом выпол-
няются действия
D
1
, D
2
, …, D
m
.
Для удобства разбора вводится дополнительное состояние диаграммы
ER,
попадание в которое соответствует появлению ошибки в алгоритме разбора.
Переход по дуге, не помеченной ни одним символом, осуществляется по любо-
му другому символу, кроме тех, которыми помечены все другие дуги, выходя-
щие из данного состояния.
Рисунок 2.4 – Дуга ДС с действиями
D
1
, D
2
, …, D
m
t
1
, t
2
, …, t
n
ВА
       2) ЛА уменьшает длину программы, устраняя из ее исходного представ-
ления несущественные пробелы и комментарии;
       3) если будет изменена кодировка в исходном представлении программы,
то это отразится только на ЛА.
       В процедурных языках лексемы обычно делятся на классы:
       1) служебные слова;
       2) ограничители;
       3) числа;
       4) идентификаторы.
       Каждая лексема представляет собой пару чисел вида (n, k), где n – номер
таблицы лексем, k - номер лексемы в таблице.
       Входные данные ЛА - текст транслируемой программы на входном языке.
       Выходные данные ЛА - файл лексем в числовом представлении.
       Пример 2.5. Для модельного языка М таблица служебных слов будет
иметь вид:
       1) program; 2) var; 3) int; 4) bool; 5) begin; 6) end; 7) if; 8) then; 9) else;
10) while; 11) do; 12) read; 13) write; 14) true; 15) false.
       Таблица ограничителей содержит:
       1) . ; 2) ; ; 3) , ; 4) : ; 5) := ; 6) (; 7) ) ; 8) + ; 9) - ; 10) * ; 11) / ; 12) ∨; 13) ∧ ;
14) ¬ ; 15) = ; 16) > ; 17) <.
       Таблицы идентификаторов и чисел формируются в ходе лексического
анализа.
       Пример 2.6. Описать результаты работы лексического анализатора для
модельного языка М.
       Входные данные ЛА: program var k, sum: int; begin k:=0;…
       Выходные данные ЛА: (1, 1) (1, 2) (4, 1) (2, 3) (4, 2) (2, 4) (1, 3) (2, 2) (1, 5)
(4, 1) (2, 5) (3, 1) (2, 2)…
       Анализ текста проводится путем разбора по регулярным грамматикам и
опирается на способ разбора по диаграмме состояний, снабженной дополни-
тельными пометками-действиями. В диаграмме состояний с действиями каждая
дуга имеет вид, представленный на рисунке 2.4. Смысл этой конструкции: если
текущим является состояние А и очередной входной символ совпадает с ti для
какого либо i, то осуществляется переход в новое состояние В, при этом выпол-
няются действия D1, D2, …, Dm.
       Для удобства разбора вводится дополнительное состояние диаграммы ER,
попадание в которое соответствует появлению ошибки в алгоритме разбора.
Переход по дуге, не помеченной ни одним символом, осуществляется по любо-
му другому символу, кроме тех, которыми помечены все другие дуги, выходя-
щие из данного состояния.
                                           t1, t2, …, tn
                                   А      D1, D2, …, Dm      В


                               Рисунок 2.4 – Дуга ДС с действиями
                                                                                                 15