语法制导翻译和中间代码生成课件.ppt

语法制导翻译和中间代码生成课件.ppt

ID:57028929

大小:3.69 MB

页数:98页

时间:2020-07-26

语法制导翻译和中间代码生成课件.ppt_第1页
语法制导翻译和中间代码生成课件.ppt_第2页
语法制导翻译和中间代码生成课件.ppt_第3页
语法制导翻译和中间代码生成课件.ppt_第4页
语法制导翻译和中间代码生成课件.ppt_第5页
资源描述:

《语法制导翻译和中间代码生成课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章 语法制导翻译和中间代码生成第一节属性文法第二节语法制导翻译概论第三节中间代码的形式第四节简单赋值语句的翻译第五节布尔表达式的翻译第六节控制结构的翻译第七节说明语句的翻译第八节数组和结构的翻译6.1属性文法编译中的语义处理是指两个功能:审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义(静态语义分析/静态审查)如果静态语义正确,语义处理的工作是要执行真正的翻译,即生成中间代码或目标代码有的编译程序直接生成目标代码,有的编译程序程序采用中间代码(中间语言)(它是复杂性介于源程序语言和机器语言的一种表示形式)第八章 语法制导翻译和中间代码生成语法制导翻译是

2、指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作属性,常用以描述事物或人的特征、性质、品质等,对编译程序使用的语法树的结点,可以用类型、值或存储位置来描述它一个属性文法是一个三元组A=(G,V,F):G:一个上下文无关文法V:一个属性的有穷集F:关于属性的断言或谓词的有穷集编译程序的静态语义审查工作就是验证关于所编译的程序的断言是否全部为真例如文法G为:ET1+T2

3、T1orT2Tnum

4、true

5、false对输入串3+4的语法树如图6.1:属性文法记号中常使用N·t的形式表示与非终结符N相联的属性t比如可把完成对上面表达式的类型检查的属性文法写成图6.2

6、的形式:属性文法最最由克努特(D.E.Knuth)提出,他把属性分成:继承属性、综合属性属性文法中,对应于每个产生式Aa都有一套与之相关联的语义规则,每条规则的形式为b:=f(c1,c2,…,ck)。f是一个函数,b和c1,c2,…,ck是该产生式文法符号的属性(1)如果b是A的一个属性,c1,c2,…,ck是产生式右部文法符号的属性或A的其他属性,则称b是A的综合属性(2)如果b是产生式右部某个文法符号X的一个属性,并且c1,c2,…,ck是A或产生式右边任何文法符号的属性,则称b是文法符号X的继承属性在两种情况下,我们说属性b依赖于属性c1,c2,…,ck(1)非终结符

7、既可有综合属性也可有继承属性,但文法开始符号没有继承属性(2)终结符只有综合属性,它们由词法程序提供例6.1中,E、T和F的val属性是综合属性,例8.2中的L的in是继承属性例6.1简单算术表达式求值的语义描述:产生式          语义规则(0)LEprint(E,val)(1)EE+TE.val:=E1.val+T.val(2)ETE.val:=T.val(3)TT1*FT.val:=T1.val×F.val(4)TFT.val:=E.val(5)F(E)F.val:=E.val(6)FdigitF.val:=digit.lexval例6.2描述说明语句中各种变量

8、的类型信息的语义规则:产生式          语义规则(1)DTLL.in:=T.type(2)TintT.type:=integer(3)TrealT.type:=real(4)LL1,idL1.in:=L.in(5)Lidaddtype(id.entry,L.in)图6.3是句子intid1,id2的语法树,使用  表示属性的传递情况6.2语法制导翻译概论基于属性文法的处理过程(语法制导翻译):对单词符号串进行语法分析,构造语法分析树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各结点处按语义规则进行计算一.计算语义规则所谓依赖图是一个有向图,用于描述分析树中的

9、属性和属性间的相互依赖关系依赖图的构造算法如下:for分析树中每一个结点ndofor结点的文法符号的每一个属性ado为a在依赖图中建立一个结点;for分析树中每一个结点ndofor结点n所用产生式对应的每一个语义规则b:=f(c1,c2,…,ck)dofori:=1tokdo从ci结点到b结点构造一条有向边例6.2的句子Realid1,id2,id3分析树的依赖图(图中的结点用数字表示)如图6.4:从依赖图的拓扑排序中,可以得到所有计算语义规则的顺序。用这个顺序来计算语义规则就得到输入符号串的翻译属性计算有树遍历的和一遍扫描的方法二.S-属性文法和自下而上翻译S-属性文法是

10、只含有综合属性的属性文法综合属性可 在分析输入符号串的同时自下而上来计算S-属性文法的翻译器通常可借助于LR分析器实现分析器可以保存与栈中文法符号有关的综合属性值,每当进行归约时,新的属性值就由栈中正在归约的产生式右边符号的属性值来计算对例6.1的输入串2+3*5语法树如图6.5:三.L-属性文法在自上而下分析中的实现一个属性文法称为L-属性文法,如果对于每个产生式AX1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj(1≤j≤n)的一个继承属性且这个继承属性仅依赖于:(1)产生式Xj在左边符号X1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。