華中科技大學(xué)編譯原理課設(shè).doc

華中科技大學(xué)編譯原理課設(shè).doc

ID:56912374

大小:394.00 KB

頁數(shù):38頁

時(shí)間:2020-07-23

華中科技大學(xué)編譯原理課設(shè).doc_第1頁
華中科技大學(xué)編譯原理課設(shè).doc_第2頁
華中科技大學(xué)編譯原理課設(shè).doc_第3頁
華中科技大學(xué)編譯原理課設(shè).doc_第4頁
華中科技大學(xué)編譯原理課設(shè).doc_第5頁
資源描述:

《華中科技大學(xué)編譯原理課設(shè).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、華中科技大學(xué)軟件學(xué)院《編譯技術(shù)》課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)名稱C/C++語言編譯器設(shè)計(jì)姓名學(xué)號(hào)班級(jí)指導(dǎo)教師2010年11月22日編譯技術(shù)課程設(shè)計(jì)報(bào)告一、實(shí)驗(yàn)題目實(shí)驗(yàn)概述:用C語言對(duì)下述文法和單詞表定義的語言設(shè)計(jì)編制一個(gè)編譯器。具體要求:1)單詞符號(hào)及種別表單詞符號(hào)種別編碼單詞值main1 int2 float3 double4 char5 if6 else7 do8 while9 l(l

2、d)*10內(nèi)部字符串(+

3、-

4、ε)d*(.dd*

5、ε)(e(+

6、-

7、ε)dd*

8、ε)20二進(jìn)制數(shù)值表示=21 +22-23 *2

9、4 /25 (26 )27 {28 }29 ,30 ;31 >32 >=33 <34 <=35 ==36 !=37 單詞符號(hào)及其種別表2)語法結(jié)構(gòu)定義<程序>::=main()<語句塊><語句塊>::=‘{‘<語句串>’}’<語句串>::=<語句>{;<語句>};<語句>::=<賦值語句>

10、<條件語句>

11、<循環(huán)語句><賦值語句>::=ID=<表達(dá)式><條件語句>::=if<條件><語句塊>[else<語句塊>]<循環(huán)語句>::=do<語句塊>while<條件><條件>::=<表達(dá)式><關(guān)系運(yùn)算符><表達(dá)式

12、><表達(dá)式>::=<項(xiàng)>{+<項(xiàng)>

13、-<項(xiàng)>}<項(xiàng)>::=<因子>{*<因子>

14、/<因子>}<因子>::=ID

15、num

16、(<表達(dá)式>)num::=(+

17、-

18、ε)數(shù)字*(.數(shù)字?jǐn)?shù)字*

19、ε)(e(+

20、-

21、ε)數(shù)字?jǐn)?shù)字*

22、ε)ID::=字母(字母

23、d數(shù)字)*字母::=a

24、b

25、c…

26、z

27、A

28、B

29、C…

30、Z數(shù)字::=0

31、1

32、2…

33、9<關(guān)系運(yùn)算符>::=<

34、<=

35、>

36、>=

37、==

38、!=一、實(shí)驗(yàn)?zāi)康?)通過該課程設(shè)計(jì),熟練應(yīng)用編譯原理的基本理論和方法2)學(xué)會(huì)用C/C++高級(jí)程序設(shè)計(jì)語言設(shè)計(jì)一個(gè)編譯器的技術(shù)3)加深對(duì)編譯原理

39、的分析理論的理解,培養(yǎng)動(dòng)手實(shí)踐能力4)通過設(shè)計(jì)、編制、調(diào)試一個(gè)編譯器,掌握其設(shè)計(jì)方法和技術(shù),提高解決實(shí)際問題的綜合素質(zhì)二、實(shí)驗(yàn)要求處理用戶提交的符合上述文法的源代碼序列,生成四元式中間代碼或X86平臺(tái)上的目標(biāo)代碼。一、實(shí)驗(yàn)步驟1)畫出識(shí)別上述語言單詞的狀態(tài)轉(zhuǎn)換圖2)用C/C++語言編寫詞法分析程序(應(yīng)考慮能被語法分析程序調(diào)用)3)預(yù)處理,去除注釋、多余空格、回車換行符等4)設(shè)計(jì)實(shí)現(xiàn)語法分析程序(調(diào)用上述詞法程序分析單詞)5)設(shè)計(jì)構(gòu)造屬性文法及中間代碼序列結(jié)構(gòu)6)采用語法制導(dǎo)翻譯法,完成語義分析程序設(shè)計(jì),生

