999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯原理中語義分析的教學探討

2008-12-31 00:00:00陳文宇王曉斌余盛季
中國校外教育(下旬) 2008年19期

[摘要]編譯原理課程是高校計算機類專業的重要的基礎和骨干課程。而語義分析又是編譯原理課程重點中的難點。它設計了抽象機模型,使用抽象機的操作行為描述程序設計語言的語義。針對傳統的分支和循環語句,分析了控制結構的抽象,提出了分支和循環控制語句的語義模型。在編譯原理課程的教學中,有效地幫助學生理解了語義分析的原理和技術。

[關鍵詞]編譯原理 控制結構 語法制導翻譯 語義模型

一、引言

編譯原理是計算機學科中少有的從實踐到理論,再從理論到實踐的一門專業課程。編譯技術不斷進步,已經成為計算機科學中發展最迅速、最成熟的一個重要分支。編譯技術集中體現了計算機科學發展的重要成果與精華。程序語言及其編譯的研究在計算機科學中始終處于非常重要的地位。

在語言及編譯理論中,文法(BNF)和語法圖已成為語言語法描述的典型工具,但語義描述至今尚無人們普遍接受的典型描述工具。采用操作語義學的方法來描述語義,即以一個抽象機的行為來描述語言的各個結構的作用和含義。

二、抽象機

抽象機由一個指令指針ip、一個存儲器、一個控制器和一個運算器組成。

抽象機一旦啟動,由專門的裝入程序將一個要運行的程序裝入代碼存儲器中,并置ip指向該程序的第一條指令。然后依次完成下述工作:

(1)執行ip所指向的指令。

(2)修改ip的內容。

若所執行的指令已修改過ip,則不再修改ip;若所執行的指令未修改ip,那么修改ip使之指向下一條指令,即 ip:=ip+1。

(3)若ip指向特殊的STOP指令,則終止執行,否則轉回執行(1)。

假設抽象機對各種程序設計語言所常用的運算符(如+,-,*,/,>,<,>=等)都有相應的指令與之對應。因此,只要知道抽象機操作的語義,也就知道了語言結構的語義。

為了顯示修改ip的內容,抽象機提供兩種特殊的轉移指令:無條件轉移指令(goto L)和條件轉移指令(if B goto L)。

三、語法制導翻譯

源程序的句子經過詞法分析和語法分析后,已將詞法錯誤和語法錯誤檢查出來,并由程序員進行了修正,得到語法上正確的句子,下一步對這些語法上正確的句子,按照句子的語義規則進行語義分析,其目的是生成代碼并實現其語義。因此,語義分析與代碼生成是緊密相關的。為便于移植和優化,將句子翻譯成抽象機的指令形式,稱為中間代碼,經過優化后再翻譯成目標代碼。最終的目標代碼質量較高,并可以提高執行效率。

在語法分析過程中,根據每個產生式所對應的語義子程序(語義動作)進行翻譯(生成中間代碼)的方法稱為語法制導翻譯。

四、控制結構的抽象

順序、選擇和重復可以幫助程序員組織語句的控制流程,是基本控制工具。順序是按計算機程序計數器提供的順序獲得指令的一種抽象。選擇和重復是對硬件顯式修改程序計數器的值,實現無條件轉移和條件轉移的抽象,這樣的控制既簡單又有效。抽象控制結構比顯式控制轉移修改指令計數器的低級控制機制更好些,它更面向問題,有利于程序設計。程序員通過使用順序、選擇和重復的一般模式就能較好地表達他們的意圖。

高級語言結構最終還是要翻譯成傳統計算機的條件轉移和無條件轉移機器代碼。將由編譯程序生成有效的中間代碼,而編譯程序必須利用轉移指令將控制抽象進行具體化。

分支控制結構允許程序員在某些可選擇的語句中做出一種選擇來執行。有兩種基本的分之控制結構:單選控制(if…then…)和二選一控制(if…then…else…)。

循環控制結構允許程序員控制某些語句可以執行0次或多次。

五、語義模型

(1)單選控制結構語句 if B then S

對應的控制可以表示為(中間代碼形式)

if B goto B.T

goto S. next

B.T:

┇//語句S對應的中間代碼段

S.next:

表示為語義模型如圖1所示。

其中,曲線表示語句S1對應的可能的中間出口轉移。

(2)二選一控制結構語句if B S1else S2

圖2 if B S1else S2語句的語義模型

對應的控制可以表示為(中間代碼形式)

if B goto B.T

goto B.F

B.T:

┇//語句S1對應的中間代碼段

goto S. next

B.F:

┇//語句S2對應的中間代碼段

S.next:

表示為語義模型如圖2所示。

