文档详情

语法制导翻译技术和中间代码生成学位.ppt

发布:2017-11-17约8.78千字共61页下载文档
文本预览下载声明
第五章 语法制导翻译技术和 中间代码生成 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 简单算术表达式和赋值语句 到四元式的翻译 1. 三元式出现的顺序和语法成份的 计值顺序相一致。 三元式的特点: 2. 三元式之间的联系是通过指示器 实现的。 5.4.2 三元式和树形表示 间接三元式 (1) 间接三元式表: 用来存放各三元式本身。 (2) 间接码表: 按执行各三元式的顺序,依次 列出各三元式在三元式表中的位置。 注意 : 间接三元式表中不存放重复的 三元式。 5.4.2 三元式和树形表示 例如 语句 X= (A+B)*C Y= D↑(A+B) 三元式序列 (1) ( + , A , B ) (2) ( * , (1) , C ) (3) ( = , X , (2) ) (5) (↑ , D , (4) ) (4) ( + , A , B ) (6) ( = , Y, (5) ) 间接三元式 间接码表 三元式表 (1)(2)(3) (1) (4) (5) (1) ( + , A , B ) (2) ( * , (1) , C ) (3) ( = , X , (2) ) (4) (↑ , D , (1) ) (5) ( = , Y, (4) ) 5.4.2 三元式和树形表示 树形表示 A * B + C*D + C * A * B D 末端结点表示一个运算对象, 每一个内结点表示一个一元或二元运算符。 树形表示是三元式的翻版 (3)+ (1)* (2)* C A B D 5.4.2 三元式和树形表示 四元式主要由四部分组成: (OP,arg1, arg2, result) 其中OP是运算符, arg1,arg2分别是第一和第二两个运算对象。 当OP是一目运算时,常常将运算对象定义为arg1。 5.4.3 四元式 例如 X= a*b+c/d 的 四元式序列: (1) ( *, a, b, T1 ) (2) ( /, c, d, T2 ) (3) ( +, T1, T2, T3 ) (4) ( =, T3, -, X ) 5.4.3 四元式 2. 四元式之间的联系是通过临时变量实 现的,这样易于调整和变动四元式。 1. 四元式出现的顺序和语法成份的计值 顺序相一致。 四元式的特点: 3. 便于优化处理。 5.4.3 四元式 result := arg1 OP arg2 三地址语句:语句中是三个量的赋值语句, 每个量占一个地址。 三地址代码形式定义为: 5.4.3 四元式 例如 X= a*b+c/d 的 四元式序列: (1) ( *, a, b, T1 ) (2) ( /, c, d, T2 ) (3) ( +, T1, T2, T3 ) (4) ( =, T3, -, X ) 相应的三地址语句序列为: (1)T1=a*b (2)T2=c/d (3)T3=T1+T2 (4)X=T3 5.4.4 四元式的翻译 LR分析制导生成四元式 例如 A → i = E E → E+E∣E*E∣(E) | i 1. 给出算术表达式和赋值语句翻译到 四元式的语义描述 A → i = E E → E+E∣E*E∣(E) | i 源结构 目标结构 (1)T1=a*b (2)T2=c/d (3)T3=T1+T2 (4)X =T3 X= a*b+c/d 语义函数 emit(T=arg1 OP arg2) 功能是生成一个三地址语句,并送到输出文件中。 语义函数
显示全部
相似文档