Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования методов трансляции.-1.pdf
Скачиваний:
13
Добавлен:
05.02.2023
Размер:
1.36 Mб
Скачать

30

Лексический анализ легко проводить, если лексемы, состоящие более чем из одного знака, изолированы с помощью знаков, которые сами являются лексемами (*, +, =).

Однако, в общем случае лексический анализ выполнить не так лег-

ко.

Рассмотрим два правильных предложения Фортрана:

1)DO 10 I=1.15;

2)DO 10 I=1,15.

Воператоре 1) цепочка DO 10 I – переменная, а цепочка 1.15 – константа.

Воператоре 2) DO – ключевое слово, 10 – константа, I – переменная, 1 и 15 константы, т.е. операция «найти очередную лексему» закончится лишь тогда, когда анализатор дойдет до DO или DO 10 I. Таким образом лексических анализатор должен заглядывать вперед за интересующую его в данный момент лексему.

Другие языки, например PL/1, вообще требуют заглядывать при лексическом анализе вперед сколь угодно далеко.

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

Существует два крайних подхода к лексическому анализу.

·Лексический анализатор работает прямо, если для данного входного текста (цепочки) и положения указателя в этом тексте анали-

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

·Лексический анализатор работает не прямо, если для данного текста, положения указателя в этом тексте и типа лексемы он определяет, образуют ли знаки, расположенные непосредственно справа от указателя, лексему этого типа. Если да, то указатель передвигается вправо от части текста, образующей эту лексему.

2.5. Работа с таблицами

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

Для нашего примера на Фортране COST, PRICE и TAX – переменные с плавающей точкой.