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