语义分析与中间代码生成.ppt

语义分析与中间代码生成.ppt

ID:52396529

大小:1.48 MB

页数:179页

时间:2020-04-05

语义分析与中间代码生成.ppt_第1页
语义分析与中间代码生成.ppt_第2页
语义分析与中间代码生成.ppt_第3页
语义分析与中间代码生成.ppt_第4页
语义分析与中间代码生成.ppt_第5页
资源描述:

《语义分析与中间代码生成.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章 语义分析与中间代码生成主要内容语法制导翻译符号表类型检查中间语言中间代码生成源语言程序中间代码目标代码词法分析语义分析语法分析中间代码生成代码生成在编译中的逻辑阶段前端处理后端处理语义处理语义处理的任务:静态语义检查静态语义检查:审查静态语义(语义分析)动态语义处理动态语义处理:生成(中间/目标)代码首先是语义分析和正确性检查,若正确,则翻译成中间代码或目标代码。在文法中,文法符号通常都有明确的意义,文法符号之间也有确定的语义关系。用属性描述语义信息,用语义规则描述属性间的的关系,将语义

2、规则与语法规则相结合。基本思想:根据翻译的需要设置文法符号的属性,以描述语法结构的语义。例如,一个变量的属性有类型,作用域,存储地址等。表达式的属性有类型,值等。属性值的计算和产生式相联系。随着语法分析的进行,执行属性值的计算,完成语义分析和翻译的任务。语义处理的环境:符号表为语义分析提供类型、作用域等信息。为代码生成提供类型、作用域、存储类别、存储(相对)位置等信息。在语法分析过程中,随着分析的步步进展,根据每个产生式所对应的语义规则描述的语义动作(或语义子程序)进行翻译的办法称作语法制导翻译

3、。语法制导翻译1、属性文法(syntax-directeddefinitions):定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。是对上下文无关文法的推广。2、翻译模式(translationschemes):给出语义规则进行计算的顺序。两种常用的描述语义的方法:6.1语法制导翻译属性文法(attributegrammar)是在上下文无关文法的基础上,为文法每个终结符和非终结符配备若干相关的属性,这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等.属性与变量一样,

4、可以进行计算和传递。对于文法的每一个产生式都配备了一组属性的计算规则,属性加工的过程即是语义处理的过程。属性通常分为两类:综合属性和继承属性。简单地说,综合属性用于“自下而上”传递信息,而继承属性用于“自上而下”传递信息。在一个属性文法中,A→P都有与之相关联的一套语义规则,规则形式为b:=f(c1,c2,…,ck),f是一个函数,而且或者2.b是中文法符号的一个继承属性并且c1,c2,…,ck是A或中的任何文法符号的属性。1.b是A的一个综合属性并且c1,c2,…,ck是中文法符号

5、的属性,或者在两种情况下,都说属性b依赖于属性c1,c2,…,ck。1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性.2)终结符只有综合属性,它们由词法程序提供.语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码(中间)生成等等。有些语义规则可能产生副作用(如产生代码),通常把这样的语义规则写成函数调用。例简单计算器程序的属性文法产生式语义规则LEprint(E.val)EE1+TE.val:=E1.val+T.valETE.val:=T.valTT

6、1*FT.val:=T1.val*F.valTFT.val:=F.valF(E)F.val:=E.valFdigitF.val:=digit.lexval综合属性在分析树中,一个结点的综合属性值是从其子结点的属性值计算出来的;结点属性值的计算正好和自底向上分析建立分析树结点同步进行。只使用综合属性的属性文法称为S-属性文法。例S-属性文法产生式语义规则EE1+TE.val:=E1.val+T.valETE.val:=T.valTT1*FT.val:=T1.val*F.valTFT.

7、val:=F.valF(E)F.val:=E.valFdigitF.val:=digit.lexvaldigitlexval:=3Fval:=3Tval:=3digitlexval:=5Fval:=5Tval:=15*Eval:=15+digitlexval:=4Fval:=4Tval:=4Eval:=193*5+4的带注释的分析树继承属性每个文法符号可以和一个继承属性值联系,属性值的设置和语法结构的语义以及翻译程序的需要有关。一个结点的继承属性值是由该结点兄弟结点和/

8、或父结点的属性值计算出来的。例进行变量说明的类型定义reala,b,cDTLTintTrealLL,idLid带有继承属性L.in的属性文法产生式语义规则DTLL.in:=T.typeTintT.type:=integerTrealT.type:=realLL1,idL1.in:=L.inaddtype(id.entry,L.in)Lidaddtype(id.entry,L.in)cbDT.typeL.inrealL.in,L.in,a每一个L结点处都带有继承属性in的分析树

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

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

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