网站大量收购闲置独家精品文档,联系QQ:2885784924

《第8章语法制导翻译和中间代码4学时.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 语法制导翻译和中间代码生成 马子睿 概述 程序设计语言的语义 静态语义——是对程序约束的描述,这些约束无法通过抽象语法规则来妥善地描述,实质上就是语法规则的良形式条件,它可以分为类型规则和作用域/可见性规则两大类 动态语义——程序单位描述的计算 编译程序的语义处理工作 静态语义审查 解释执行动态语义(计算)生成代码... 语义处理 静态语义分析:审查语法结构的静态语义 确定标识符的数据类型 类型检查和转换:检查运算对象的数据类型是否合法,必要时进行类型转换 一致性检查:一个对象只能被声明一次 作用域检查 控制流检查:控制语句转到合法的地方继续执行 翻译(若静态语义分析正确后才翻译) 概述 语义形式化 语义建模 文法模型——属性文法 命令式或操作式模型——操作语义学 应用式模型——指称语义学 公理式模型——公理语义学 属性文法 表达式文法 E—T+T| T or T T—n | b E ? T1 + T2 { T1.type = int T2.type= T1.type E.type :=int} E ? T1 or T2 { T1.type = bool T2.type= T1.type E.type :=bool} T ? n { T.type := int} T ? b { T.type := bool} 操作语义学 通过执行该段程序所改变的计算机状态来反映语义。 包括变量的所有值,可执行程序本身,各种系统定义的内部数据结构。用一组形式定义的操作来说明执行一条指令相应的状态怎样变化。 For (expr1;expr2;expr3) expr1; { Loop:if expr2=0 goto out 。。。 … } expr3; goto loop out: ... 指称语义学 基本概念是给每一段程序实体定义一个数学意义上的对象,和一个从实体实例向数学意义对象的映射的函数 特点:不但对全部程序赋予全文而且对程序设计语法 每一个语法成分短语(表达式,命令,声明…)都给予含义。 每一个语法成分(短语)的含义是以它的自身成分的含义的术语来定义的。 语义函数: 程序设计语言的语义利用映射函数来证明。语义函数将短语映射到它的指称。 Valuation[101] 表示把Valuation施用于101 Valuation[N] ------ 把它施用于N 定义: Valuation(用四个方程)因为有四个形式numeral Valuation[0] ?0 Valuation[1] ?1 Valuation[N0] ?2?Valuation [N] Valuation[N1] ?2?Valuation [N]+1 所以: Valuation[110]=2 ? Valuation[11] = 2 ? (2 ? Valuation[1]+1) =2 ?(2 ? 1+1) =6 公理语义学 一个语言的每个语法成分的含义定义为公理和演绎规则,用于推导出该成分执行的效果。 公理语义概念是随着程序正确性的证明而发展的。当正确性证明能构造时表明程序执行它的规格说明所描述的计算。在一个证明中,每一个语句之前之后都有一个逻辑表达式对程序的变量进行约束,以此说明这个语句的含义。 一般的记号

文档评论(0)

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

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

1亿VIP精品文档

相关文档