Пред.СтраницаСлед.Страница  Раздел Содержание


    5.3.4. Расширенный вывод для АТ-грамматики

    В качестве иллюстрации описанного способа обработки атрибутов рассмотрим изображение расширенного вывода в грамматике Г 5. 5. Такой вывод включает не только терминальные, нетерминальные и операционные символы, но и атрибуты, значения которых еще не определены. Для отображения связей между атрибутами, соответствующих операциям присваивания, воспользуемся линейным выводом. Такой вывод строится следующим образом:
а) Переместим атрибуты с позиции индексов в строку и поместим их непосредственно за соответствующим символом грамматики.
б) Каждому копирующему правилу, которое соответствует шагу отложенных вычислений, поставим в соответствие дугу, связывающую в цепочки вывода источник и приемник, и направленную от источника к приемнику.
в) Множественным копирующим правилам поставим в соответствие в выводимой цепочке последовательность дуг, связывающих источник с приемниками.
г) Если в процессе вывода атрибут получает значение, то это значение запишем в выводимую цепочку вместо имени атрибута, а соответствующую дугу удалим.
д) При замене нетерминального символа в выводимой цепочке он удаляется, но его атрибуты должны остаться на месте.
Линейный вывод цепочки с/1+с/2*с/3 в грамматике Г 5. 5 можно представить в следующем виде:


    В приведенном выводе атрибут каждого заменяемого нетерминального символа сохраняется в цепочке вывода. Подстановка символа с определенным значением атрибута при выполнении шагов 6, 9, 10 приводит к исключению из цепочки вывода всех промежуточных атрибутов, определяющих пути передачи значения. Шаги 11 и 12 введены только для того, чтобы показать, как операционные символы влияют на определение значений атрибутов. В общем случае эти шаги можно совместить с шагом 10.


Пред.Страница След.СтраницаРаздел Содержание