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


 

6.1. Интерфейс лексического анализатора

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

 

 

Рис. 6.1. Интерфейс лексического анализатора.

 

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

 

 

Рис. 6.2. Структура токена.

 

В некоторых случаях лексический анализатор должен забегать вперед, считывая несколько следующих символов, прежде чем принять решение какой токен передать синтаксическому анализатору. Например, если для обозначения операции присваивания используется знак равенства “=”, а для обозначения операции равенства – два таких знака “==”, то после прочтения первого знака анализатор должен прочитать следующий за ним знак. Если это второй знак равенства, то нужно сформировать токен операции равенства. В противном случае нужно сформировать токен присваивания, а прочитанный символ вернуть во входной поток, поскольку он может оказаться началом следующей лексемы.

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

 

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