Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Доки / T_ALG / 1 / FOMICHEV / Section5 / part514

.html
Скачиваний:
7
Добавлен:
17.04.2013
Размер:
8.27 Кб
Скачать

s74 Пред.Страница След.Страница Раздел Содержание     5.1.4. Демонстрация вычисления значений атрибутов с левым выводом     Попытаемся теперь совместить вычисление значений атрибутов с левым выводом, полагая, что при каждом применении правила грамматики должно выполняться соответствующее правило вычисления атрибутов. Если значение атрибутов еще не определено и действие выполнить нельзя, то правило вычисления поместим в список отложенных вычислений. Если правило вычисления атрибутов можно выполнить, и в результате определяется значение некоторого атрибута, то, просматривая список отложенных правил, найдем значения всех атрибутов, которые могут быть вычислены с помощью полученного значения. Новые значения могут привести к возможности вычисления новых правил, поэтому повторим процесс вычислений столько раз, сколько возможно, удаляя правила вычисления атрибутов после их использования.     Выполнение совмещенного вывода в приведенной грамматике рассмотрим на примере цепочки C+C*C, содержащей константы со значениями 1, 2, 3. Результаты применения                     Список отложенных правил вывода вычислений <S>                                                         -

<E>%a{ответ/b}                             b := a

<E>%e+<T>%f{ответ/b}              b := a; a := e+f;

<T>%h+<T>%f{ответ/b}              b := a; a := e+f; e := h ;

<P>%n+<T>%f{ответ/b}              b := a; a := e+f; e := h; h := n;

C/1+<T>%f{ответ/b}                      b := a; a := e+f; e := h; h := n; n := 1;

C/1+<T>%j*<P>%k{ответ/b}      b := a; a := 1+f; f := j*k;

C/1+<P>%n*<P>%k{ответ/b}     b := a; a := 1+f; f := j*k; j := n;

C/1+C/2*<P>%k{ответ/b}            b := a; a := 1+f; f := j*k; j := n; n := 2;

C/1+C/2*C/3{ответ/b}                   b := a; a := 1+f; f := 2*k; k := 3;

C/1+C/2*C/3{ответ/b}                   b := 7

    При построении цепочек в строках 2, 3, 4, 5 правила вычисления атрибутов заносятся в список отложенных вычислений. Появление первой константы в выводимой цепочке приводит к выполнению трех правил в списке. Аналогично, сокращение списка отложенных вычислений происходит после получения цепочек в строках 9 и 10. Предполагается, что символ действия {ответ} в строке 11 передает полученное значение атрибута на выход. Пред.Страница След.Страница Раздел Содержание

 

Соседние файлы в папке Section5