三地址代码是中间代码的抽象形式,其具体实
现可用记录表示,记录中包含表示运算符和操 作数的域。有以下三种表示方法:
三元式 四元式
间接三元式
四元式
是一个带有四个域的记录结构,格式如下: (算符, 第一运算对象, 第二运算对象, 结果)
如:a=b*c+b*d
(1) (2) (3) (4)
7.3 将下列表达式分别用逆波兰式、DAG图、 三地址语句、及三地址语句的三种具体实现 方法:三元式、间接三元式、四元式表示: A + B * ( C - D ) + E / ( C - D ) ^N 逆波兰 : A B C D - * + E C D – N ^ / + DAG图: +
+ A /
C B A C T4 E T3
D T1 T2 D N T5 T6
T1 ) T2) T3) T4) T5) T6) T7)
A + B * ( C - D ) + E / ( C - D ) ^N
三元式 : (1) ( (2) ( * (3) ( + (4) ( (5) ( ^ (6) ( / (7) ( +
(1)
如:
X:=(A+B)*C ; Y:=D ↑(A+B)
操作码表 (1) (2) (3) (1) (4) (5)
三元式表 (1)( + , A , B ) (2)( * , (1) , C ) (3)( := , X , (2) ) (4)(↑, D , (1) ) (5)(:= , Y , (4) )
例:a+b*(c-d)-e/f**g
(1) ( -, c , d ) (2) ( * , b , (1) ) (3) ( + , a , (2) ) (4) ( ** , f , g ) (5) ( / , e , (4) ) (6) ( -元式表示