编译原理第八章-语法制导翻译.ppt
《编译原理第八章-语法制导翻译.ppt》由会员分享,可在线阅读,更多相关《编译原理第八章-语法制导翻译.ppt(71页珍藏版)》请在三一办公上搜索。
1、第8章 语法制导翻译和中间代码生成,数计学院宋彩芳,语义分析基础,编译程序的任务将汇编语言或高级语言书写成的源程序转换成等价的目标代码程序。其中要求目标代码程序和源程序的语义(Semantics)必须相同。语义分析的执行方式语法分析程序直接调用相应的语义子程序进行处理先生成语法树,再进行语义分析,语义分析基础,语法与语义的关系语法是指语言的结构、即语言的“样子”;语义是指附着于语言结构上的实际含意,即语言的“意义”。对于语法和语义:语义不能离开语法独立存在;语义远比语法复杂;同一语言结构可以包含多种含意,不同语言结构表示相同含意;语法与语义之间没有明确的界线。,语义分析基础,语义分析的任务包括
2、两方面静态语义分析或静态审查(验证语法结构合格的程序是否真正有意义);动态语义的解释执行(计算并生成中间代码)。代码的生成方式语义分析直接生成目标代码(快速编译)语义分析生成中间代码(进一步进行优化),源语言程序,中间代码,汇编代码,词法分析,语义分析,语法分析,中间代码生成,代码生成,在编译中的逻辑阶段,前端处理,后端处理,语义处理,语义分析基础,源语言程序,汇编代码,词法分析,语义分析,语法分析,代码生成,前端处理,后端处理,语义处理,语义处理,语义分析基础,语义处理的实现(第八章)属性文法:描述语义规则。语法制导翻译:在语法分析的同时,执行语义规则描述的动作:检查静态语义生成中间代码/目
3、标代码语义处理的环境(第九章)符号表为语义分析提供类型、作用域等信息。为代码生成提供类型、作用域、存储类别、存储(相对)位置等信息。,主要内容,属性文法语法制导翻译概论计算语义规则S-属性文法和自下而上翻译L-属性文法和自上而下翻译L-属性文法和自下而上翻译中间代码生成简单赋值语句的翻译布尔表达式的翻译控制结构的翻译说明语句的翻译数组和结构的翻译,语义形式化,形式语义学的研究已取得了许多重大的进展文法模型-属性文法命令式或操作式模型-操作语义学应用式模型-指称语义学公理式模型-公理语义学,语义形式化,采用属性文法和语法制导翻译对语义处理工进行比较规范和抽象的描述;属性文法:包含一个上下文无关文
4、法和一系列附在文法产生式上的语义规则;语法制导翻译:在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。,语法制导翻译,属性文法语法制导翻译概论计算语义规则S-属性文法和自下而上翻译L-属性文法和自上而下翻译L-属性文法和自下而上翻译,属性文法,属性文法的形式化定义属性文法是一个三元组:A=(G,V,F),其中 G:是一个上下文无关文法。V:有穷的属性集,每个属性与文法的一个终结符或非终结符相连。F:关于属性的断言或谓词集。每个断言与一个产生式相联。,属性文法,属性的抽象表示例如:E.val(值)E.type(类型)E.code(代码序列)E.place(存储空间),属性文法,文
5、法G:ET1+T2|T1 or T2Tnum|true|false,ET1+T2 T1.t=int AND T2.t=intET1orT2 T1.t=bool AND T2.t=boolTnum T.t=intTtrue T.t=boolTfalse T.t=bool,属性文法,属性文法是一个三元组:A=(G,V,F),其中 G:基础文法V:每个文法符号有一组属性F:每个文法产生式A 有一组形式为b=f(c1,c2,ck)的语义规则,其中f 是函数,b和c1,c2,ck 是该产生式文法符号的属性语义规则中的属性存在下述性质与关系(1)若b是A的属性,c1,c2,.,ck是中文法符号的属性,或者
6、A的其它属性,则称b是A的综合属性。(2)若b是中某文法符号X的属性,c1,c2,.,ck是A的属性,或者是中其它文法符号的属性,则称b是X的继承属性,属性文法,属性文法是一个三元组:A=(G,V,F),其中 G:基础文法V:每个文法符号有一组属性F:每个文法产生式A 有一组形式为b=f(c1,c2,ck)的语义规则,其中f 是函数,b和c1,c2,ck 是该产生式文法符号的属性语义规则中的属性存在下述性质与关系(3)称属性b依赖于属性c1,c2,.,ck。实质上反映了属性计算的先后次序,即所有属性ci被计算之后才能计算属性b。(4)若语义规则的形式如下,则可将其想像为产生式左部文法符号A的一
7、个虚拟属性。属性之间的依赖关系,在虚拟属性上依然存在。f(c1,c2,.,ck),属性文法,属性的特点:一个结点的综合属性的值通过分析树中它的子结点的属性值和自己的属性值计算的;继承属性的值由结点的父结点、兄弟结点来计算的;非终结符号即可有综合属性也可有继承属性,但文法开始符号没有继承属性;终结符号只有综合属性,由词法分析器提供,即记号的属性。每个文法符号的综合属性和继承属性的交集为空;,属性文法,属性文法的表示属性文法是一种接近形式化的语义描述方法。属性文法的表示分两部分:先针对语义为文法符号设置属性,然后为每个产生式设置语义规则,来描述各属性间的关系。一般将属性文法写成表格形式,每个文法规
8、则用相应规则的语义规则列出。,属性文法,文法规则 语义规则规则1 相关的属性规则.规则n 相关的属性规则,属性文法,Production Semantic RulesL E print(E.val)E E1+TE.val:=E1.val+T.valE TE.val:=T.valT T1*FT.val:=T1.val*F.valT FT.val:=F.valF(E)F.val:=E.valF digit F.val:=digit.lexval,综合属性,S属性定义:仅仅使用综合属性的语法制导定义,综合属性,将属性附着在分析树对应文法符号上,形成注释分析树。(属性作为分析树的注释)8+5*2的分析
9、树,digit,L,E,T,E,T,F,digit,T,+,F,F,digit,综合属性,将属性附着在分析树对应文法符号上,形成注释分析树。(属性作为分析树的注释)8+5*2的注释分析树,综合属性,将属性附着在分析树对应文法符号上,形成注释分析树。(属性作为分析树的注释)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,F.val=2,digit.lexval=5,继承属性,由父节点、兄
10、弟结点的属性来定义的属性。例:int id,id,id,继承属性,int id1,id2,id3的注释分析树,属性文法,基于属性文法的处理过程(语法制导翻译)注释分析树上看继承属性与综合属性 继承属性是自上而下计算的综合属性是自下而上计算的,语法制导翻译,属性文法语法制导翻译概论计算语义规则S-属性文法和自下而上翻译L-属性文法和自上而下翻译L-属性文法和自下而上翻译,语法制导翻译,语法制导翻译过程:对单词符号串进行语法分析,构造语法分析树;根据需要构造属性依赖图;遍历语法树,并在语法树各结点处按语义规则进行计算;,计算语义规则,构造属性依赖图:for 分析树中每一结点n do for 结点n
11、的文法符号的每一个属性a do 为a在依赖图中建立一个结点;for 分析树中每一个结点n do for 结点n所用产生式对应的每一条语义规则 b:f(c1,c2,ck)do for(i=1;i k;i+)do 从结点ci到结点b构造一条有向边;,属性依赖图,real id1,id2,id3的分析树的依赖图,属性依赖图,第一步:画语法树,属性依赖图,第二步:每一属性建立一结点;,属性依赖图,第三步:为每一产生式构造有向边;,属性依赖图,第三步:为每一产生式构造有向边;,属性依赖图,第三步:为每一产生式构造有向边;,属性依赖图,第三步:为每一产生式构造有向边;,拓扑排序一个有向非循环图的拓扑排序是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第八 语法 制导 翻译
链接地址:https://www.31ppt.com/p-6016569.html