86
При трансляции небольших программ и малом количестве
идентификаторов – неэффективное использование памяти, т.к. большая часть
массива остается незанятой
При трансляции больших программ может возникнуть ситуация, когда
физическая память для размещения информации о переменных имеется, а
массив уже полностью заполнен. Соответственно, из-за переполнения
трансляция оказывается невозможной.
Реализация в виде цепочной
структуры (связанного списка)
Достоинством
такой организации является наиболее полное
использование ресурсов памяти.
Недостатки:
1. Выделение памяти осуществляется значительно медленнее, т.к.
производится отдельно под каждый элемент.
2. Дополнительные затраты памяти, поскольку хранятся ссылки на
последующий и, возможно, предыдущий элемент
На практике также встречается комбинация этих подходов.
В качестве структуры данных для таблицы символов очень удобен
стек, каждым элементом которого служит элемент этой таблицы символов.
При встрече с описанием соответствующий элемент таблицы символов
помещается в верхнюю часть стека, а при выходе из блока все элементы
таблицы символов, соответствующие описаниям в этом блоке, удаляются из
стека. Указатель же стека понижается до положения, которое он имеет при
вхождении в блок. В результате в любой момент разбора элементы таблицы
символов, соответствующие всем текущим идентификаторам, находятся в
стеке, а связанные с ним прикладные и определяющие реализации
идентификаторов требуют поиска в стеке в направлении сверху вниз.
Применение стека вместо более сложной цепной структуры дает
возможность сэкономить место, занимаемое указателями в этой цепной
структуре.