編譯原理結(jié)課論文

編譯原理結(jié)課論文

ID:18423063

大?。?93.76 KB

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

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

編譯原理結(jié)課論文_第1頁(yè)
編譯原理結(jié)課論文_第2頁(yè)
編譯原理結(jié)課論文_第3頁(yè)
編譯原理結(jié)課論文_第4頁(yè)
編譯原理結(jié)課論文_第5頁(yè)
資源描述:

《編譯原理結(jié)課論文》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)

1、塔里木大學(xué)-信息工程學(xué)院編譯原理實(shí)驗(yàn)編譯原理結(jié)課論文題目:詞法分析作者:馬全安電話:18290781046Email:1002468671@qq.com教師:肖少擁、吳剛遞交日期:2013年11月28日-16-塔里木大學(xué)-信息工程學(xué)院編譯原理實(shí)驗(yàn)-16-塔里木大學(xué)-信息工程學(xué)院編譯原理實(shí)驗(yàn)摘要詞法分析作為編譯的基礎(chǔ),其主要任務(wù)是對(duì)構(gòu)成源程序的字符流進(jìn)行掃描,然后根據(jù)構(gòu)詞規(guī)則識(shí)別單詞符號(hào),而這恰是源代碼逆向分析過(guò)程中必不可少的一步。隨著軟件逆向工程的不斷發(fā)展,詞法分析被廣泛應(yīng)用于源代碼逆向分析。本文就詞法分析在源代碼逆

2、向分析過(guò)程中的應(yīng)用進(jìn)行探討,嘗試用簡(jiǎn)明易懂的方式去獲得逆向分析后續(xù)工作所需的單詞符號(hào)的各類信息。關(guān)鍵詞 詞法分析;逆向分析;源代碼;單詞符號(hào)前言編譯原理是一個(gè)十分復(fù)雜的加工處理程序。它將便于人們閱讀但不能直接在計(jì)算機(jī)上執(zhí)行的源程序翻譯成語(yǔ)義上等價(jià)并且可在計(jì)算機(jī)上執(zhí)行的目標(biāo)程序。為了處理各種使用于不同目的的源程序,一般將整個(gè)編譯過(guò)程劃分為五個(gè)處理階段,分別是詞法分析、語(yǔ)法分析、中間代碼生成(語(yǔ)義分析)、代碼優(yōu)化和目標(biāo)代碼生成。在編譯程序結(jié)構(gòu)中,詞法分析程序通常作為子例程被語(yǔ)法分析調(diào)用,每一次調(diào)用返回一個(gè)單詞。一個(gè)源程序

3、有許多單詞組成,詞法分析程序被調(diào)用較頻繁,它的頻率直接決定編譯程序的效率。詞法分析對(duì)源程序進(jìn)行自左至右的掃描,將它從外部形式(字符串)變換成便于后幾個(gè)階段處理的內(nèi)部形式,即分解出一個(gè)個(gè)有獨(dú)立語(yǔ)法意義的單元,稱之為單詞(又稱符號(hào)或者特征),同時(shí)識(shí)別出與其相關(guān)的屬性。優(yōu)化階段對(duì)語(yǔ)義分析所產(chǎn)生的中間代碼進(jìn)行改造,以獲得等價(jià)但更為高效(指時(shí)間和空間的節(jié)?。┑闹虚g代碼。目標(biāo)代碼生成階段根據(jù)中間代碼和表格信息,進(jìn)行存儲(chǔ)分配,選擇代碼,形成可在計(jì)算機(jī)上執(zhí)行的目標(biāo)程序。如果目標(biāo)代碼生成階段產(chǎn)生的代碼為匯編語(yǔ)言程序,那么嗨應(yīng)再經(jīng)過(guò)匯編

4、階段才能產(chǎn)生機(jī)器代碼程序?! 』谏鲜?,本文通過(guò)設(shè)計(jì)、編制、調(diào)試一個(gè)具體的詞法分析程序,對(duì)詞法分析器的具體實(shí)現(xiàn)。?正文1、詞法分析-16-塔里木大學(xué)-信息工程學(xué)院編譯原理實(shí)驗(yàn)詞法分析程序又稱掃描器,它是編譯過(guò)程的第一個(gè)階段。其主要任務(wù)是從左到右依次描描字符串形式的源程序的各個(gè)字符,逐個(gè)識(shí)別出其中的單詞,并將其轉(zhuǎn)換成為內(nèi)部編碼形式的單詞符號(hào)串輸出,用于進(jìn)行語(yǔ)法分析。通??刹捎枚剑–LASS,VALUE)來(lái)表示一個(gè)單詞符號(hào)的內(nèi)部編碼,其中CLASS為一整數(shù)碼,用于表示該單詞的類別;VALUE則是單詞之值(如變量名在符

5、號(hào)表中的序號(hào),常數(shù)的二進(jìn)制表示,以及運(yùn)算符和分隔符的編碼,等等)。概括的說(shuō),掃描器在其工作過(guò)程中,一般應(yīng)完成下列的任務(wù):(1)識(shí)別出源程序中的各個(gè)單詞符號(hào),并將其轉(zhuǎn)換成內(nèi)部編碼形式;(2)刪除無(wú)用的空白字符、回車字符以及其他非實(shí)質(zhì)性字符;(3)刪除注釋;(4)進(jìn)行詞法檢查,報(bào)告所發(fā)現(xiàn)的錯(cuò)誤。此外,視編譯工作流程的組織,一些編譯程序在進(jìn)行詞法分析時(shí),還要完成將所識(shí)別出的標(biāo)志符登錄到符號(hào)表的工作。從功能上看,詞法分析上把字符串形式的源程序轉(zhuǎn)換為單詞串形式,然后進(jìn)行語(yǔ)法分析。從工作方式上看,他與語(yǔ)法分析之間存在兩種接口方式

