编译原理语义分析与中间代码生成.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

语义分析与中间代码生成复习:编译程序的逻辑过程按照编译程序的逻辑工作过程,语法分析后,接下来就要进行语义分析了,语义分析后,再生成中间代码。实际应用中,往往在语法分析的同时,进行语义分析并生成中间代码,这就是语法制导翻译法。语法制导翻译过程中,需要借助于属性文法进行语义描述和语义处理。本章内容:属性文法有关概念;语法制导翻译基本思想;中间代码形式;简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻译。

属性文法表达式文法E—T+T|TorTT—n|bE?T1+T2{T1.type=intT2.type=T1.type E.type=int}E?T1orT2{T1.type=boolT2.type=T1.typeE.type=bool}T?n{T.type=int}T?b{T.type=bool}

对于某个压缩了的文法,当把每个文法符号和一组属性相关联,并把产生式附加以语义规则的时候,就得到属性文法。语法制导的翻译过程:由于属性文法的规则和产生式是一一对应的关系,所以,由属性文法确定的语义分析可以在语法分析的过程中进行。这个过程称为语法制导的翻译。属性文法

属性文法(attributegrammar)A=(G,V,F),其中G:一个CFG,属性文法的基础。V:有穷的属性集每个属性与一个文法符号相关联这些属性代表与文法符号相关的语义信息如类型、地址、值、代码、符号表内容等等属性与变量一样,可以进行计算和传递属性加工的过程即是语义处理的过程属性加工与语法分析同时进行属性的表示:标识符(或数),写在相应文法的下边点记法:E.Val,E.Place,E.Type…F:关于属性的属性断言或一组属性的计算规则(称为语义规则).断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相关的属性.

属性计算静态语义检查符号表操作代码生成语义规则描述的工作

继承属性和综合属性两类属性:综合属性(SynthesizedAttribute):归约型属性用于“自下而上”传递信息继承属性(InheritedAttribute):推导型属性用于“自上而下”传递信息。属性的计算:A?X1X2…XnA的综合属性,计算S(A)=f(A(X1),…A(Xn))Xj的继承属性,计算I(Xj)=f(A(A),...A(Xn))文法符号属性的说明:非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性.终结符只有综合属性.通常规定:文法符号的综合属性与继承属性无交。

综合属性的例子非终结符E、T及F都有一个综合属性val,符号digit有一个综合属性,它的值由词法分析器提供。与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,可认为这条规则定义了L的一个虚属性。某些非终结符加上标是为了区分一个产生式中同一非终结符多次出现语义规则L→EE→E1+TE→TT→T1*FT→FF→(E)F→digitPrint(E.val)E.val=E1.val+T.valE.val=T.valT.val=T1.val?F.valT.val=F.valF.val=E.valF.val=digit.lexval产生式

综合属性的自下而上定值LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*3*5+4的带注释的分析树设表达式为3*5+4,则语义动作打印数值19

继承属性的例子继承属性L.in产生式语义规则D?TLT?intT?realL?L1,idL?idL.in=T.typeT.type=integerT.type=realL1.in=L.inaddtype(id.entry,L.in)addtype(id.entry,L.in)

Din=realin=realin=realT.type=realrealid2id1id3Realid1,id2,id3继承属性的自上而下定值

语法制导翻译的基本思想为每条产生式配上一个翻译子程序(称为语义动作或语义子程序);语义动作的工作指明符号串的意义;按照这种意义规定了对应的动作:查添各种表格改变变量之值诊察与报告源程序错误产生中间代

文档评论(0)

SYWL2019 + 关注
官方认证
文档贡献者

权威、专业、丰富

认证主体四川尚阅网络信息科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510100MA6716HC2Y

1亿VIP精品文档

相关文档