编译原理第5章语法制导翻译及中间代码生成.ppt
《编译原理第5章语法制导翻译及中间代码生成.ppt》由会员分享,可在线阅读,更多相关《编译原理第5章语法制导翻译及中间代码生成.ppt(39页珍藏版)》请在三一办公上搜索。
1、1,第五章 语法制导翻译及中间代码生成,5.1 语法制导翻译概述5.2 中间语言5.3 自底向上语法制导翻译5.4 自顶向下语法制导翻译5.5 属性文法与属性翻译,2,5.1 语法制导翻译概述 一、语法制导翻译定义 二、语法制导翻译原理 三、语法制导翻译实现,3,一、语法制导翻译定义 语法制导翻译就是以语法分析为主导的语义处理。在语法分析过程中嵌入语义动作,即调用对应的语义子程序。例如在前面语法分析时分析a+b*c表达式,其分析语法树如下:,E,+,E,E,*,E,E,a,b,c,在语法分析同时进行语义分析,4,二、语法制导翻译原理 语法制导翻译的原理就是先为每个文法规确定相应的语义,即编写出
2、相应语义处理子程序,整个分析是以语法分析为主导。语义动作:给每个文法符号X赋以各种不同的语义值,5,例如,假定有如下规则和语义动作:E=E(1)+E(2)EVAL:=E(1)VAL+E(2)VAL,6,例5.1 设有文法 E=E+E E=digit 这里digit代表0和9之间任一数字,如果我们的目的仅是为了求值,则语义动作如下(1)E=E(1)+E()EVAL:=E(1)VAL+E(2)VAL(2)E=digit EVAL:=digit假定语义动作中的“+”代表是整型加算术运算。,7,例如,假定有输入串1+2+3,我们通过语法树的分析来看如何进行语法制导翻译,来求出该句子最后值。输入串1+2
3、+3的语法树如下图所示.,E,+,E,E,+,E,E,1,2,3,8,(1)X=动作1(2)Y=动作2(3)A=XY 动作3 现在对LR分析器的分析栈加以扩充,为了在语法分析过程中平行地进行语义处理,使得每个文法符号之后都跟着它的语义值,因此,设置一个语义信息栈,为了清晰起见,我们把这个分析栈每一项分三部分组成:状态STATE、文法符号SYM和语义值VAL。,三、语法制导翻译实现,9,TOP,STATE,VAL,SYM,分析栈如下图所示:,10,我们假定先归约后执行语义子程序,所以当X,Y归约为A,Sm和Sm-1归约为新状态S后,执行语义子程序X和Y的值也归约为A的值。,11,TOP,归约前,
4、TOP,归约后,YVAL,TOP,求值后,AVAL:=YVAL+XVAL,12,例5.2 考虑下面文法及其语义描述:规 则 语义动作(0)S=E print EVAL(1)E=E(1)+E(2)EVAL:=E(1)VAL+E(2)VAL(2)E=E(1)*E(2)EVAL:=E(1)VAL*E(2)VAL(3)E=(E(1)EVAL=E(1)VAL(4)E=i EVAL:=LEXVAL,13,规 则 程序段(0)S=E print VALTOP(1)E=E(1)+E(2)VALTOP:=VALTOP+VALTOP+2(2)E=E(1)*E(2)VALTOP:=VALTOP*VALTOP+2(3
5、)E=(E(1)VALTOP:=VALTOP+1(4)E=i VALTOP:=LEXVAL,14,根据上述程序段,若输入2*3+2,就有如下图所示的语法制导翻译的分析树。,S,E,E,E,E,E,+,*,2,2,3,E VAL=8,E VAL=6,E VAL=4,E VAL=2,E VAL=3,LEXVAL=2,LEXVAL=3,LEXVAL=2,15,对2*3+2进行分析和翻译(实为计算值)该输入串过程如下表所示。当状态1面临#时对应的分析动作为acc(接受),此时,相应的语义动作为print VALTOP,即输出语义程序的计值结果:8。,16,5.2 中间语言 一、引言 二、逆波兰表示 三
6、、三元式 四、树形表示 五、四元式,17,一、引言 1.什么是中间语言 2.为什么要引入中间语言,18,一、引言 1.什么是中间语言 就是和源程序等价的一种编码形式,其复杂性介于源程序和机器语言中间。,源程序,前端,中间代码,代码优化器,中间代码,代码生成器,目标程序,符号表,19,2.为什么要引入中间语言(1)为了使编译程序结构上逻辑简单明确(2)为了便于目标代码优化工作(3)便于目标代码生成,20,二、逆波兰表示 1.表达式逆波兰表示,(1)逆波兰表示的概念 对于一个算术表达式A+B或逻辑表达式AB,根据运算符和运算 对象的位置关系,可分为三种等价表示形式:1)中缀表示法 运算符在运算对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语法 制导 翻译 中间 代码 生成
链接地址:https://www.31ppt.com/p-6599836.html