命令式程序的語義

命令式程序的語義

ID:27086131

大小:538.51 KB

頁(yè)數(shù):50頁(yè)

時(shí)間:2018-12-01

命令式程序的語義_第1頁(yè)
命令式程序的語義_第2頁(yè)
命令式程序的語義_第3頁(yè)
命令式程序的語義_第4頁(yè)
命令式程序的語義_第5頁(yè)
資源描述:

《命令式程序的語義》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第5章命令式程序的語義函數(shù)式程序不含賦值或其它形式的改變變量值的操作命令式程序賦值語句是典型的構(gòu)造本章圍繞一個(gè)叫做Kernel的簡(jiǎn)單的命令式語言來討論語義5.1引言Kernel語言的結(jié)構(gòu)由下面的文法概括P::=x:=M

2、P;P

3、ifBthenPelseP

4、whileBdoPodx和M都有適當(dāng)?shù)念愋蛌alB的類型是bool沒有顯式的輸入、輸出,也沒有局部變量聲明例求對(duì)數(shù)x:=1;y:=0;whilex

5、稱語義把Kernel程序翻譯成類型化?演算的表達(dá)式利用類型化?演算的指稱語義基于Floyd-Hoare邏輯的公理語義5.2Kernel語言5.2.1存儲(chǔ)單元Kernel的變量可賦值與函數(shù)式語言let子句引入的變量有很大區(qū)別可賦值變量指稱存儲(chǔ)單元變量的左值和右值左值是變量的存儲(chǔ)單元的地址右值是該存儲(chǔ)單元存放的內(nèi)容為方便討論,修改語言顯式區(qū)分左值和右值,例x和contx5.2Kernel語言例1求對(duì)數(shù)x:=1;y:=0;whilecontx

6、?ndoq:=contq+1;r:=contr–n;od5.2Kernel語言5.2.2表達(dá)式的解釋在文法中,M和B分別代表val和bool表達(dá)式P::=x:=M

7、P;P

8、ifBthenPelseP

9、whileBdoPod不深入表達(dá)式的內(nèi)部細(xì)節(jié)為方便起見,把val看作nat允許普通的數(shù)值和布爾運(yùn)算5.2Kernel語言用4類別代數(shù)A來建立Kernel的抽象機(jī)器模型作為介紹操作語義和指稱語義的共同基礎(chǔ)便于比較操作語義和指稱語義本小節(jié)先介紹相應(yīng)代數(shù)規(guī)范的三個(gè)類別基調(diào)?包含3類別val、bool和loc僅關(guān)心loc類別有一個(gè)取存儲(chǔ)單元內(nèi)容的函數(shù)符號(hào)cont:loc?val環(huán)

10、境?把變量從?loc??val??bool映射到A的元素?loc:程序中的變量;?val和?bool:程序中的常量Abool的解釋是布爾值集合{true,false}5.2Kernel語言5.2.3程序狀態(tài)操作語義和指稱語義都涉及“狀態(tài)”數(shù)據(jù)結(jié)構(gòu)名字存儲(chǔ)單元狀態(tài)值環(huán)境從名字到值的兩步映射5.2Kernel語言基調(diào)?的第4個(gè)類別stateinit:stateupdate:state?loc?val?statelookup:state?loc?val代數(shù)公理lookup(updatesl?v)l=(lookup)ifEq?ll?thenvelse(lookupsl)upd

11、atesl(lookupsl)=s(update)1update(updateslu)l?v=ifEq?ll?(update)2thenupdateslvelseupdate(updatesl?v)lu5.2Kernel語言四類別代數(shù)AAloc是任意的可數(shù)集合,Astate是從Aloc到Aval的所有函數(shù)的集合initA是任意的常函數(shù)lookupA(s,l)=s(l)updateA(s,l,v)是函數(shù)s?,除了s?(l)=v以外,s?等同于s為了記號(hào)上的方便,下面用init,lookup和update代替initA,lookupA和updateA5.2Kernel語言

12、兩個(gè)問題為什么不在前三個(gè)類別的基礎(chǔ)上引入作為狀態(tài)的函數(shù)state=loc?val,而要引入第4個(gè)類別state若那樣,則lookup和update成了高階的函數(shù)符號(hào)為什么不用一個(gè)函數(shù)直接從變量映射到值,而要分離出環(huán)境和狀態(tài)直觀上講,環(huán)境和狀態(tài)在概念上有區(qū)別,它們分別對(duì)應(yīng)到實(shí)際語言實(shí)現(xiàn)的不同機(jī)制從技術(shù)角度說,Kernel沒有提供聲明常量的值的方式,只能將程序中常量的取值交給環(huán)境來確定5.3操作語義5.3.1表達(dá)式的求值操作語義分成兩部分表達(dá)式的計(jì)算語句的執(zhí)行表達(dá)式的語義表達(dá)式、環(huán)境、狀態(tài)和表達(dá)式的語義值之間的一個(gè)四元關(guān)系:?M,s???evalv環(huán)境下標(biāo)在下面將省略?e

13、val由一個(gè)證明系統(tǒng)來給出5.3操作語義?eval公理?x,s??eval?(x)?c,s??evalcA?eval推理規(guī)則fA(v1,…,vk)=vlookupA(s,l)=v?M1,s??evalv1…?Mk,s??evalvk?fM1…Mk,s??evalv?x,s??evall?contx,s??evalv5.3操作語義5.3.2命令的執(zhí)行命令的執(zhí)行可以用關(guān)系?exec來刻畫updateA(s,?(x),v)=s??M,s??evalv?x:=M,s??execs??P1,s??execs??P2,s???execs???P1;P2,s??e

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。