Формальные языки, грамматики и автоматы1 / Konspekt / SECTION5 / part51~4
.htms74 Пред.СтраницаСлед.Страница Раздел Содержание 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 передает полученное значение атрибута на выход. Пред.Страница След.Страница Раздел Содержание