assign 抽象语法树对应的代码: T1=-C T2:=b*T1 T3=-c T4:=b*T3 uminus b uminus Ts:=T2+T4 a:=Ts 抽象语法树 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 抽象语法树对应的代码: T1 :=-c T2 :=b*T1 T3 :=-c T4 :=b*T3 T5 :=T2+T4 a:=T5 assign a + * b uminus c 抽象语法树 * b uminus c
抽象语法树对应的代码: T:=-C T2:=b*T1 T3=-c assign Ta:=b*T3 T5=T2+T4 a:=Ts DAG对应的代码: T1:=-C uminus T2:=b*T1 T5=T2+T2 DAG a:=T5 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 DAG对应的代码: T1 :=-c T2 :=b*T1 T5 :=T2+T2 a:=T5 assign a + * b uminus c DAG 抽象语法树对应的代码: T1 :=-c T2 :=b*T1 T3 :=-c T4 :=b*T3 T5 :=T2+T4 a:=T5
产生赋值语句抽象语法树的属性文法 产生式 语义规则 Sid:=E S.nptr:=mknode('assign', mkleaf(id,id.place),E.nptr) EE+E2 E.nptr:=mknode(+,E.nptr,E2.nptr) EE*E2 E.nptr:=mknode(*,E.nptr,E2.nptr) E→-E1 E.nptr:=mknode('uminus',E.nptr) E→(E) E.nptr:=E.nptr Eid E.nptr:=mkleaf(id,id.place) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 产生赋值语句抽象语法树的属性文法 产 生 式 语义规则 S→id:=E S.nptr:=mknode(‘assign’, mkleaf(id,id.place),E.nptr) E→E1+E2 E.nptr:=mknode(‘+’,E1 .nptr,E2 .nptr) E→E1 *E2 E.nptr:=mknode(‘*’,E1 .nptr,E2 .nptr) E→-E1 E.nptr:=mknode(‘uminus’,E1 .nptr) E→ (E1 ) E.nptr:=E1 .nptr E→id E.nptr:=mkleaf(id,id.place)
7.1.3三地址代码 ·三地址代码 x:=y op z 三地址代码可以看成是抽象语法树或DAG 的一种线性表示 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 7.1.3 三地址代码 ◼ 三地址代码 x:=y op z ◼ 三地址代码可以看成是抽象语法树或DAG 的一种线性表示
a:=b*(c)+b*(-c)的图表示法 assign assign a uminus b uminus uminus 抽象语法树 DAG 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 a:=b*(-c)+b*(-c)的图表示法 assign a + * b uminus c DAG assign a + * b uminus c 抽象语法树 * b uminus c