LIWensheng,SCST,BUPT第8章中间代码生成知识点:三地址代码语句的翻译布尔表达式的翻译回填技术WenshengLiBUPT@20082中间代码生成中间代码生成程序的任务把语法分析、语义分析得到的源程序的中间表示翻译成中间代码表示采用中间代码作为过渡的优点便于编译程序的建立和移植便于进行与机器无关的代码优化工作缺点增加了I/O操作、效率下降中间代码生成程序的位置语法分析语义分析中间代码生成代码优化中间代码WenshengLiBUPT@20083中间代码生成8
1中间代码形式8
2赋值语句的翻译8
3布尔表达式的翻译8
4CASE语句的翻译8
5回填技术8
6过程调用语句的翻译小结WenshengLiBUPT@200848
1中间代码形式一、图形表示–语法树–dag图二、三地址代码–三地址语句的形式–三地址语句的种类–三地址语句的实现WenshengLiBUPT@20085一、图形表示语法树–描绘了源程序的自然层次结构dag图–以更紧凑的方式给出了同样的信息–因为公共子表达式被标识出来了为赋值语句产生语法树的语法制导定义产生式语义规则Sid:=ES
nptr=mknode(:=,mkleaf(id,id
place),E
nptr)EE1+E2E
nptr=mknode(+,E1
nptr,E2
nptr)EE1*E2E
nptr=mknode(*,E1
nptr,E2
nptr)E-E1E
nptr=mkunode(uminus,E1
nptr)E(E1)E
nptr=E1
nptrEidE
nptr=mkleaf(id,id
place)WenshengLiBUPT@20086语法树表示:dag图形表示:赋值语句a:=b*-c+b*-c的图表示法assigna+**buminusbuminusccassigna+*b