Обсуждение:Конспект лекций «Методы построения компиляторов»

Материал из Вики ИТ мехмата ЮФУ
Версия от 23:37, 6 апреля 2009; Admin (обсуждение | вклад) (Новая: Думаю, что заботится все-таки о занесении в таблицу символов даже не синтаксический анализатор, а по...)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Думаю, что заботится все-таки о занесении в таблицу символов даже не синтаксический анализатор, 
а построитель семантического дерева Admin 21:22, 6 апреля 2009 (MSD)

Я про синтаксический анализатор вроде ни слова не сказал. Вообще, ориентировался на Ахо почти во всём, что писал. В данном случае:
Если лексическим анализатором в исходной программе обнаружен идентификатор, он записывается в таблицу символов.
Однако атрибуты идентификатора обычно не могут быть определены в процессе лексического анализа...
В процессе остальных фаз информация об идентификаторах вносится в таблицу символов и используется различными способами.
(изд 1., стр. 31)
Предлагаю обсуждать на странице обсуждения, а сюда заносить только конечный результат.
Я думаю, что вы здесь полностью в своём праве и можете исправлять то, с чем не согласны. — Ulysses 22:56, 6 апреля 2009 (MSD)

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

Трудно понять, что Ахо имел в виду. Видимо, следующее. Синтаксический анализатор вызывает лексический для получения следующей лексемы. И поскольку как правило сразу выполняется семантическое действие, то только что возвращенный лексером идентификатор заносится семантическим анализатором в таблицу символов. Именно семантическим. Синтаксического тут недостаточно.

Лексер для идентификатора возвращает тип - то, что это идентификатор - и значение - ну, видимо, строку с этим идентификатором.