Программное обеспечение. Николаева А.Е. - 7 стр.

UptoLike

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

13
При выполнении фазы лексического анализа решаются следующие
задачи:
1. Грамматический разбор программы на базовые элементы, или лек-
сические единицы языка.
2. Построение таблиц литералов и идентификаторов.
3. Построение таблицы стандартных символов.
Используются следующие входные и выходные данные
1. Исходная программа в ее первоначальном формате. Воспринимается
компилятором как строка символов.
2. ТАБЛИЦА ТЕРМИНАЛЬНЫХ СИМВОЛОВ - имеет отдельный эле-
мент для каждого терминального символа (например, арифметические опе-
рации, ключевые слова и др.). Каждый элемент состоит из терминального
символа, указателя его классификации (операция, разделитель) и его стар-
шинства (используемого в последующих фазах).
СИМВОЛ УКАЗАТЕЛЬ
3.ТАБЛИЦА ЛИТЕРАЛОВ - создается при лексическом анализе для
описания всех литералов используемых в исходной программе. Каждому ли-
тералу соответствует один элемент таблицы, состоящий из ряда атрибутов.
ЛИТЕРАЛ УКАЗАТЕЛЬ НА ТИП ТОЧНОСТЬ АДРЕС
Могут быть и другие атрибуты в зависимости от языка и фантазии раз-
работчика.
4.ТАБЛИЦА ИДЕНТИФИКАТОРОВ - создается при лексическом ана-
лизе для описания всех идентификаторов, имеющихся в программе. Каждо-
14
му идентификатору соответствует отдельный элемент в таблице. Во время
лексического анализа в этот элемент помещается имя идентификатора. Вме-
сто имени в эту таблицу можно помещать указатель на таблицу имен для бо-
лее эффективного использования памяти, так как в некоторых языках иден-
тификаторы могут быть ну очень длинными. Атрибуты данных и адрес для
каждого идентификатора записываются последующими фазами.
ИМЯ АТРИБУТЫ АДРЕС
5. ТАБЛИЦА СТАНДАРТНЫХ СИМВОЛОВ - создается при лексиче-
ском анализе для того, чтобы представить программу строкой лексических
единиц, а не отдельных символов. Каждой лексической единице в программе
соответствует стандартный символ. Каждый стандартный символ содержит
указатель на таблицу, элементом которой является соответствующая лекси-
ческая единица, и его индекс внутри этой таблицы.
ТАБЛИЦА ИНДЕКС
АЛГОРИТМ
Лексическая единица - это подстрока входной строки, представляющая
собой базовый элемент языка. Она может содержать только элементарные
символы и не может включать другие лексические единицы. Для остальной
части компилятора лексическая единица выступает как наименьшая единица
языка. Стандартные символы служат терминальными символами для синтак-
сического анализа.
Существует много способов реализации фазы лексического анализа.
Входная строка разделяется на лексические единицы символами разделите-
лями. Разделители отмечаются в специальном поле таблицы терминальных
символов. Символы исходной программы читаются, проверяются на кор-
ректность, и выясняется, не являются ли они разделителями. Стоящие подряд
символы, не являющиеся разделителями, объединяются в лексические еди-