6、。一種方式是將詞法分析的輸出結(jié)果存放在一個(gè)中間文件上,后面的語(yǔ)法分析程序?qū)⑺鳛檩斎脒M(jìn)行語(yǔ)法分析。另一種方式是將詞法分析編成一個(gè)子程序,該子程序由語(yǔ)法分析程序調(diào)用,當(dāng)語(yǔ)法分析程序需要讀出一個(gè)具有獨(dú)立意義的單詞。本設(shè)計(jì)采用前一種方式。1.1根據(jù)狀態(tài)轉(zhuǎn)換圖直接編程?編寫一個(gè)詞法分析程序,它從左到右逐個(gè)字符的對(duì)源程序進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)的單詞的二元式,形成二元式(記號(hào))流文件輸出。在此,詞法分析程序作為單獨(dú)的一遍,如下圖所示。?源程序?詞法分析程序?記號(hào)文件?具體任務(wù)有:?(1)組織源程序的輸入?(2)拼出單詞并查找其類別

7、編號(hào),形成二元式輸出,得到單詞流文件?(3)刪除注釋、空格和無(wú)用符號(hào)?(4)發(fā)現(xiàn)并定位詞法錯(cuò)誤,需要輸出錯(cuò)誤的位置在源程序中的第幾行。將錯(cuò)誤信息輸出到屏幕上。?(5)對(duì)于普通標(biāo)識(shí)符和常量,分別建立標(biāo)識(shí)符表和常量表(使用線性表存儲(chǔ)),當(dāng)遇到一個(gè)標(biāo)識(shí)符或常量時(shí),查找標(biāo)識(shí)符表或常量表,若存在,則返回位置,否則返回0并且填寫符號(hào)表或常量表。?標(biāo)識(shí)符表結(jié)構(gòu):變量名,類型(整型、實(shí)型、字符型),分配的數(shù)據(jù)區(qū)地址?注:詞法分析階段只填寫變量名,其它部分在語(yǔ)法分析、語(yǔ)義分析、代碼生成等階段逐步填入。?常量表結(jié)構(gòu):常量名,常量值?義1

8、.2?詞法分析程序的功能:?輸入:所給文法的源程序字符串。?-16-塔里木大學(xué)-信息工程學(xué)院編譯原理實(shí)驗(yàn)輸出:二元組(syn,token或sum)構(gòu)成的序列。?其中:syn為單詞種別碼;???????token為存放的單詞自身字符串;???????sum為整型常數(shù)。?例如:對(duì)源程序begin?x:=9:?if?x>9?then?x:=2*x+1

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

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

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