編譯原理課設(shè)實(shí)驗(yàn)報(bào)告

編譯原理課設(shè)實(shí)驗(yàn)報(bào)告

ID:16365123

大?。?33.00 KB

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

時(shí)間:2018-08-09

編譯原理課設(shè)實(shí)驗(yàn)報(bào)告_第1頁(yè)
編譯原理課設(shè)實(shí)驗(yàn)報(bào)告_第2頁(yè)
編譯原理課設(shè)實(shí)驗(yàn)報(bào)告_第3頁(yè)
編譯原理課設(shè)實(shí)驗(yàn)報(bào)告_第4頁(yè)
編譯原理課設(shè)實(shí)驗(yàn)報(bào)告_第5頁(yè)
資源描述:

《編譯原理課設(shè)實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、編譯技術(shù)課程設(shè)計(jì)報(bào)告《編譯技術(shù)》課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)名稱(chēng)編譯器設(shè)計(jì)姓名學(xué)號(hào)班級(jí)35/35編譯技術(shù)課程設(shè)計(jì)報(bào)告本課設(shè)的任務(wù)是完成一個(gè)完整的編譯器,處理用戶(hù)提交的符合所定文法的源程序代碼,生成四元式中間代碼,進(jìn)而翻譯成等價(jià)的X86平臺(tái)上匯編語(yǔ)言的目標(biāo)程序。編譯程序的工作過(guò)程劃分為下列5個(gè)過(guò)程:詞法分析,語(yǔ)法分析,語(yǔ)義分析和中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成。其中,詞法分析階段的基本任務(wù)是從以字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),并以二元組的形式輸出,以作為語(yǔ)法分析階段的輸入。語(yǔ)法分析階段的基本任務(wù)是

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

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

4、程序中的掃描程序,發(fā)出“取下一個(gè)單詞符號(hào)”的命令,以取得下一個(gè)單詞符號(hào)作語(yǔ)法分析。在語(yǔ)義分析和中間代碼生成階段,采用語(yǔ)法制導(dǎo)翻譯法,使用屬性文法為工具來(lái)描述程序設(shè)計(jì)語(yǔ)言的語(yǔ)義35/35編譯技術(shù)課程設(shè)計(jì)報(bào)告。首先審查詞法分析得到的每個(gè)語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義,如果靜態(tài)語(yǔ)義正確再生成中間代碼(本課設(shè)中采用四元式)。使用屬性文法作為描述程序設(shè)計(jì)語(yǔ)言語(yǔ)義的工具,采用語(yǔ)法制導(dǎo)翻譯法完成對(duì)語(yǔ)法成分的翻譯工作,即在語(yǔ)法分析過(guò)程中,依隨分析的過(guò)程,根據(jù)每個(gè)產(chǎn)生式所對(duì)應(yīng)的語(yǔ)義子程序(或語(yǔ)義規(guī)則描述的語(yǔ)義處理的加工動(dòng)作)進(jìn)行翻譯。

5、目標(biāo)代碼生成是編譯程序的最后一個(gè)階段,根據(jù)符號(hào)表等信息,將中間代碼轉(zhuǎn)化為等價(jià)的目標(biāo)代碼。為減少訪問(wèn)計(jì)算機(jī)內(nèi)存的次數(shù),應(yīng)盡可能把基本塊內(nèi)還要被引用的變量放到寄存器中,而把基本塊內(nèi)不用的變量所占的寄存器釋放。為了隨時(shí)掌握寄存器的使用情況和變量的存放情況,以便生成適當(dāng)?shù)啬繕?biāo)代碼,可以建立寄存器描述表和變量地址描述表。在編譯程序的各個(gè)階段中都要涉及到表格管理和錯(cuò)誤處理。編譯程序在工作過(guò)程中需要建立一些表格,以登記源程序中所提供的或在編譯過(guò)程中所產(chǎn)生的一些信息,編譯各個(gè)階段的工作都涉及到構(gòu)造、查找、修改或存取有關(guān)表

6、格中的信息(本課設(shè)中建立了程序變量信息表,變量地址描述表,寄存器描述表)。一個(gè)好的編譯程序在編譯過(guò)程中,應(yīng)具有廣泛的程序查錯(cuò)能力,并能準(zhǔn)確地報(bào)告錯(cuò)誤的種類(lèi)及出錯(cuò)位置,以便用戶(hù)查找和糾正,因此,在編譯程序中還必須有一個(gè)出錯(cuò)處理程序。實(shí)驗(yàn)的整體設(shè)計(jì)思想可由以下圖示表示:編譯器基本模塊設(shè)計(jì)35/35編譯技術(shù)課程設(shè)計(jì)報(bào)告詞法分析的任務(wù)是對(duì)字符串表示的源程序從左到右地進(jìn)行掃描和分解,根據(jù)語(yǔ)言的詞法規(guī)則識(shí)別出一個(gè)一個(gè)具有獨(dú)立意義的單詞符號(hào),包括關(guān)鍵字,標(biāo)識(shí)符,常數(shù),運(yùn)算l

7、d非l非d其他=!31129301;,}{2

8、81271261251)(*24123221211非==<20119118非==>非===1611711514113112dd-+eedd.dd-+1011198765432l1035/35編譯技術(shù)課程設(shè)計(jì)報(bào)告a)語(yǔ)法分析器(遞歸下降法)采用自上而下的遞歸下降分析法,從文法的開(kāi)始符號(hào)出發(fā),根據(jù)文法規(guī)則正向推導(dǎo)出給定句子。對(duì)文法中的每個(gè)非終結(jié)符編寫(xiě)一個(gè)函數(shù)(或子程序),每個(gè)函數(shù)(或子程序)的功能是識(shí)別由該非終結(jié)符所表示的語(yǔ)法成分。描述語(yǔ)言的文法常常是遞歸定義的,因此相應(yīng)的這組函數(shù)(或子程序)必然以相互遞歸

9、的方式進(jìn)行調(diào)用。為每個(gè)非終結(jié)符編制一個(gè)遞歸下降分析函數(shù),每個(gè)函數(shù)名是相應(yīng)的非終結(jié)符,函數(shù)體則是根據(jù)規(guī)則右部符號(hào)串的結(jié)構(gòu)和順序編寫(xiě),完成相應(yīng)非終結(jié)符匹配,通過(guò)所有子程序的相互調(diào)用,完成整個(gè)終結(jié)符號(hào)串的分析。(1)當(dāng)遇到終結(jié)符a時(shí),則編寫(xiě)語(yǔ)句if(當(dāng)前讀來(lái)的輸入符號(hào)==a)讀下一個(gè)輸入符號(hào);(2)當(dāng)遇到非終結(jié)符A時(shí),則編寫(xiě)語(yǔ)句調(diào)用A();(3)當(dāng)遇到規(guī)則A→ε時(shí),則編寫(xiě)語(yǔ)句if(當(dāng)前讀來(lái)的輸入符號(hào)FOLLOW(A))error()

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

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

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