編譯原理課設實驗報告

編譯原理課設實驗報告

ID:15975842

大?。?33.00 KB

頁數(shù):35頁

時間:2018-08-06

編譯原理課設實驗報告_第1頁
編譯原理課設實驗報告_第2頁
編譯原理課設實驗報告_第3頁
編譯原理課設實驗報告_第4頁
編譯原理課設實驗報告_第5頁
資源描述:

《編譯原理課設實驗報告》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫

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

2、識別出各種語法成分,并判斷該單詞符號序列是否是該語言的一個句子。語義分析的任務是首先對每種語法單位進行靜態(tài)的語義審查,然后分析其含義,并用另一種語言形式(本課設采用四元式)來描述這種語義。代碼優(yōu)化的任務是對前階段產(chǎn)生的中間代碼進行等價變換或改造,以期獲得更為高效即省時間和空間的目標代碼。目標代碼生成的任務是將中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼(本課設生成匯編指令代碼)。在詞法分析階段,通過DOS環(huán)境手動輸入字符串序列(以’#’作為結(jié)束標志)作為帶分析的源程序,調(diào)用詞法掃描子程序?qū)⒆址远M的形式輸出(若有不屬于該語言單

3、詞符號出現(xiàn),則進行出錯處理),詞法掃描子程序包括了對源程序的預處理(忽略多余空格、回車換行符等空白字符),以及對單詞的識別和分類,以形成(單詞種別,單詞自身的值)形式的二元組,并將用戶自定義變量信息存入程序變量信息表。在語法分析階段,采用自上而下的遞歸下降分析法,從文法的開始符號出發(fā),根據(jù)文法規(guī)則正向推導出給定句子。根據(jù)遞歸下降分析函數(shù)編寫規(guī)則來編寫相應的函數(shù),在各個函數(shù)的分析過程中調(diào)用詞法分析程序中的掃描程序,發(fā)出“取下一個單詞符號”的命令,以取得下一個單詞符號作語法分析。在語義分析和中間代碼生成階段,采用語法制導翻譯法,使用屬性文法為工具來描述程序設計語言

4、的語義35/35編譯技術(shù)課程設計報告。首先審查詞法分析得到的每個語法結(jié)構(gòu)的靜態(tài)語義,如果靜態(tài)語義正確再生成中間代碼(本課設中采用四元式)。使用屬性文法作為描述程序設計語言語義的工具,采用語法制導翻譯法完成對語法成分的翻譯工作,即在語法分析過程中,依隨分析的過程,根據(jù)每個產(chǎn)生式所對應的語義子程序(或語義規(guī)則描述的語義處理的加工動作)進行翻譯。目標代碼生成是編譯程序的最后一個階段,根據(jù)符號表等信息,將中間代碼轉(zhuǎn)化為等價的目標代碼。為減少訪問計算機內(nèi)存的次數(shù),應盡可能把基本塊內(nèi)還要被引用的變量放到寄存器中,而把基本塊內(nèi)不用的變量所占的寄存器釋放。為了隨時掌握寄存器的

5、使用情況和變量的存放情況,以便生成適當?shù)啬繕舜a,可以建立寄存器描述表和變量地址描述表。在編譯程序的各個階段中都要涉及到表格管理和錯誤處理。編譯程序在工作過程中需要建立一些表格,以登記源程序中所提供的或在編譯過程中所產(chǎn)生的一些信息,編譯各個階段的工作都涉及到構(gòu)造、查找、修改或存取有關表格中的信息(本課設中建立了程序變量信息表,變量地址描述表,寄存器描述表)。一個好的編譯程序在編譯過程中,應具有廣泛的程序查錯能力,并能準確地報告錯誤的種類及出錯位置,以便用戶查找和糾正,因此,在編譯程序中還必須有一個出錯處理程序。實驗的整體設計思想可由以下圖示表示:編譯器基本模塊

6、設計35/35編譯技術(shù)課程設計報告詞法分析的任務是對字符串表示的源程序從左到右地進行掃描和分解,根據(jù)語言的詞法規(guī)則識別出一個一個具有獨立意義的單詞符號,包括關鍵字,標識符,常數(shù),運算l

7、d非l非d其他=!31129301;,}{281271261251)(*24123221211非==<20119118非==>非===1611711514113112dd-+eedd.dd-+1011198765432l1035/35編譯技術(shù)課程設計報告a)語法分析器(遞歸下降法)采用自上而下的遞歸下降分析法,從文法的開始符號出發(fā),根據(jù)文法規(guī)則正向推導出給定句子。對文法中的每

8、個非終結(jié)符編寫一個函數(shù)(或子程序),每個函數(shù)(或子程序)的功能是識別由該非終結(jié)符所表示的語法成分。描述語言的文法常常是遞歸定義的,因此相應的這組函數(shù)(或子程序)必然以相互遞歸的方式進行調(diào)用。為每個非終結(jié)符編制一個遞歸下降分析函數(shù),每個函數(shù)名是相應的非終結(jié)符,函數(shù)體則是根據(jù)規(guī)則右部符號串的結(jié)構(gòu)和順序編寫,完成相應非終結(jié)符匹配,通過所有子程序的相互調(diào)用,完成整個終結(jié)符號串的分析。(1)當遇到終結(jié)符a時,則編寫語句if(當前讀來的輸入符號==a)讀下一個輸入符號;(2)當遇到非終結(jié)符A時,則編寫語句調(diào)用A();(3)當遇到規(guī)則A→ε時,則編寫語句if(當前讀來的輸入

9、符號FOLLOW(A))error()

當前文檔最多預覽五頁,下載文檔查看全文

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

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。