push(t,tblptr); push(0,offset) } /* 建立主程序(最外围)的符号表
偏移从0开始 */ DD1 ; D2
2019/5/20
《编译原理与技术》讲义
23
D proc id ; N D1 ; S { t := top( tblptr ); addwidth( t, top( offset ) );
25
e.g.10 过程嵌套声明
i : int; j : int ;
PROC P1 ; k : int; f : real ;
PROC P2; l : int ;
a1 ; a2; PROC P3; temp : int ; max : int ;
三元式
⑴⑬
⑭
⑬(*, b,c )
⑵⑭
⑬
⑭(/, d, f )
⑶⑮
⑮
⑮ ( + , ⑬, ⑭)
⑷⑯
⑯
⑯ ( := , a , ⑮)
2019/5/20
《编译原理与技术》讲义
13
中间代码的种类
四元式
按编号次 序计算
计算结 果存于
方便移动,计算 大量引入临 次序容易调整 时变量
result
三元式
按编号次 序计算
2019/5/20
《编译原理与技术》讲义
7
中间代码的种类
e.g.4 构造表达式a+b*-4的语法树(DAG)
+
ID a
*
ID b
@
NUM 4
2019/5/20
《编译原理与技术》讲义
8
中间代码的种类
三地址代码
一般形式:x := y op z 或 x := op y