Лексический анализ операций

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

+ - / * **
com sub div mult exp

 

Таким образом, в адрес с условным кодом 3 будет записана операция сложения – com, в адрес с условным кодом 3 – операция вычитания – sub и т.д.

Аналогично на этапе лексического анализа генерируются адреса и происходит наполнение этих адресов соответствующими кодами других символов – скобки, знак окончания операторов - “;”, лексические знаки < , > , ≤ , ≥ , = = , := , и т.д.

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

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