Обсуждение:Конспект лекций «Методы построения компиляторов» — различия между версиями
Admin (обсуждение | вклад) (Новая: Думаю, что заботится все-таки о занесении в таблицу символов даже не синтаксический анализатор, а по...) |
(нет различий)
|
Версия 23:37, 6 апреля 2009
Думаю, что заботится все-таки о занесении в таблицу символов даже не синтаксический анализатор, а построитель семантического дерева Admin 21:22, 6 апреля 2009 (MSD) Я про синтаксический анализатор вроде ни слова не сказал. Вообще, ориентировался на Ахо почти во всём, что писал. В данном случае: Если лексическим анализатором в исходной программе обнаружен идентификатор, он записывается в таблицу символов. Однако атрибуты идентификатора обычно не могут быть определены в процессе лексического анализа... В процессе остальных фаз информация об идентификаторах вносится в таблицу символов и используется различными способами. (изд 1., стр. 31)
Предлагаю обсуждать на странице обсуждения, а сюда заносить только конечный результат. Я думаю, что вы здесь полностью в своём праве и можете исправлять то, с чем не согласны. — Ulysses 22:56, 6 апреля 2009 (MSD)
Ну, продолжаю. Да, я понимаю, что Вы - про лексический анализатор. Но откровенно говоря, лексический анализатор сам по себе не вносит в таблицу символов ничего. На его этапе еще рано что-то знать об идентификаторах. К примеру, одинаковые идентификаторы в разных пространствах имен не может распознать ни лексический ни даже синтаксический анализатор.
Трудно понять, что Ахо имел в виду. Видимо, следующее. Синтаксический анализатор вызывает лексический для получения следующей лексемы. И поскольку как правило сразу выполняется семантическое действие, то только что возвращенный лексером идентификатор заносится семантическим анализатором в таблицу символов. Именно семантическим. Синтаксического тут недостаточно.
Лексер для идентификатора возвращает тип - то, что это идентификатор - и значение - ну, видимо, строку с этим идентификатором.