Системное программное обеспечение: Основы трансляции. Карпушин А.Н - 54 стр.

UptoLike

56
Вид узла дерева Результирующий
код
Примечание
i) act (oper1,oper2) act – тип триады;
oper1,oper2 – операнды
(листья дерева вывода)
i) Code(Узел 2,i)
i+j) act(oper1,^i+j-1)
Узел 2 – нижележащий
узел дерева вывода;
Code(Узел 2,i) – последо-
вательность триад, порож-
даемая для Узла2, начиная
с триады с номером i;
j – кол-во триад, порож-
даемых для Узла2
i) Code(Узел 2,i)
i+j) act(^i+j-1,oper2)
i) Code(Узел 2,i)
i+j) Code(Узел 3,i+j)
i+j+k) act(^i+j-1,
^i+j+k-1)
Узел 2, Узел 3 – нижеле-
жащие узлы дерева выво-
да;
Code(Узел 2,i) и
Code(Узел 3, i+j) – после-
довательности триад, по-
рождаемые для Узла2 и
Узла3, начиная с триад с
номерами i и i+j соответ-
ственно;
j – количество триад, по-
рождаемых для Узла2;
k – количество триад, по-
рождаемых для Узла3
Рассмотрим тот же пример дерева вывода для выражения A:=B*C+D-B*10
из предыдущего параграфа и построим соответствующую ему последователь-
ность триад:
Шаг 1:
1) Code(U2,1)
i) :=(A,^i-1)
Шаг 2:
1) Code(U3,1)
j) Code(U5,j)
i-1) -(^j-1,^i-2)
i) :=(A,^i-1)
Шаг 3:
1) Code(U4,1)
k) +(^k-1,D)
j) Code(U5,j)
i-1) -(^j-1,^i-2)
i) :=(A,^i-1)
Шаг 4:
1) *(B,C)
2) +(^1,D)
3) Code(U5,3)
i-1) -(^j-1,^i-2)
i) :=(A,^i-1)
Шаг 5:
1) *(B,C)
2) +(^1,D)
3) *(B,10)
4) -(^2,^3)
5) :=(A,^4)