Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
30.04.2013
Размер:
328.19 Кб
Скачать

22) Компиляторы. Лексический анализатор. Дескрипторный текст программы.

Компилятором называется системная программа (транслятор), выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на языке, близком к машинному, и в определенном смысле эквивалентную первой. Другой разновидностью трансляторов являются интерпретаторы, осуществляющие анализ и перевод текста программы в машинный код пошагово, непосредственно перед выполнением, и сразу же исполняющие получившийся машинный код.

Процесс компиляции состоит из следующих этапов: 1.)Лексический анализ - на этом этапе последовательность символов исходного файла преобразуется в последовательность лексем. 2.)Синтаксический анализ - последовательность лексем преобразуется в семантическое дерево. 3.)Семантический анализ, включающий: оптимизацию - выполняется удаление лишних конструкций и упрощение семантического дерева, генерация кода - семантическое дерево преобразуется в целевой язык.

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

Результатом работы лексического анализатора является перечень всех найденных в тексте исходной программы лексем с учетом характеристик каждой лексемы. Этот перечень лексем можно представить в виде таблицы, называемой таблицей лексем. Каждой лексеме в таблице лексем соответствует некий уникальный ус­ловный код, зависящий от типа лексемы, и дополнительная служебная информа­ция.

Лексический анализатор может работать в двух основных режимах: либо как подпрограмма, вызываемая синтаксическим анализатором для получения очередной лексемы, либо как полный проход, результатом которого является файл лексем.

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

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

Дескрипторный текст. Выражение поступает на вход лексического анализатора, разбирается на лексемы и записывается в виде дескрипторного  текста. Дескрипторный  текст  подается на вход синтаксического анализатора, который анализирует его на основе синтаксиса языка PRUF и выдает сообщение о синтаксической корректности представленного выражения. Далее дескрипторный  текст  поступает на вход семантического анализатора, который выдает результат оценки смысла выражения при помощи разработанного модуля нечеткой математики.

Соседние файлы в папке Материал