其中,曲線表示語句S1和S1對應的可能的中間出口轉移。

(3)循環控制結構語句 while B do S

圖3while B do S 語句的語義模型

對應的控制可以表示為(中間代碼形式)

again: if B goto B.T

goto S. next

B.T:

┇//語句S對應的中間代碼段

goto again

S.next:

表示為語義模型如圖3所示。

六、語義子程序

根據控制語句的語義模型,容易得到分支、循環控制語句的語義子程序。以二選一控制結構語句為例。

(1)M→if B then{backpatch(B.T,ip); M.CHAIN=B.F;}

(2)N→M S1 else{q=ip; emit(goto 0);backpatch(M.CHAIN,ip);

N.CHAIN=merge(S1.CHAIN,q);}

(3)S→N S2{S.CHAIN=merge(S2.CHAIN,N.CHAIN);}

七、總結

編譯原理中的語義分析是難以理解和掌握的,語義描述的傳統方法是流程圖,但沒有對控制轉移部分進行顯示的標注,單憑流程圖進行語義子程序的構造,學生普遍難以接收。而采用語義模型的表示,直觀地表達了控制轉移,對文法產生式的改寫和語義子程序的構造提供了清晰的思路,實踐表明,在編譯原理課程的教學中,有效地幫助學生理解了語義分析的原理和技術。

參考文獻:

[1]蔣宗禮,姜守旭.形式語言與自動機理論[M].北京:清華大學出版社,2007.

[2] 龔天富.語言及編譯[M].北京:電子工業出版社,2003.

[3]Andrew W.Apple.現代編譯器的Java實現[M].北京:電子工業出版社,2004.

[4]Dick Grune etc.Modern Compiler Design[M].JOHN WILEYSONS,LTD,2002.

[5]余勝泉,張建偉.信息時代的教學與實踐[M].北京:高等教育出版社,2005.

(作者單位:四川電子科技大學)

主站蜘蛛池模板: 欧美一级黄色影院| 四虎影视库国产精品一区| 一级成人a做片免费| 欧美人在线一区二区三区| 欧美国产日韩另类| 国产91透明丝袜美腿在线| 欧美精品三级在线| AV无码国产在线看岛国岛| 国产成人av一区二区三区| 欧美一级夜夜爽| jizz在线免费播放| a天堂视频| 亚洲精品国产精品乱码不卞 | 91精品专区国产盗摄| 国产精品一线天| 久久99热66这里只有精品一| 朝桐光一区二区| 久久人人97超碰人人澡爱香蕉 | 欧美色视频日本| 她的性爱视频| 特级欧美视频aaaaaa| 中文字幕永久在线看| 亚洲欧美色中文字幕| 久久九九热视频| 亚洲精品无码高潮喷水A| 毛片网站在线播放| 666精品国产精品亚洲| 人妻精品久久无码区| 日本不卡视频在线| 亚洲手机在线| 精品福利网| 国产一区二区福利| 国产在线观看一区精品| 国产欧美日韩一区二区视频在线| 动漫精品中文字幕无码| 国产在线专区| 好久久免费视频高清| 国产一区二区免费播放| 欧美第二区| 亚洲AV无码一区二区三区牲色| 久久久久久久97| 日本在线免费网站| 无码中文AⅤ在线观看| 国产呦精品一区二区三区下载| 欧美日韩亚洲国产| 波多野结衣中文字幕一区二区| 国产成人精品一区二区| A级毛片无码久久精品免费| 丰满少妇αⅴ无码区| 久久精品午夜视频| 精品伊人久久久大香线蕉欧美| 亚洲中文字幕在线精品一区| 中文字幕亚洲精品2页| 91无码视频在线观看| 内射人妻无套中出无码| 欧美精品v| 99久久精品久久久久久婷婷| 亚洲电影天堂在线国语对白| 伊人天堂网| 国产日韩欧美在线视频免费观看| 亚洲色图综合在线| 最新日本中文字幕| 国产丝袜一区二区三区视频免下载| 久久青青草原亚洲av无码| 国产主播喷水| 午夜性爽视频男人的天堂| 精品少妇人妻一区二区| 波多野结衣无码AV在线| 国产精品免费入口视频| 97色婷婷成人综合在线观看| 国产办公室秘书无码精品| 青青操国产| 欧美啪啪网| 国产鲁鲁视频在线观看| 91丝袜美腿高跟国产极品老师| 在线观看国产小视频| 亚洲一区二区三区麻豆| 国产欧美性爱网| 亚洲精品天堂在线观看| 这里只有精品在线播放| 国产菊爆视频在线观看| 国产粉嫩粉嫩的18在线播放91|