Программная модель 32-разрядного микропроцессора фирмы Motorola


Описание интерпретатора - часть 2


Это обусловлено в первую очередь той ролью, которую играют различные виды слов при написании исходной про­граммы и, соответственно, при переводе ее в машинную программу. При этом наиболее предпочтительным является разбиение всего множества слов, допус­каемого в языке программирования, на такие классы, которые бы не пересека­лись между собой. В этом случае лексический анализ можно выполнить более эффективно. В общем случае все выделяемые классы являются либо конечны­ми (ключевые слова, разделители и др.) — классы фиксированных для данного языка программирования слов, либо бесконечными или очень большими (иден­тификаторы, константы, метки) — классы переменных для данного языка про­граммирования слов.

С этих позиций коды образов лексем (дескрипторов) из конечных классов всегда одни и те же в различных программах для данного компилятора. Коды же образов лексем из бесконечных классов различны для разных программ и формируются каждый раз на этапе лексического анализа.

В ходе лексического анализа значения лексем из бесконечных классов помещаются в таблицы соответствующих классов. Конечность таблиц объясняет ограничения, существующие в языках программирования на длины (и соответственно число) используемых в программе идентифика­торов и констант. Необходимо отметить, что числовые константы перед помещением их в таблицу могут переводиться из внешнего символьного во внутреннее машинное представление. Содержимое таблиц, в особен­ности таблицы идентификаторов, в дальнейшем пополняется на этапе се­мантического анализа исходной программы и используется на этапе генерации объектной программы.

Первоначально в тексте исходной программы лексический анализатор вы­деляет последовательность символов, которая по его предположению должна быть словом в программе, т.е. лексемой. Может выделяться не вся последова­тельность, а только один символ, который считается началом лексемы. Это наиболее ответственная часть работы лексического анализатора.


Начало  Назад  Вперед