【教学课件】第5章命令式程序的语义.ppt
《【教学课件】第5章命令式程序的语义.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第5章命令式程序的语义.ppt(50页珍藏版)》请在三一办公上搜索。
1、第5章 命令式程序的语义,函数式程序不含赋值或其它形式的改变变量值的操作命令式程序赋值语句是典型的构造本章围绕一个叫做Kernel的简单的命令式语言来讨论语义,5.1 引 言,Kernel语言的结构由下面的文法概括P:=x:=M|P;P|if B then P else P|while B do P odx和M都有适当的类型valB的类型是bool没有显式的输入、输出,也没有局部变量声明例求对数 x:=1;y:=0;while x z do x:=x+x;y:=y+1 od,5.1 引 言,本章主要内容围绕Kernel来讨论命令式语言的语义 基于一组重写规则的结构化操作语义使用类型化演算和论域
2、(CPO)来表示的指称语义把Kernel程序翻译成类型化演算的表达式利用类型化演算的指称语义基于Floyd-Hoare逻辑的公理语义,5.2 Kernel语言,5.2.1 存储单元Kernel的变量可赋值与函数式语言let子句引入的变量有很大区别可赋值变量指称存储单元变量的左值和右值左值是变量的存储单元的地址右值是该存储单元存放的内容为方便讨论,修改语言显式区分左值和右值,例x和cont x,5.2 Kernel语言,例1 求对数 x:=1;y:=0;while cont x z do x:=cont x+cont x;y:=cont y+1od例2:计算m除以n的商q和余数r q:=0;r:
3、=m;while cont r n doq:=cont q+1;r:=cont r n;od,5.2 Kernel语言,5.2.2 表达式的解释在文法中,M和B分别代表val和bool表达式 P:=x:=M|P;P|if B then P else P|while B do P od不深入表达式的内部细节为方便起见,把val看作nat允许普通的数值和布尔运算,5.2 Kernel语言,用4类别代数A来建立Kernel的抽象机器模型作为介绍操作语义和指称语义的共同基础便于比较操作语义和指称语义本小节先介绍相应代数规范的三个类别基调包含3类别val、bool和loc仅关心loc类别有一个取存储单元
4、内容的函数符号 cont:loc val环境把变量从 loc val bool映射到A的元素loc:程序中的变量;val和bool:程序中的常量Abool的解释是布尔值集合true,false,5.2 Kernel语言,5.2.3 程序状态操作语义和指称语义都涉及“状态”数据结构,5.2 Kernel语言,基调的第4个类别stateinit:stateupdate:state loc val statelookup:state loc val代数公理 lookup(update s l v)l=(lookup)if Eq?l l then v else(lookup s l)update s
5、l(lookup s l)=s(update)1 update(update s l u)l v=if Eq?l l(update)2 then update s l v else update(update s l v)l u,5.2 Kernel语言,四类别代数A Aloc是任意的可数集合,Astate是从Aloc到Aval的所有函数的集合 initA是任意的常函数 lookupA(s,l)=s(l)updateA(s,l,v)是函数s,除了s(l)=v以外,s等同于s为了记号上的方便,下面用init,lookup和update代替initA,lookupA和updateA,5.2 Ker
6、nel语言,两个问题为什么不在前三个类别的基础上引入作为状态的函数state=loc val,而要引入第4个类别state若那样,则lookup和update成了高阶的函数符号为什么不用一个函数直接从变量映射到值,而要分离出环境和状态直观上讲,环境和状态在概念上有区别,它们分别对应到实际语言实现的不同机制从技术角度说,Kernel没有提供声明常量的值的方式,只能将程序中常量的取值交给环境来确定,5.3 操作语义,5.3.1 表达式的求值操作语义分成两部分表达式的计算语句的执行表达式的语义表达式、环境、状态和表达式的语义值之间的一个四元关系:M,s eval v环境下标在下面将省略eval由一个
7、证明系统来给出,5.3 操作语义,eval公理x,s eval(x)c,s eval cAeval推理规则 fA(v1,vk)=vlookupA(s,l)=v,5.3 操作语义,5.3.2 命令的执行命令的执行可以用关系exec来刻画updateA(s,(x),v)=s,5.3 操作语义,5.3 操作语义,如果想证明P,s exec s,需要观察P的语法形式,考察哪条规则是完成该证明的最后一条规则例p:=0;m:=0;while(cont m)n dop:=cont m;m:=(cont m)+1;od,5.3 操作语义,p:=0;s1=updateA s lp 0 m:=0;while(co
8、nt m)n dop:=cont m;m:=(cont m)+1;od,5.3 操作语义,p:=0;s1=updateA s lp 0 m:=0;s2=updateA s1 lm 0 while(cont m)n dop:=cont m;m:=(cont m)+1;od,5.3 操作语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n dop:=cont m;m:=(cont m)+1;od,5.3 操作语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n do(cont m
9、)n,s2 eval true p:=cont m;m:=(cont m)+1;od,5.3 操作语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n dop:=cont m;m:=(cont m)+1;(p:=cont m;m:=(cont m)+1),s2 exec s3od,5.3 操作语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n dop:=cont m;m:=(cont m)+1;lookupA s3 lp=0&lookupA s3 lm=1od,5.3 操作
10、语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n do(cont m)n,s3 eval true p:=cont m;m:=(cont m)+1;lookupA s3 lp=0&lookupA s3 lm=1od,5.3 操作语义,p:=0;m:=0;lookupA s2 lm=lookupA s2 lp=0while(cont m)n dop:=cont m;m:=(cont m)+1;lookupA s3 lp=0 m:=(cont m)+1),s3 exec s4 od,5.3 操作语义,p:=0;m:=0;lookupA
11、 s2 lm=lookupA s2 lp=0while(cont m)n dop:=cont m;m:=(cont m)+1;lookupA s4 lp=1 m:=(cont m)+1),s3 exec s4 od,5.4 指称语义,带状态的类型化演算前两章已经给出了类型化演算的指称语义只要给出从Kernel语言到类型化演算的翻译即可把Kernel程序翻译成类型化演算state,fix,该演算有类型常量val,bool,loc,state和statestate,fix,演算还增加的运算Eq?:loc loc bool在state上的运算init,update和lookup,5.4 指称语义,每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 命令 程序 语义

链接地址:https://www.31ppt.com/p-5658952.html