ВУЗ:
Составители:
82
(7) expr id
(8) expr_list expr_list , expr
(9) expr_list expr
Инструкция, начинающаяся с А(I,J), будет передана
синтаксическому анализатору как поток символов id(id, id). После переноса
первых трех символов в стек ПС-анализатор окажется в конфигурации
Стек Вход
... id ( id , id ...
Очевидно, что символ id на вершине стека должен быть свернут, но
какой продукцией? Правильный выбор – продукция (5), если А –
процедура,
и (7), если А – массив. Содержимое стека не может подсказать, чем является
А; для принятия решения мы должны использовать информацию из таблицы
символов, которая была занесена туда при объявлении А.
Одно из решений состоит в замене символа id в продукции (1) на
procid и использовании более интеллектуального лексического анализатора,
который возвращает procid при
распознавании идентификатора,
представляющего собой имя процедуры. Такой способ требует от
лексического анализатора обращения к таблице символов перед тем, как вер-
нуть символ.
Если мы внесем эти изменения, то при обработке А(I,J)
синтаксический анализатор может оказаться либо в конфигурации,
приведенной ранее, либо в следующей:
Стек Вход
... procid ( id , id ...
В
первом случае выбираем свертку по продукции (7); в последнем – по
продукции (5). Обратите внимание, что выбор определяется третьим от
вершины символом в стеке, который даже не участвует в свертке. Для
управления разбором ПС-анализ может использовать информацию "из
глубин" стека.
82 (7) expr id (8) expr_list expr_list , expr (9) expr_list expr Инструкция, начинающаяся с А(I,J), будет передана синтаксическому анализатору как поток символов id(id, id). После переноса первых трех символов в стек ПС-анализатор окажется в конфигурации Стек Вход ... id ( id , id ... Очевидно, что символ id на вершине стека должен быть свернут, но какой продукцией? Правильный выбор – продукция (5), если А – процедура, и (7), если А – массив. Содержимое стека не может подсказать, чем является А; для принятия решения мы должны использовать информацию из таблицы символов, которая была занесена туда при объявлении А. Одно из решений состоит в замене символа id в продукции (1) на procid и использовании более интеллектуального лексического анализатора, который возвращает procid при распознавании идентификатора, представляющего собой имя процедуры. Такой способ требует от лексического анализатора обращения к таблице символов перед тем, как вер- нуть символ. Если мы внесем эти изменения, то при обработке А(I,J) синтаксический анализатор может оказаться либо в конфигурации, приведенной ранее, либо в следующей: Стек Вход ... procid ( id , id ... В первом случае выбираем свертку по продукции (7); в последнем – по продукции (5). Обратите внимание, что выбор определяется третьим от вершины символом в стеке, который даже не участвует в свертке. Для управления разбором ПС-анализ может использовать информацию "из глубин" стека.
Страницы
- « первая
- ‹ предыдущая
- …
- 80
- 81
- 82
- 83
- 84
- …
- следующая ›
- последняя »