《编译原理》第章语法制导翻译.pdf

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理》第章语法制导翻译

编译原理 武汉大学计算机学院 编译原理课程组 语义分析 语法正确并不能保证含义(语义)正确。 依据语言的语义规则对语法分析得到的语法结构进行静态 语义检查 (确定类型、类型和运算合法性检查、识别含义与相 应的语义处理及其它一些静态语义检查),并用另一种内部形 式表示出来,或者直接用目标语言表示出来。 语义分析 程序的含义涉及两方面:数据结构的含义与控制结构的含义。 数据结构的含义——名字的含义(类型正确性检查)。 控制结构的含义——语言自身定义(形式化与非形式化)。 语义分析 语义分析的基本功能: ◆ 确定类型——数据类型(词法分析) ◆ ◆ 类型检查——运算合法性、运算对象类型一致性或相容性 ◆ ◆ 识别含义——语法成分的含义(中间代码、目标代码) ◆ ◆ 其他静态语义检查——控制流检查等 ◆ 语义分析 一般情况下,语义分析仅产生中间代码,因为: ◆ 词法分析与语法分析简单、比例小,有利于难点分解; ◆ ◆ 有利于中间代码优化; ◆ ◆ 有利于程序的移植; ◆ ◆ 有利于任务的分解、人员的组织。 ◆ 语义分析 语义是上下文有关的,进行形式化很困难。 尚无公认的、广泛被接受与流传的语义形式化系统用于描 述程序设计语言的语义。 尚未形成可用于编译程序构造的、系统的形式化语义算法 或典型技术。 语法制导翻译技术有利于语义分析与目标代码生成的形式 化走向实用。 第8章 语法制导翻译 ◆ 属性文法 ◆ ◆ 目标代码结构 ◆ ◆ 中间代码 ◆ ◆ 控制语句的翻译 ◆ 8.1 语法制导翻译 1. 属性文法 (Attribute Grammar) 属性可以是需要表达或涉及的任何内容,如名字的类型、名字 的值、名字的存储地址、生成的代码以及查填符号表的操作、打印 出错信息的操作、生成代码的操作等。 属性值的计算,由语法分析过程中产生的语法分析树相应结点 的环境推导出来。 为产生式附加子程序,用于计算文法符号的属性值。 8.1 语法制导翻译 1. 属性文法 (Attribute Grammar) 对某个上下文无关文法,为每个文法符号指定一组属性,且为 文法中的每个产生式附加一段属性计算方法——语义规则/语义动作 /语义子程序,则称该文法为属性文法。 8.1 语法制导翻译 1. 属性文法——举例 G[L]: L →En print(E.val); E →E +T E.val:=E .val+T.val; 1 1 E →T E.val:=T.val; T →T *F T.val:=T .val*F.val; 1 1 T →F T.val:=F.val; F →(E)

文档评论(0)

docman126 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档