下载此文档

编译程序的功能和组织结构.ppt


文档分类:IT计算机 | 页数:约29页 举报非法文档有奖
1/29
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/29 下载此文档
文档列表 文档介绍
编译程序的功能和组织结构
表 处 理











错 误 处 理














前 端
后 端












1
第六章 语法制导翻译
中间代码的形式
语法制导翻译的概述
自底向上的制导翻译
2
何谓中间代码:
(Intermediate code/
Intermediate representation/Intermediate language)
可以使编译程序的结构清晰、简单、明确。源程序的一种内部表示,不依赖目标机的结构,易于机械生成目标代码的中间表示。
为什么要此阶段及使用原则
主要优点是可移植(与具体目标程序无关),且易于目标代码优化
原则:1、形式比较简单,容易翻译成相应的目标机器代码。
   2、能充分反映源程序的特点。
中间代码的几种形式
逆波兰、四元式、三元式、树型
中间代码(源程序的中间形式)
3
逆波兰记号(后缀式)
将运算对象写在前面,把运算符号写在后面
表达式
逆波兰式
a+b
ab+
a+b*c
abc*+
(a+b)*c
ab+c*
a=b*c+b*d
abc*bd*+=
4
后缀式的计算机处理
后缀式的最大优点是易于计算机处理
处理过程:
从左到右扫描后缀式,每碰到运算对象就推进栈;碰到运算符就从栈顶弹出相应目数的运算对象施加运算,并把结果推进栈。最后的结果留在栈顶。
d
c
t1
t1= - b
t2= c*d
t3= t1+t2
例:表达式-b+c*d的后缀式 ******@cd*+的计值过程
5
逆波兰表示法的扩充
逆波兰表示法很容易扩充到表达式以外的范围
例如:
语句
逆波兰表示
备注
a:=b+c
abc+:=
:=看作二目运算符
GOTO L
L jmp
jmp看成一目运算符,表示GOTO
If E then S1 else S2
ES1S2¥
把¥ 看成三目运算符,表示if –then –else
6
逆波兰示例
例:
把下述产生式定义的算术表达式映射到后缀波兰表示:
EE+T
E T
T TF
T F
F (E)
F a
E=ET+
E=T
T=TF
T=F
F=E
F=a
产生式
翻译成分
7
确定输入a+aa的输出:
(E,E)(E+T,ET+)
(T+T,TT+)
(F+T,FT+)
(a+T,aT+)
(a+TF,aFF+)
(a+FF,aFF+)
(a+aF,aaF+)
(a+aa,aaa+)
8
三元式和树形表示
格式: (算符, 第一运算对象, 第二运算对象)
如: a=b*c+b*d (1) (*,b,c) (2) (*,b,d) (3) (+,(1),(2)) (4) (=,(3),a)
=
a
+
*
*
b
c
b
d
9
四元式
由于三元式中的结果是用它的编号表示的,当在三元式进行优化后,就要用一定的时间重新安排三元式的编号,很费时间。为了防止优化后的重新编址,在三元式基础上增加了一个存放结果的单元,这就形成了四元式子,是一种最常用的形式。
格式: (算符, 第一运算对象, 第二运算对象, 结果)
如: a=b*c+b*d (1) (*,b,c,t1) (2) (*,b,d,t2) (3) (+,t1,t2,t3) (4) (=,t3,-,a)
10

编译程序的功能和组织结构 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数29
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wenjun1233211
  • 文件大小231 KB
  • 时间2021-05-12