摘要:針對(duì)編譯原理教學(xué)中存在的知識(shí)點(diǎn)多、概念抽象、算法難于理解的情況,本文設(shè)計(jì)了一種可視化編譯系統(tǒng),實(shí)現(xiàn)了類c語(yǔ)言的文法編輯與檢查、詞法分析、語(yǔ)法分析、語(yǔ)義處理的過(guò)程展示。系統(tǒng)界面布局一致、操作簡(jiǎn)便,為便于學(xué)生觀察和分析編譯過(guò)程,采用單步分析展示每個(gè)分析步驟的分析圖表的利用和變化情況,也提供一次性分析展示整體分析過(guò)程和結(jié)果。此系統(tǒng)不僅有利于幫助學(xué)生理解編譯器的工作過(guò)程、原理及其具體實(shí)現(xiàn)方法,還有助于促進(jìn)學(xué)生將多種專業(yè)知識(shí)和技能綜合運(yùn)用,從而引導(dǎo)他們的學(xué)習(xí)興趣。
關(guān)鍵詞:編譯過(guò)程可視化;詞法分析;語(yǔ)法分析;語(yǔ)法制導(dǎo)翻譯
中圖分類號(hào):G4 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2012)04-0030-02
《編譯原理》是計(jì)算機(jī)專業(yè)一門重要的專業(yè)基礎(chǔ)課,講述了將高級(jí)編程語(yǔ)言翻譯為機(jī)器易于執(zhí)行的低級(jí)語(yǔ)言的編譯過(guò)程和原理。由于編譯程序過(guò)程較復(fù)雜,每個(gè)階段又包括多種實(shí)現(xiàn)方法,而具體的實(shí)現(xiàn)技術(shù)也比較抽象、難懂,一直被學(xué)生認(rèn)為是最難學(xué)習(xí)的專業(yè)課程之一。基于此,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)可視化編譯系統(tǒng),并選擇大家普遍接受的類c語(yǔ)言作為源程序,實(shí)現(xiàn)了包括文法定義和檢查、詞法分析、語(yǔ)法分析、語(yǔ)義分析和代碼生成的編譯過(guò)程展示,幫助學(xué)生直觀地觀察編譯過(guò)程、理解編譯方法,進(jìn)而輔助其提高高級(jí)語(yǔ)言編程能力。
一、系統(tǒng)功能架構(gòu)
可視化編譯系統(tǒng)主要包括完成了源程序、文法規(guī)則的文件操作、詞法分析、語(yǔ)法分析、語(yǔ)義處理等功能模塊。其中的每個(gè)模塊又包括多個(gè)子模塊,具體功能架構(gòu)如圖1所示。
二、詞法分析
詞法分析分成文法規(guī)則分析和詞法分析兩個(gè)界面,其中前者主要實(shí)現(xiàn)與文法相關(guān)的操作,如詞法文法的檢查、狀態(tài)轉(zhuǎn)換圖的生成及狀態(tài)裝換矩陣的生成;后者則通過(guò)單步分析和一次分析兩種方式實(shí)現(xiàn)對(duì)高級(jí)語(yǔ)言源程序文本文件拆分單詞,形成單詞序列的具體過(guò)程。
1.詞法規(guī)則編輯與檢查。詞法規(guī)則編輯與檢查功能通過(guò)瀏覽歷史文法、示例文法選取、自擬文法輸入三種讀入方式實(shí)現(xiàn)文法的添加,并可完成文法的修改、刪除、保存等操作,系統(tǒng)根據(jù)單詞描述應(yīng)符合正規(guī)文法的定義,對(duì)文法的合理性進(jìn)行檢查和錯(cuò)誤提示。
通過(guò)執(zhí)行正規(guī)文法到狀態(tài)轉(zhuǎn)換圖的生成算法,生成并展示所定義詞法的狀態(tài)轉(zhuǎn)換圖,在此圖上顯示單詞的具體分析過(guò)程,效果非常直觀,如圖2所示。為了便于學(xué)生理解狀態(tài)轉(zhuǎn)換圖在計(jì)算機(jī)中的存儲(chǔ)和處理的實(shí)現(xiàn)方法,還在界面上同時(shí)顯示與狀態(tài)轉(zhuǎn)換圖對(duì)應(yīng)的狀態(tài)矩陣,以及單詞分析過(guò)程中對(duì)狀態(tài)矩陣的查詢和使用情況,如圖3所示。
2.詞法分析。對(duì)識(shí)別單詞的具體過(guò)程展示,系統(tǒng)提供了單步分析和一次分析兩種方法。在單步分析中,通過(guò)實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換圖和狀態(tài)轉(zhuǎn)換矩陣相應(yīng)位置的變色處理,使學(xué)生更直觀地理解詞法分析過(guò)程中每個(gè)字符的處理細(xì)節(jié)以及后續(xù)狀態(tài)的選取方法。
三、語(yǔ)法分析
語(yǔ)法分析方法可以分為自頂向下分析法和自底向上分析法兩種。其中自頂向下分析法主要包括遞歸下降法和LL(1)分析法,自底向上分析法主要包括優(yōu)先分析法和LR()分析法。本系統(tǒng)語(yǔ)法分析部分對(duì)其中較復(fù)雜的LL(1)分析法、算符優(yōu)先分析法和LR()分析法都實(shí)現(xiàn)了過(guò)程展示。語(yǔ)法分析模塊的子模塊及界面設(shè)計(jì)盡量與詞法分析部分保持一致,以LR()語(yǔ)法為例,分為L(zhǎng)R()文法規(guī)則編輯與檢查、LR()語(yǔ)法分析兩部分,前者包括文法的添加、修改、刪除、項(xiàng)目集的生成及分析表的生成,后者通過(guò)單步分析及一次分析兩種分析方式實(shí)現(xiàn)對(duì)單詞序列的語(yǔ)法分析過(guò)程展示,生成的部分分析表和分析結(jié)果展示見(jiàn)圖4。
四、語(yǔ)義分析與代碼生成
根據(jù)語(yǔ)法制導(dǎo)翻譯的原理,在系統(tǒng)的語(yǔ)法分析過(guò)程中調(diào)用語(yǔ)義子程序,實(shí)現(xiàn)了類c語(yǔ)言的變量聲明、算術(shù)運(yùn)算、邏輯運(yùn)算、if語(yǔ)句、for語(yǔ)句、while語(yǔ)句等主要高級(jí)語(yǔ)言常規(guī)語(yǔ)句的語(yǔ)義處理,生成了四元式序列的中間代碼形式。
本文設(shè)計(jì)實(shí)現(xiàn)的可視化編譯器實(shí)現(xiàn)了文法編輯與檢查、詞法分析、語(yǔ)法分析、語(yǔ)義處理和代碼生成過(guò)程的動(dòng)態(tài)展示,適用于《編譯原理》課程的輔助教學(xué),便于幫助學(xué)生直觀理解高級(jí)語(yǔ)言程序的編譯過(guò)程,加深對(duì)編譯方法的掌握,啟發(fā)學(xué)生將編譯原理知識(shí)與其他專業(yè)知識(shí)以及先進(jìn)軟件開(kāi)發(fā)技術(shù)相結(jié)合,從而促進(jìn)學(xué)生專業(yè)知識(shí)和技能的綜合發(fā)展。
參考文獻(xiàn):
[1]蔣立源,康慕寧.編譯原理[M].西安:西北工業(yè)大學(xué)出版社,2005.
[2]陳火旺,等.程序設(shè)計(jì)語(yǔ)言編譯原理[J].北京:國(guó)防工業(yè)出版社,2000.
[3]蔣秀鋒,任志雄.可視編譯器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2010,(10):63-67.
[4]李冬梅,施海虎.“編譯原理”課程的教學(xué)研究與探索[J].計(jì)算機(jī)教育,2008,(8):103-104.