语法制导翻译技术和中间代码生成学位.ppt
文本预览下载声明
第五章 语法制导翻译技术和中间代码生成 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) 功能是生成一个三地址语句,并送到输出文件中。 语义函数
显示全部