语法制导翻译及中间代码生成.ppt
《语法制导翻译及中间代码生成.ppt》由会员分享,可在线阅读,更多相关《语法制导翻译及中间代码生成.ppt(45页珍藏版)》请在三一办公上搜索。
1、第五章 语义分析和中间代码的表示,语义分析的概念语法制导翻译方法属性文法几种常见的中间代码表示,第一节 语义分析的概念,语义分析:即审查每个语法成分的静态语义。在早期的一些编译程序中,是在语法分析的基础上根据源程序中各语法成份的语义,直接产生机器语言或汇编语言形式的目标代码。现在的编译系统一般都将经过语法分析的源程序先翻译为某种形式的中间语言代码,然后再将其翻译为目标代码。优点:使编译程序各组成部分功能更单一;使得编译程序的逻辑结构更为清晰,从而使编译程序更易于编写与调整;同时为代码优化和程序的可移植性提供了条件,在语义分析时也要进行语义检查,编译时的语义检查是静态语义检查,包括:类型检查,如
2、参与运算的操作数的类型应相容。控制流检查,用以保证控制语句有合法的转向点。如C语言中不允许goto语句转入case语句流。一致性检查,如case语句的标号不能相同。,第二节 语法制导翻译,对文法中的每个产生式都附加一个语义动作或语义子程序,在语法分析过程中,每当需要使用一个产生式进行推导或归约,语法分析程序除执行相应的语法分析动作外,还要执行相应的语义动作或调用相应的语义子程序。这种模式实际上是对前后文无关文法的一种扩充。,例如,文法GE:产生式 语义动作EE(1)+TE.Val=E(1).val+T.val;ET E.Val=T.Val;TdigitT.Val=digit;为了能在语法分析过
3、程中平行地进行语义处理,可在语法分析栈旁边并行地设置一个语义信息栈。,产生式的语义是由组成该产生式的文法符号的语义所决定的。我们可将这些语义以“属性”的形式附加到各个文法符号上,再根据产生式所蕴含的语义,给出每个文法符号的属性的求值规则,从而形成一种附带有语义属性的前后文无关文法,即属性文法。,第三节 属性文法,属性文法=上下文无关文法+属性+求值规则 属性是用来描述文法符号的语义特征,如 常量的“值”、变量的类型和存储位置等。求值规则(属性计算规则)与产生式相关联的反映文法符号属性之间关系的“规则”。求值规则还可进一步扩展为语义规则(语义动作)。,1、定义,例:简单表达式的属性文法。,若产生
4、式AX1X2Xn,与之相关的属性计算规则 b:=f(c1,c2,),其中f 是函数,b和c1,c2,ck 是该产生式文法符号的属性,如果属性b是产生式左部符号A的属性,c1,c2,ck 是产生式右部文法符号的属性或A的其它属性,则称其为A的综合属性;如果属性b是产生式右部符号Xi的属性,c1,c2,ck 是产生式右部文法符号的属性或A的属性则称其为Xi的继承属性;终结符仅有综合属性,如digit.lex_val。通常由词法程序提供。而开始符号没有继承属性。,2、属性的分类,继承属性用于“自上而下”传递信息。继承属性由相应语法树中结点的父结点和/或兄弟结点属性计算得到,它反映了对上下文依赖的特性
5、。继承属性可以很方便地用来表示程序设计语言上下文的结构关系。,几点说明:,几点说明(续):,综合属性用于“自下而上”传递信息。综合属性由相应语法树中结点的分枝结点属性计算得到,即沿语法树向上传递,从分枝(子)结点到根结点。,思考:简单表达式文法中的属性各是什么类型的?,A.b,X1.c1,X2.c2,X,综合属性A.b的计算,A,X1.c1,X2.c2,继承属性Xk.b的计算,Xk.b,X,在语法树中,将每个结点均视为由若干个域组成的结构,则可将其中的一些域用来存放相应文法符号诸属性之值,并可用属性来为这些域命名。通常我们将每个结点都标注相应属性值的语法树称为注释分析树(Decorated S
6、yntax Tree)。属性求值的过程:在注释分析树中,一个文法符号X在相应结点的综合属性之值,由其子结点的属性和(或)X的其它属性,通过相关属性规则经计算而得,故综合属性的求值在语法树中是按自下而上的方式进行的;X的继承属性之值则由X的父结点和(或)其它兄弟结点来定义,故继承属性的求值将按自上而下的方式进行。,注释分析树,例:8+5*2 的注释分析树。(综合属性),分析树各结点属性的计算可以自下而上地完成,digit.lexval=2,L,E.val=18,T.val=10,E.val=8,T.val=8,F.val=8,digit.lexval=8,T.val=5,+,*,F.val=5,
7、F.val=2,digit.lexval=5,分析树各结点属性的计算可以自下而上地完成,digit.lexval=2,L,E.val=18,T.val=10,E.val=8,T.val=8,F.val=8,digit.lexval=8,T.val=5,+,*,F.val=5,F.val=2,digit.lexval=5,分析树各结点属性的计算可以自下而上地完成,digit.lexval=2,L,E.val=18,T.val=10,E.val=8,T.val=8,F.val=8,digit.lexval=8,T.val=5,+,*,F.val=5,F.val=2,digit.lexval=5,分
8、析树各结点属性的计算可以自下而上地完成,digit.lexval=2,L,E.val=18,T.val=10,E.val=8,T.val=8,F.val=8,digit.lexval=8,T.val=5,+,*,F.val=5,F.val=2,digit.lexval=5,分析树各结点属性的计算可以自下而上地完成,digit.lexval=2,L,E.val=18,T.val=10,E.val=8,T.val=8,F.val=8,digit.lexval=8,T.val=5,+,*,F.val=5,F.val=2,digit.lexval=5,分析树各结点属性的计算可以自下而上地完成,digi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法 制导 翻译 中间 代码 生成
链接地址:https://www.31ppt.com/p-6026181.html