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

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

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  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文档。上传文档
查看更多
语法分析后的源程序语义处理中间代码 语法制导翻译和中间代码生成§8.1概述一、语义处理的任务: 编译中的语义处理是指两个功能:第一 静态语义分析或静态审查。静态语义分析通常包括:  ① 类型检查。 ② 控制流检查。控制流语句必须使控制转移到合法 的地方。  ③ 一致性检查。 ④ 相关名字检查。有时,同一名字必须出现两次或 多次。例如,Ada 语言程序中,循环或程序块可 以有一个名字,出现在这些结构的开头和结尾, 编译程序必须检查这两个地方用 的名字是相同的。 ⑤ 名字的作用域分析 第二 动态语义处理:如果静态语义正确,语义处理则要执行真正的翻译,即,或者将源程序翻译成程序的一种中间表示形式(中间代码),或者将源程序翻译成目标代码。二、属性文法: 1、属性: 所谓属性,其涉及的概念比较广泛,常用以描述事物或人的特征、性质,品质等等。比如,谈到一个 物体,可以用“颜色”描述它,谈起某人,可以使用“有幽默感“来形容他。对编译程序使用的语法树的结点,可以用类型、值或存储位置来描述它。 2、属性文法(也称属性翻译文法)它是在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的值(称为属性)。这些属性代表与文法符号相关信息,例如它的类型、值、代码序列、符号表内容等等。属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则。假如语法分析方法是自下而上的。在用某一产生式进行归约的同时就执行相应的语义动作,在分析出一个句子时,这个句子的值也就同时产生了3、属性文法的定义:一个属性文法是一个三元组: A=(G,V,F), G: 是一个上下文无关文法 V: 有穷的属性集,每个属性与文法的一终结符 或非终 结符相连。 F: 关于属性的属性断言或谓词集.每个断言与一个 产生式相 联。一个断言就是一个语义规则, 描 述各属性的关系。用法:针对语义:为每个符号设置一个属性,终结符号用单词属性。为每个产生式设置语义规则——描述各属性的关系。例如:定义表达式的文法如下: E?E+E E?(E)E?n 给出定义表达式值的属性文法。 我们为文法符号E引进属性符号val,用E.val表示E的值,属性计算规则以赋值语句的形式给出,附在每个产生式后,并用大括号括起来。为了明确E的不同出现位置,用上角标区别。终结符n的值是词法分析程序提供的,这里用n.lex表示。下面给出属性文法: E?E1+E2 {E.val := E1.val +E2.val} E?(E1) {E.val := E1.val } E?n {E.val := n.lex}属性文法的主要思想有两点: 首先对于每个文法符号引进相关的属性符号; 其次对于每个产生式写出属性值计算的规则。属性分为两种:继承属性和综合属性. 综合属性:在语法树中,一个结点的综合属性由该结点 的子结点的属性值确定。它的计算规则由底 向上. 继承属性:在语法树中,一个结点的继承属性由该结点的 父结点/兄弟结点的属性确定。即它 的计算规 则由顶向下。 例如定义表达式值的属性文法, E.val是一个综合属性的例子: E?E1+E2 {E.val := E1.val +E2.val} E?(E1) {E.val := E1.val } E?n {E.val := n.lex}考虑句子2+(3+1)的求值顺序,将2+(3+1)的语法树结点改为有附加属性的结点(这样的树称为带注释的语法树): E.val=6 E.val=2 + E.val=4 n.lex=2 ( E.val=4 ) E.val=3 + E.val=1 n.lex=3 n.lex=1 又例:一个简单台式计算器的定义 综合属性val 产 生 式语 义 规 则Print(E.val) L E E.val:=E1.val+T.valE E1+TE T E.val:=T.valT T1 * F T.val:=T1.val ? F.valT F T.val:=F.valF (E)F.val:=E.valF digitF.val:=digit.lexval3*5+4的带注释的分析树只使用综合属性.LE.val=19E.val=15T.val=4+T.val=15F.val=4F.val=5T.val=3*digit.lexval=4F.val=3digit.lexval=5digit.lexval=33*5+4的带注释的分析树产生式语 义 规 则D ?TLL.in:=T.type T? intT.ty

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地未知
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档