形式语义学-程序设计语言原理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《形式语义学-程序设计语言原理课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式 语义学 程序设计语言 原理 课件
- 资源描述:
-
1、2022-12-211本PPT参考了金英老师的课程内容2022-12-2122022-12-213代数语义学代数语义学理论基础理论基础函数式描述方法函数式描述方法程序设计语言程序设计语言形式语义形式语义指称语义学指称语义学操作语义学操作语义学公理语义学公理语义学代数代数功能功能执行执行逻辑逻辑 关系关系模型模型2022-12-214离散数学离散数学程序设计语言程序设计语言形式语义形式语义编译原理编译原理程序设计语言程序设计语言理论理论基础基础语义形式化语义形式化语法形式化语法形式化2022-12-215软件开发方法软件开发方法程序设计语言程序设计语言形式语义形式语义程序设计方法程序设计方法程序
2、设计语言理解程序设计语言理解抽象能力抽象能力Formal MethodFormal SpecificationFormal Verification2022-12-216lWhatWhat?形式语义学:给出对形式语义学:给出对(形式形式)语言及其程序采语言及其程序采用用形式系统方法形式系统方法进行语义定义的方法。进行语义定义的方法。l分类:分类:从不同的角度研究程序的含义从不同的角度研究程序的含义操作语义学操作语义学(执行)执行)指称语义学指称语义学(功能)(功能)公理语义学公理语义学(逻辑)(逻辑)代数语义学代数语义学(代数,抽象数据结构(代数,抽象数据结构)其他其他2022-12-2172
3、022-12-218l 表达式表达式l自由变量(计算一个自由变量(计算一个 表达式的自由变量表达式的自由变量集合集合)l替换(计算)替换(计算)l变换规则变换规则 (三种变换)(三种变换)l归约归约 l范式(性质及其计算)范式(性质及其计算)2022-12-219l 表达式表达式 一个一个 表达式表达式由变量名、抽象符号由变量名、抽象符号,.以及括号等符以及括号等符号构成,号构成,其语法为:其语法为::=|.|()2022-12-2110l变换规则变换规则 (三种变换)(三种变换)l 变换:设变换:设E是是 表达式,表达式,x是变量,则称下面变换为是变量,则称下面变换为变换变换(其中(其中y不
4、在不在 FV(x.E)中)中)x.E-y.y/x E l 变换:设变换:设(x.E)和和E0为为 表达式,则称下面变换为表达式,则称下面变换为变换变换(称(称变换规则的左部表达式为变换规则的左部表达式为基)基)(x.E)E0 EE0/xl 变换:假设变换:假设 x.Mx是一个表达式,且满足条件是一个表达式,且满足条件x FV(M),则称下面变换为则称下面变换为变换变换:(x.M x)M 2022-12-2111l自由变量(计算一个自由变量(计算一个 表达式的自由变量集合表达式的自由变量集合)l表达式表达式E中变量名中变量名x的一次出现称为的一次出现称为自由出现自由出现,如果,如果E中任何一个形
5、如中任何一个形如 x.E的子表达式包含该出现;的子表达式包含该出现;ly(x y.y(x.x y)(z(x.x x)的自由变量集合的自由变量集合y,zl替换(计算)替换(计算)设设E和和E0是表达式,是表达式,x是变量名,是变量名,替换替换EE0/x是表示是表示 把把E中的所有中的所有x的自由出现替换成的自由出现替换成E0。l需要明确变量的自由出现需要明确变量的自由出现l计算规则计算规则l(y.x+y)y/x=z.y+z2022-12-2112l范式(性质及其计算)范式(性质及其计算)l假设假设E是一个表达式,且其中没有任何一个是一个表达式,且其中没有任何一个归约基,则称该表达式为归约基,则称
6、该表达式为范式范式。l范式范式的存在性:如的存在性:如果有范式,则最左归约法果有范式,则最左归约法一定能求出范式。一定能求出范式。l范式范式的唯一性:如的唯一性:如果有范式则在果有范式则在 变换下一变换下一定唯一。定唯一。2022-12-2113函数式描述方法函数式描述方法2022-12-2114l函数式语言的特点函数式语言的特点引用透明性;高阶性;模式匹配;并行性;引用透明性;高阶性;模式匹配;并行性;l函数式语言的组成部分函数式语言的组成部分程序结构程序结构类型及其操作类型及其操作表达式表达式l用函数式语言来描述算法(解释器)用函数式语言来描述算法(解释器)函数空间函数空间函数定义(方程)
7、函数定义(方程)2022-12-2115l函数式语言的组成部分函数式语言的组成部分程序结构程序结构l函数定义函数定义l目标表达式目标表达式类型及其操作类型及其操作 标准类型标准类型 -集合类型集合类型 幂集类型幂集类型 -元组类型元组类型 联合类型联合类型 -序列类型序列类型 函数类型函数类型 -递归类型递归类型 抽象类型抽象类型2022-12-2116l函数式语言的组成部分函数式语言的组成部分表达式表达式l非非letlet表达式(常量,变量,表达式(常量,变量,表达式,条件表达表达式,条件表达式,式,以及各种操作)以及各种操作)lletlet表达式表达式 letlet x=E x=E ini
8、n E E lletrecletrec表达式表达式 letrecletrec x=E x=E1 1 inin E El在表达式中增加类型说明在表达式中增加类型说明 2022-12-2117l用函数式语言来描述算法用函数式语言来描述算法函数空间:函数空间:INT*INT BOOL函数定义(方程)函数定义(方程)lookup L a=(null LFALSE,a=hd LTRUE,lookup(tl L)a)2022-12-21182022-12-21192022-12-2120l三种方法三种方法解释器方法解释器方法抽象机抽象机归约方法(归约系统)归约方法(归约系统)l从实现的角度,通过程序的执行
9、过程来定义从实现的角度,通过程序的执行过程来定义程序设计语言的语义;程序设计语言的语义;2022-12-21212022-12-2122l主要思想:主要思想:针对计算机语言,定义一个抽象机来解释执行将该语言的针对计算机语言,定义一个抽象机来解释执行将该语言的程序;程序;l抽象机的定义包括两个部分:抽象机的定义包括两个部分:抽象机组成的抽象定义抽象机组成的抽象定义 状态结构状态结构执行机制的形式定义执行机制的形式定义-状态转换规则状态转换规则l针对如下语言结构给出抽象机定义针对如下语言结构给出抽象机定义表达式表达式语句语句输入输出输入输出声明声明Block过程过程/函数函数2022-12-212
10、3l状态结构(形式定义)状态结构(形式定义)栈(保存中间计算结果)栈(保存中间计算结果)语句控制区语句控制区表达式控制区表达式控制区静态环境区静态环境区动态环境去动态环境去堆区(保存中断现场)堆区(保存中断现场)l初始状态和终止状态初始状态和终止状态l状态转换规则状态转换规则针对每个语法结构给出执行过程针对每个语法结构给出执行过程状态到状态的映射状态到状态的映射2022-12-21242022-12-2125l归约方法的主要思想:归约方法的主要思想:一种一种结构化结构化方法(只依赖于成分的结果)方法(只依赖于成分的结果)根据语言的成分给出归约系统的方法根据语言的成分给出归约系统的方法l归约系统
展开阅读全文