40、成四元式中間代碼7)或?qū)⑸傻乃脑街虚g代碼轉(zhuǎn)換成X86平臺(tái)上的目標(biāo)代碼8)設(shè)計(jì)若干用例,上機(jī)測(cè)試并通過所設(shè)計(jì)實(shí)現(xiàn)的編譯器二、實(shí)驗(yàn)方案設(shè)計(jì)實(shí)現(xiàn)1.總體設(shè)計(jì)思想本課設(shè)的任務(wù)是完成一個(gè)完整的編譯器,處理用戶提交的符合所定文法的源程序代碼,生成四元式中間代碼,進(jìn)而翻譯成等價(jià)的X86平臺(tái)上匯編語言的目標(biāo)程序。編譯程序的工作過程劃分為下列5個(gè)過程:詞法分析,語法分析,語義分析和中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成。其中,詞法分析階段的基本任務(wù)是從以字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),并以二元組的形式輸

41、出,以作為語法分析階段的輸入。語法分析階段的基本任務(wù)是將詞法分析階段產(chǎn)生的二元組作為輸入,根據(jù)語言的語法規(guī)則,識(shí)別出各種語法成分,并判斷該單詞符號(hào)序列是否是該語言的一個(gè)句子。語義分析的任務(wù)是首先對(duì)每種語法單位進(jìn)行靜態(tài)的語義審查,然后分析其含義,并用另一種語言形式(本課設(shè)采用四元式)來描述這種語義。代碼優(yōu)化的任務(wù)是對(duì)前階段產(chǎn)生的中間代碼進(jìn)行等價(jià)變換或改造,以期獲得更為高效即省時(shí)間和空間的目標(biāo)代碼。目標(biāo)代碼生成的任務(wù)是將中間代碼變換成特定機(jī)器上的絕對(duì)指令代碼或可重定位的指令代碼或匯編指令代碼(本課設(shè)生成匯編指

42、令代碼)。在詞法分析階段,通過DOS環(huán)境手動(dòng)輸入字符串序列(以’#’作為結(jié)束標(biāo)志)作為帶分析的源程序,調(diào)用詞法掃描子程序?qū)⒆址远M的形式輸出(若有不屬于該語言單詞符號(hào)出現(xiàn),則進(jìn)行出錯(cuò)處理),詞法掃描子程序包括了對(duì)源程序的預(yù)處理(忽略多余空格、回車換行符等空白字符),以及對(duì)單詞的識(shí)別和分類,以形成(單詞種別,單詞自身的值)形式的二元組,并將用戶自定義變量信息存入程序變量信息表。在語法分析階段,采用自上而下的遞歸下降分析法,從文法的開始符號(hào)出發(fā),根據(jù)文法規(guī)則正向推導(dǎo)出給定句子。根據(jù)遞歸下降分析函數(shù)編寫規(guī)

43、則來編寫相應(yīng)的函數(shù),在各個(gè)函數(shù)的分析過程中調(diào)用詞法分析程序中的掃描程序,發(fā)出“取下一個(gè)單詞符號(hào)”的命令,以取得下一個(gè)單詞符號(hào)作語法分析。在語義分析和中間代碼生成階段,采用語法制導(dǎo)翻譯法,使用屬性文法為工具來描述程序設(shè)計(jì)語言的語義。首先審查詞法分析得到的每個(gè)語法結(jié)構(gòu)的靜態(tài)語義,如果靜態(tài)語義正確再生成中間代碼(本課設(shè)中采用四元式)。使用屬性文法作為描述程序設(shè)計(jì)語言語義的工具,采用語法制導(dǎo)翻譯法完成對(duì)語法成分的翻譯工作,即在語法分析

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(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)系客服處理。