Лексический анализ идентификатора

Выделение идентификаторов кодом 2 не является полной информацией о каждом идентификаторе в отдельности. На этапе лексического анализа информационной характеристикой идентификатора является кортеж < имя, адрес >.

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

Кроме того, имена процедур (функций) также обозначаются идентификаторами.

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

Таблица символов представляет собой структуру данных, которая содержит записи имен идентификаторов с атрибутными полями.

Таким образом, на этапе лексического анализа в таблицу символов заносится уникальное имя идентификатора, а в качестве атрибута его адрес или ссылку. Если организовать линейную структуру записи идентификаторов в таблицу символов, то каждый раз при сканировании очередного идентификатора с уникальным именем таблица будет заполняться последовательно, начиная с первого определенного, условным кодом (адресом) ,сгенерированными на рис.5.6. (cod = 2).

Синтаксическая конструкция идентификаторов в рассмотренных арифметических выражениях языка FORTRAN, с учетом семантических атрибут на этапе лексического анализа имеет вид:

где:

w – процедура записи, соответствующей буквы (l) или цифры ( d) в стек S

y2 – семантическая атрибута обработки идентификатора

Процедура y2:

1. Проверка наличия идентификатора с именем S по таблице символов (проверка на уникальность имени). Если идентификатор с именем S уже есть в таблице символов, перейти к п.5.

2. Записать имя S в позицию “имя идентификатора” таблицы символов.

3. Для нового идентификатора с именем S определить адрес (ссылку).

4. Адрес записать в позицию “АДРЕС” таблицы символов.

5. Конец обработки очередного идентификатора.