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.

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

主站蜘蛛池模板: 91精品小视频| 中文字幕第1页在线播| 久无码久无码av无码| 久久狠狠色噜噜狠狠狠狠97视色| 一级全免费视频播放| 一本色道久久88综合日韩精品| 亚洲69视频| 日韩精品一区二区三区中文无码| 国产综合欧美| 国内精品小视频福利网址| 中文字幕日韩欧美| 免费国产不卡午夜福在线观看| 青青久久91| 中文字幕波多野不卡一区| 欧美性猛交xxxx乱大交极品| 国产精品无码制服丝袜| 伊人久综合| 美女国产在线| 亚洲欧美日本国产综合在线 | 人妻丰满熟妇啪啪| 亚洲国产日韩在线观看| 久久永久视频| 91青草视频| 一级毛片中文字幕| 国产在线精彩视频二区| 四虎在线高清无码| 在线无码九区| 久久香蕉国产线看精品| 久久6免费视频| 丰满少妇αⅴ无码区| 日韩国产黄色网站| 国产精品无码一区二区桃花视频| 色噜噜久久| 免费在线国产一区二区三区精品| 久久精品日日躁夜夜躁欧美| 午夜福利视频一区| 成人综合在线观看| 欧美激情视频二区三区| AV熟女乱| 亚国产欧美在线人成| yy6080理论大片一级久久| 四虎免费视频网站| 国产精品免费久久久久影院无码| 国产成人艳妇AA视频在线| 成人福利在线免费观看| 亚洲无码精品在线播放| 欧美日本中文| 久久国产高清视频| 日韩激情成人| 91极品美女高潮叫床在线观看| 欧美v在线| 亚洲欧美极品| 美女无遮挡拍拍拍免费视频| 亚洲中文字幕国产av| 精品视频一区二区观看| 丰满人妻中出白浆| 五月激情婷婷综合| 国产一级α片| 99精品视频播放| 日韩 欧美 国产 精品 综合| 又猛又黄又爽无遮挡的视频网站| 色综合天天综合中文网| 五月婷婷伊人网| 亚洲91精品视频| 国产无遮挡猛进猛出免费软件| 成人毛片免费在线观看| 国产精品永久免费嫩草研究院| 中文成人在线| 99久久精品免费观看国产| 婷婷午夜影院| 国产精品永久免费嫩草研究院| 91久久国产综合精品| 成人在线不卡视频| 五月婷婷综合在线视频| 毛片一级在线| 欧美亚洲国产精品第一页| 色综合中文字幕| 久久窝窝国产精品午夜看片| 日韩毛片免费视频| 欧美一级黄片一区2区| 99热这里只有精品免费国产| 欧美国产日韩在线观看|