Предтраница След.Страница  Раздел Содержание


6. Лексический анализ

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

·        Упростить разработку компилятора, поскольку синтаксический анализ работает не с символами, а с обобщенным представлением лексем в виде токенов.

·        Повысить эффективность компилятора, поскольку лексический анализатор строится с использованием специальных методов символьной обработки.

·        Улучшить переносимость компилятора, поскольку только первая фаза оказывается зависимой от входного алфавита и используемых входных устройств.

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

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

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


Предтраница След.Страница  Раздел Содержание