![編譯原理實驗報告總結(jié)_1_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/0679dc04-93f5-468d-9ca2-e5a0a3d3a152/0679dc04-93f5-468d-9ca2-e5a0a3d3a1521.gif)
![編譯原理實驗報告總結(jié)_1_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/0679dc04-93f5-468d-9ca2-e5a0a3d3a152/0679dc04-93f5-468d-9ca2-e5a0a3d3a1522.gif)
![編譯原理實驗報告總結(jié)_1_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/0679dc04-93f5-468d-9ca2-e5a0a3d3a152/0679dc04-93f5-468d-9ca2-e5a0a3d3a1523.gif)
![編譯原理實驗報告總結(jié)_1_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/0679dc04-93f5-468d-9ca2-e5a0a3d3a152/0679dc04-93f5-468d-9ca2-e5a0a3d3a1524.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、編譯原理實驗報告總結(jié)學年第學期編譯原理實驗報告學院(系):計算機科學與工程學院班級:11303070a學號:11303070*姓名:無名氏指導(dǎo)教師:保密式時間:2016 年7 月 目錄 1實驗?zāi)康?(1)2實驗內(nèi)容及要求 (1)3實驗方案設(shè)計 (1)3.1 編譯系統(tǒng)原理介紹 (1)3.1.1 編譯程序介紹 (2)3.1.2 對所寫編譯程序的源語言的描述 (2)3.2 詞法分析程序的設(shè)計 (3)3.3 語法分析程序設(shè)計 (4)3.4 語義分析和中間代碼生成程序的設(shè)計 (4)4. 結(jié)果及測試分析 (4)4.1軟件運行環(huán)境及限制 (4)4.2測試數(shù)據(jù)說明 (5)4.3運行結(jié)果及功能說明 (5)5總結(jié)
2、及心得體會 (7) 1實驗?zāi)康?根據(jù)sample語言或者自定義的某種語言,設(shè)計該語言的編譯前端。包括詞法分析,語法分析、語義分析及中間代碼生成部分。2實驗內(nèi)容及要求(1)詞法分析器輸入源程序,輸出對應(yīng)的token表,符號表和詞法錯誤信息。按規(guī)則拼單詞,并轉(zhuǎn)換成二元形式;濾掉空白符,跳過注釋、換行符及一些無用的符號;進行行列計數(shù),用于指出出錯的行列號,并復(fù)制出錯部分;列表打印源程序;發(fā)現(xiàn)并定位詞法錯誤;(2)語法分析器輸入token串,通過語法分析,尋找其中的語法錯誤。要求能實現(xiàn)sample 語言或自定義語言中幾種最常見的、基本的語法單位的分析:算術(shù)表達式、布爾表達式、賦值語句、if語句、for
3、語句、while語句、do while語句等。(3)語義分析和中間代碼生成輸入token串,進行語義分析,修改符號表,尋找其中的語義錯誤,并生成中間代碼。要求能實現(xiàn)sample語言或自定義語言中幾種最常見的、基本的語法單位的分析:算術(shù)表達式、布爾表達式、賦值語句、if語句、for語句、while 語句、do while語句等。實驗要求:功能相對完善,有輸入、輸出描述,有測試數(shù)據(jù),并介紹不足。3實驗方案設(shè)計3.1 編譯系統(tǒng)原理介紹編譯器逐行掃描高級語言程序源程序,編譯的過程如下:(1).詞法分析識別關(guān)鍵字、字面量、標識符(變量名、數(shù)據(jù)名)、運算符、注釋行(給人看的,一般不處理)、特殊符號(續(xù)行、
4、語句結(jié)束、數(shù)組)等六類符號,分別歸類等待處理。(2).語法分析一個語句看作一串記號(token)流,由語法分析器進行處理。按照語言的文法檢查判定是否是合乎語法的句子。如果是合法句子就以內(nèi)部格式保存,否則報錯。直至檢查完整個程序。(3).語義分析語義分析器對各句子的語法做檢查:運算符兩邊類型是否相兼容;該做哪些類型轉(zhuǎn)換(例如,實數(shù)向整數(shù)賦值要取整);控制轉(zhuǎn)移是否到不該去的地方;是 否有重名或者使語義含糊的記號,等等。如果有錯誤,則轉(zhuǎn)出錯處理,否則可以生成執(zhí)行代碼。 (4).中間代碼生成中間代碼是向目標碼過渡的一種編碼,其形式盡可能和機器的匯編語言相似,以便下一步的代碼生成。但中間碼不涉及具體機器
5、的操作碼和地址碼。采用中間碼的好處是可以在中間碼上做優(yōu)化。(5).優(yōu)化對中間碼程序做局部優(yōu)化和全局(整個程序)優(yōu)化,目的是使運行更快,占用空間最小。局部優(yōu)化是合并冗余操作,簡化計算,例如x:=0可用一條清零指令替換。全局優(yōu)化包括改進循環(huán)、減少調(diào)用次數(shù)和快速地址算法等。(6).代碼生成由代碼生成器生成目標機器的目標碼(或匯編)程序,其中包括數(shù)據(jù)分段、選定寄存器等工作,然后生成機器可執(zhí)行的代碼。3.1.1 編譯程序介紹編譯程序是指把用高級程序設(shè)計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序?qū)儆诓捎蒙尚詫崿F(xiàn)途徑實現(xiàn)的翻譯程序。它以高級程序設(shè)計語言書寫的源程序作為輸入,而以
6、匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經(jīng)歷運行階段,以便在運行程序的支持下運行,加工初始數(shù)據(jù),算出所需的計算結(jié)果。3.1.2 對所寫編譯程序的源語言的描述sample語言是一種類pascal語言,他以賦值語句為基礎(chǔ),包括順序、條件和循環(huán)三種結(jié)構(gòu)。有變量說明和常量說明,有多種數(shù)據(jù)類型、如整型、實型、字符型等。它包括如下一些語法成分:(1).數(shù)據(jù)類型:整型、布爾型、實型和字符類型。(2).表達式:可進行算術(shù)、布爾表達式的運算。(3).說明語句:常量說明(用const定義)、變量說明(用var定義)。(4).賦值語句。(5).控制語句:if語句、while語句,repea
7、t語句和for循環(huán)語句。(6).begin end復(fù)合語句。(7).程序(program)語句和結(jié)束(end.)語句。 圖 1 詞法分析總流程詞法分析將源程序讀入一個個的字符,根據(jù)一定的構(gòu)詞規(guī)則,識別出各類有用的單詞。當輸入字母時,開始識別標識符或關(guān)鍵宇,邊拼寫邊從緩沖區(qū)讀入下一符號,當讀入一非字母數(shù)字符號時,標識符識別完成,但已多讀入一個符號,所以列記數(shù)回退。然后查關(guān)鍵字表,判斷拼出的符號串是否為關(guān)鍵字。若是關(guān)鍵字,輸出其種別碼。否則識別的單詞就是標識符,同時輸出標識符及其種別碼。當輸入數(shù)字時,開始識別整數(shù)或?qū)崝?shù)。邊拼寫邊讀入下一符號,當遇到“.”時,還要繼續(xù)拼寫該常數(shù)(實數(shù)情況)。如果遇到
8、e,要識別帶指數(shù)的常數(shù),當遇到其它非數(shù)字符號時,數(shù)字常數(shù)拼寫完畢,列計數(shù)也要退1。輸出常數(shù)及其種別碼。當輸入“/”時,開始識別注解或除號,若是注解時,最后兩個連續(xù)讀出的符號是“*/”,不需再讀下一符號,列計數(shù)不變。當判定是除號“/”時,已多讀入一字符,列計數(shù)1,輸出“/”的種別碼。 圖 2 語法分析總流程不斷地讀入token文件中的單詞,根據(jù)不同的語句,使用不同的方法進行分析,直到token文件的結(jié)束。程序頭部以program開頭,變量說明以var開頭,常量說明是以const開頭的,從begin開始就是可執(zhí)行語句,可執(zhí)行語句分為五種:for語句(以for語句開頭),while語句(以while
9、開頭),if語句(以if開頭),repeat 語句(以repeat開頭),賦值語句(以標識符開頭) 。每當讀到前導(dǎo)詞,表明一個新的語法結(jié)構(gòu)的開始,以此識別該語法單位是否符合定義。3.4 語義分析和中間代碼生成程序的設(shè)計4. 結(jié)果及測試分析4.1軟件運行環(huán)境及限制程序是使用c#語言編寫的,開發(fā)軟件是vs2013。vs是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,如uml工具、代碼管控工具、集成開發(fā)環(huán)境(ide)等等。所寫的目標代碼適用于微軟支持的所有平臺。使用vs調(diào)試程序會很方便,可以實時觀察程序的運行狀態(tài)。用vs制作界面會顯得非常地簡單,但是也存在一定的缺點。vs的
10、集成度比較高,所以要修改封裝好的一些函數(shù)不會太簡單。 4.2測試數(shù)據(jù)說明 輸入數(shù)據(jù):program example1;consta:=1;b:=3;c:=fasdf;vara,b,c:integer;x:char;begina:=3;b:=12;if(a+3*cb) then c:=3;while ab do c:=5;repeat a:=10; until a+3b;for x:=1+2 to 3 do b:=100;end.這是sample語言的一個比較簡單的測試程序,它有著sample語言最基本的格式,如函數(shù)頭部、常量說明、變量說明、執(zhí)行語句、條件語句,循環(huán)語句等等。用這個測試程序來觀察
11、程序的效果。4.3運行結(jié)果及功能說明圖 3 詞法分析結(jié)果圖3是正常詞法分析的結(jié)果,可以看出,程序會將每個單詞顯示到token文件顯示區(qū),同時顯示單詞在源文件的位置。并且會將標識符和常量添加到符號表 并顯示到符號表顯示區(qū)。下面的圖4是當測試程序有錯誤時的情況。 圖 4 詞法分析有錯誤的程序可以看到當我在b:=12;后面加上一個“”后,會出現(xiàn)報錯。并且if語句位置上少了個“)”也會出現(xiàn)報錯,實現(xiàn)了詞法分析的相關(guān)功能。圖 5語法分析結(jié)果 從圖5看到,語法分析能夠正確地處理token串,并分析出各類語句,直到程序的結(jié)束。輸出結(jié)果的顯示層次感不強,沒有按照一級級地縮進,這里是語法分析的一點問題。下面的圖
12、6是語法分析處理錯誤的功能演示。 圖 6 語法分析錯誤處理我修改了程序的部分地方,通過語法分析就能夠檢測到錯誤的地方,并顯示出錯誤可能的原因,并且能夠在錯誤的前提下繼續(xù)執(zhí)行后面的程序,直到語法分析結(jié)束。5總結(jié)及心得體會通過編譯原理實驗課,我掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對課本上的知識有了更深的理解,課本上的知識是機械的,表面的。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計算機上實現(xiàn),把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。然而,我認為自己在實驗課上做的并不夠好。首先,在總體實驗內(nèi)容來說,我沒能夠完成所有的內(nèi)容,只完成了詞法分析和語法分析的程序;其次,就完成的兩個實驗來說,功能上還是不夠完善,有一些bug。最后,運行界面上過于簡陋,不夠美觀。由于時間的有限性,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新房屋買賣合同年
- 農(nóng)業(yè)灌溉機井管理承包合同
- 建筑腳手架承包合同協(xié)議書
- 二手房買賣合同范文
- 工業(yè)互聯(lián)網(wǎng)平臺建設(shè)合同2024寧波
- 2025合同模板車輛租賃協(xié)議范本
- 2025空門面轉(zhuǎn)讓合同
- 2025借款保證擔保合同
- 2025年中圖版七年級物理上冊階段測試試卷含答案
- 2025年粵教版高三歷史下冊月考試卷
- 關(guān)于合同知識的全面解讀
- 繪本創(chuàng)作方案
- 《童年的水墨畫》的說課課件
- 地鐵保潔服務(wù)投標方案(技術(shù)標)
- 2023年河南省新鄉(xiāng)市鳳泉區(qū)事業(yè)單位招聘53人高頻考點題庫(共500題含答案解析)模擬練習試卷
- 2023年小升初簡歷下載
- 廣府文化的奇葩
- 公路工程標準施工招標文件(2018年版)解析
- 七年級地理下冊期末試卷(人教版)
- 第八節(jié) 元代散曲
- 《自動化專業(yè)導(dǎo)論》課程教學大綱
評論
0/150
提交評論