- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
形式化语义(动态语义) 指称语义 1.1 语义函数 例1 语法与语义的关系 例2 二进制数的语法与语义 例3 一个计算器的语法与语义 例3 一个计算器的语法与语义(续) 定义1.1 1.2 函数定义的符号表示 1.2 函数定义的符号表示(续) 1.3 域(Domains) 1.3 域(Domains)(续1) 1.3 域(Domains)(续2) 1.3 域(Domains)(续3) 1.3 域(Domains)(续4) 本节主要内容 参考书目 结 束(2005年5月20日) 上节内容回顾 本节主要内容 一、存储(Storage) 1.1 存储模型 ① 描述存储基本特性的辅助函数 辅助函数的符号表示 ③ 举例 1.2 存储模型实例-无存储的计算器 1.2 存储模型实例-有存储的计算器 1.2 存储模型实例-有存储的计算器(续1) 1.2 存储模型实例-有存储的计算器(续2) 1.2 存储模型实例-有存储的计算器(续3) 1.2 存储模型实例-有存储的计算器(续4) 二、环境(Environment) 二、环境(Environment)(续) 2.1 环境模型① 描述环境基本特性的辅助函数 ② 辅助函数符号表示 2.2 环境模型实例-含有声明的语言 2.2 环境模型实例-含有声明的语言(续1) ④ 语义方程 2.2 环境模型实例-含有声明的语言(续2) 2.2 环境模型实例-含有声明的语言(续3) 内容回顾 内容回顾(续) 习题 结 束(2005年5月27日) 本节主要内容 一、抽象(Abstractions) 1.1 函数抽象(Function abstractions)(不改变存储的抽象) 1.1 函数抽象(续1) 1.1 函数抽象(续2) 1.1 函数抽象(续3) 1.1 函数抽象(续4) 1.2 过程抽象(Procedure abstractions)(改变存储的抽象) 1.2 过程抽象(续1) 1.2 过程抽象(续2) 1.2 过程抽象(续3) 1.3 参数(Parameters) 1.3.1 定义性参数机制(续1) 1.3.1 定义性参数机制(续2) 1.3.1 定义性参数机制(续3) 1.3.2 拷贝参数机制(Copy parameter mechanisms) 1.3.2 拷贝参数机制(续1) 1.3.2 拷贝参数机制(续2) 1.3.2 拷贝参数机制(续3) 1.4 组合类型(Composite types) 1.4 组合类型(续1) 1.4 组合类型(续2) 1.4 组合类型(续3) 1.4 组合类型(续4) 举例:一个较为复杂的例子,允许对变量被有选择地修改 举例(续1)-语法 举例(续2)-指称 举例(续3)-辅助函数 举例(续4)-指称与语义方程 举例(续5)-指称语义(1) 举例(续5)-指称语义(2) 1.5 失败(Failures) 1.5 失败(续1) 1.5 失败(续2) 1.5 失败(续3) 1.5 失败(续4) 结 束(2005年6月3日) 最后必须把过程声明的语义方程修改如下: elab [proc I(FP)~C]env sto (6.103) let proc arg sto = let (parenv,sto) = copy-in FP arg sto in let sto = exec C (overlay(parenv,env))sto in copy-out FP parenv arg sto in (bind(I,procedure proc),sto) 这里,sto是调用时的存贮。处理入口时的参数(copy-in)产生一个绑定parenv,同时也把存贮改变为sto。执行过程体C进一步把存贮改变为sto 。处理返回时的参数(copy-out),可能产生更多的存储改变,从而完成过程调用。 一个原子变量占据一个单一配置;用辅助函数fetch检查原子变量的值;用辅助函数update修改原子变量。 出于两个原因,组合类型变量更复杂一些。其一,组合变量所具有的值自身是组合的,如它们由几个值的分量组成。其二,组合变量可能被有选择地修改,通过一个命令修改一个分量,而其它分量不受干扰。 下边讨论的存储模型假设一个配置是最小的存储单元。 它的内容可以被查看或修改; 但不假设所有配置含有相等量的信息(如具有固定字大小的计算机中); 因此不同配置可以包含真值、整型数等,甚至组合值; 最基本的是配置中的内容绝对不能被有选择地修改。 在支持组合变量、但是不允许有选择修改这种变量的语言中,一个组合变量可以占据一个单一配置。在
文档评论(0)