Выделение идентификаторов кодом 2 не является полной информацией о каждом идентификаторе в отдельности. На этапе лексического анализа информационной характеристикой идентификатора является кортеж < имя, адрес >.
Каждый идентификатор имеет своё уникальное имя, которое может быть локализовано в отдельной программной единице. Общих атрибутов идентификатора больше, чем представленный кортеж на этапе лексического анализа. Эти атрибуты предоставляют сведения об отведенной конкретному идентификатору памяти, его типе, области видимости (глобальный или локальный) и т.д.
Кроме того, имена процедур (функций) также обозначаются идентификаторами.
Кроме обычных атрибутов имени процедуры (функции) здесь добавляются аргументы или формальные параметры, которые также должны быть охарактеризованы количеством, типом, способом передачи, памятью и т.д. Все эти сведения сводятся для идентификаторов в так называемую таблицу символов.
Таблица символов представляет собой структуру данных, которая содержит записи имен идентификаторов с атрибутными полями.
Таким образом, на этапе лексического анализа в таблицу символов заносится уникальное имя идентификатора, а в качестве атрибута его адрес или ссылку. Если организовать линейную структуру записи идентификаторов в таблицу символов, то каждый раз при сканировании очередного идентификатора с уникальным именем таблица будет заполняться последовательно, начиная с первого определенного, условным кодом (адресом) ,сгенерированными на рис.5.6. (cod = 2).
Синтаксическая конструкция идентификаторов в рассмотренных арифметических выражениях языка FORTRAN, с учетом семантических атрибут на этапе лексического анализа имеет вид:
где:
w – процедура записи, соответствующей буквы (l) или цифры ( d) в стек S
y2 – семантическая атрибута обработки идентификатора
Процедура y2:
1. Проверка наличия идентификатора с именем S по таблице символов (проверка на уникальность имени). Если идентификатор с именем S уже есть в таблице символов, перейти к п.5.
2. Записать имя S в позицию “имя идентификатора” таблицы символов.
3. Для нового идентификатора с именем S определить адрес (ссылку).
4. Адрес записать в позицию “АДРЕС” таблицы символов.
5. Конец обработки очередного идентификатора.