第七章 语法制导翻译和中间代码生成.pptVIP

第七章 语法制导翻译和中间代码生成.ppt

  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文档。上传文档
查看更多
第七章 语法制导翻译和中间代码生成.ppt

第七章 语法制导翻译和中间代码生成 1、语义分析的任务 在词法分析和语法分析的基础上,分析所写源程序的含义,在理解含义的基础上为生成相应的目标代码作好准备或直接生成目标代码。 语义检查、语义处理 -语义检查 例:类型、运算、维数、越界 -语义处理 例:变量的存储分配 例:表达式的求值 例:语句的翻译(中间代码的生成) 7.1 属性文法 - 语义分析的描述 描述语法规则的同时,编写相应的语义动作和计算顺序 - 语义的形式化描述 操作语义学、公理语义学、指称语义学 - 属性文法 接近形式化的语义描述方法 属性文法的定义 - 三元组:A=(G,V,F) G 是上下文无关文法 V 属性的有穷集 F 关于属性的断言和谓词 - 关系 语义信息作为终结符和非终结符的属性 语义分析定义为产生式的断言和谓词 用法 - 针对语义,为文法符号设置属性 终结符使用单词的属性 - 为每个产生式设置语义规则 描述各属性的关系 - 语义规则的两种描述: 语法制导定义:语义的抽象说明 翻译方案:规定实现方法(计算次序) 一、属性 1、定义:代表与文法符号(Vt或Vn )相关的信息。 属性可以为任何特性。 例如:变量的类型、层次,存储地址;表达式类型,值;程序的目标代码等。 2、属性值:与属性相关的信息,可以在语法分析过程中计算和传递。 3、属性的表示: X.属性值 产生式的左、右部有相同的符号时用下标或上标来区别。 例 E?E1+T {E.val:=E1?val+T.val} 4、属性加工的过程即语义的处理过程。 二、属性文法 1、语义规则(属性等式) 为文法的每一个产生式(规则)配备的计算属性的计算规则。 2、属性文法 为文法的每个符号引入一组属性,且让该文法附加上语义规则时,构成了属性文法。 表示: 文法规则(产生式) 语义规则 规则1 相关的属性等式 ? ? 规则n 相关的属性等式 - 1、编制相应问题的文法 - 2、将右侧以“|”连接的产生式都拆为独立的产生式,将所有产生式按序排列好 - 3、分析题目的要求,引入属性 方法:举出若干实例,并画出相应的语法树,从中总结出属性,并得出每个产生式计算属性的计算规则。 - 4、写出属性文法。 - 1、编制算术表达式的文法 L ?E E ?E1+T|T T ?T1*F|F F ?(E)|digit - 2、引入属性表示语义信息 将值 val 作为表达式 E、项 T 和因子 F 的属性 - 3、用语义规则描述表达式的求值 补充: 数字串的文法: N?N1D N?D D?0 D?1 D?9 计算一个输入串 的值。 例如‘186’ 例:说明语句类型信息统计 - 目的 分析说明语句 D,为变量指定类型 例如 int a,b,c 可说明a,b,c类型为整型 - 方法 1、编写说明语句的文法 (1)D→TL (2)T→int (3)T→real (4)L→L1,id (5)L→id - 1、语法制导定义 构造属性文法时,不指明翻译时语义规则的计算 顺序,这样的属性文法称为语法制导定义。 如: - 2、翻译方案 把语义规则用{ }括起来,插入到产生式的合适位 置上,指明语义规则的计算顺序,则称为翻译方案。 设计简单问题的语法制导定义和翻译方案 是本章的重点和难点。 将赋值语句变换为语法结构树 -设置属性: E. nptr 是语法结构树指针 id.entry 是名字的表项入口 -树构造函数 mknode 建中间结点 mkleaf 建叶结点 本章总结 - 1、属性文法的编制(必考) - 2、语法制导翻译的定义 - 3、中间语言 (1)种类 (2)各种形式的中间语言的表示 (3)各种形式的中间语言的求法: 重点是逆波兰式的求法 赋值语句:a:=b*c+b*d assign + id a id d id b * id c id b * id := + * * id id id id S E E E E E E E id := + * * id id id id S E E E E E E E 二、三元式 形式 (运算符op,运算对象ARG1,运算对象ARG2) 注意:运算结果用三元式编号表示。 如:b*c (*,b,c) 三、四元式 - 形式 (运算符op,运

文档评论(0)

czy2014 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档