《編譯原理》課程實驗教學大綱_第1頁
《編譯原理》課程實驗教學大綱_第2頁
《編譯原理》課程實驗教學大綱_第3頁
《編譯原理》課程實驗教學大綱_第4頁
《編譯原理》課程實驗教學大綱_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《編譯原理》課程實驗教學大綱一、實驗類別:專業實驗課程學分:3二、實驗總學時:8三、應開實驗個數:3必開實驗個數:3選開實驗個數:0四、適用專業:計算機科學與技術五、實驗成績評定方法:上機實驗要求對PL語言及其編譯器進行實現及擴充、修改。每個擴充或修改方式可得到不同的分數,滿分為100分。實驗總成績主要從兩大方面評定:考勤與實際操作技能考核占50%、實驗報告占50%。完成上機作業后,必須提交下列文檔:1.修改后的PL語言文本。包含詞法分析(正規式),語法分析(BNF)。2.有關修改后的PL編譯/解釋器的說明。詳細說明編譯器是如何編譯新的PL語言程序的。指出程序中最精彩的部分,以及為什么這樣做,如何控制和恢復語義錯誤的。3.給出改動后的編譯器源程序清單,并標記出所修改的部分。比較你的編譯器和原來的編譯器之間的差別。4.說明你的編譯器中可能存在的錯誤。5.總結經驗與教訓,如果重做一遍,會有哪些新的改進?對現存的PL編譯程序可做如下修改或擴充,其中(1)、(2)、(11)和(12)必須完成,剩余的均可任意選擇,但總分必須超過40分。1.注釋(5分)2.布爾類型的數據(10分)3.布爾表達式的短路計算(5分)4.數組(10分)為了便于解釋執行,可能要增加新的PL機器操作指令。5.參數(10分)語法同Pascal(不用var聲明)。6.函數(10分)語法同Pascal。7.else子句和repeat語句(5分)8.for語句,語法參照Pascal或C語言(5分)9.exit語句和break語句(5分)10.記錄(結構),語法同Pascal語言(10分)。11.更有力的語法錯誤恢復機制(20分)12.分離解釋和編譯器(5分)六、實驗成績占課程總成績比例:10%七、實驗教材或自編指導書:《編譯原理課程實驗指導書》(自編)八、實驗項目:實驗編號實驗項目名稱實驗類型實驗學時要求實驗一編譯器的詞法分析綜合性2必開實驗二編譯器的語法分析綜合性4必開實驗三編譯器的代碼生成綜合性2必開實驗一編譯器的詞法分析學時:2(一)實驗類型:綜合性(二)實驗目的:通過閱讀PL的語法圖,設計、編制并調試一個PL詞法分析程序,加深學生對詞法分析原理的理解。(三)實驗內容:PL的詞法分析器將要完成以下工作:1.跳過分隔符(如空格,回車,制表符)。2.識別諸如begin,end,if,while等保留字。3.識別非保留字的一般標識符,此標識符值(字符序列)賦給全局量id,而全局量sym賦值為SYM_IDENTIFIER。5.識別數字序列,當前值賦給全局量NUM,sym則置為SYM_NUMBER。6.識別:=,<=,>=之類的特殊符號,全局量sym則分別被賦值為SYM_BECOMES,SYM_LEQ,SYM_GEQ等。相關過程(函數)有getsym(),getch(),其中getch()為獲取單個字符的過程,除此之外,它還完成:1.識別且跳過行結束符。2.將輸入源文件復寫到輸出文件。3.產生一份程序列表,輸出相應行號或指令計數器的值。(四)要求:必開(五)每組人數:1(六)主要儀器設備及配套數:計算機100臺。(七)所屬實驗室:計算機技術實驗室實驗二編譯器的語法分析學時:4(一)實驗類型:綜合性(二)實驗目的:掌握PL語言編譯器的語法分析程序設計與LL(1)文法應用的實現方法。(三)實驗內容:采用遞歸下降的方法來設計PL/0編譯器,證明PL/0語言屬于LL(1)文法。然后結合語法圖編寫(遞歸下降)語法分析程序的一般方法,具體方面有:1.用合適的替換將語法約化成盡可能少的單個圖;2.將每一個圖按下面的規則(3)-(7)翻譯成一個過程說明;3.順序圖對應復合語句:SnS1S2SnS1S2對應:beginT(S1);T(S2);...;T(Sn)end4.選擇:S1S1S2S2SS3對應:case語句或者條件語句: casechofifchinL1thenT(S1)else L1:T(S1);ifchinL2thenT(S2)else L2:T(S2);或......ifchinLnthenT(Sn)elseLn:T(Sn);error 其中Li∈FIRST(Si),ch為當前輸入符號。(下同)5.循環:SS 對應:whilechinLdoT(S)6.表示另一個圖A的圖:AA對應:過程調用A。7.表示終結符的單元圖:xx對應:ifch==xthenread(ch)elseerror相關過程有:block(),constdeclaration(),vardeclaration(),statement(),condition(),expression(),term(),factor()等。并畫出它們之間依賴關系圖,并在此基礎上實現程序的編制。并適當進行語義分析的相關檢查:1.是否存在標識符先引用未聲明的情況。2.是否存在己聲明的標識符的錯誤引用。3.是否存在一般標識符的多重聲明。(四)要求:必開(五)每組人數:1(六)主要儀器設備及配套數:計算機100臺。(七)所屬實驗室:計算機技術實驗室實驗三編譯器的代碼生成學時:2(一)實驗類型:綜合性(二)實驗目的:掌握PL語言編譯器的中間代碼生成的程序分析與實現方法,并能對錯誤進行分析與處理。(三)實驗內容:為了使我們的編譯程序保持適當簡單的水平,不致陷入與本課程無關的實際機器的特有性質的考慮中去,我們假想有臺適合PL程序運行的計算機,我們稱之為PL處理機。PL處理機順序解釋生成的目標代碼。PL處理機的指令集根據PL語言的要求而設計,它包括以下的指令: 1.LIT/*將常數置于棧頂*/ 2.LOD/*將變量值置于棧頂*/ 3.STO/*將棧頂的值賦與某變量*/ 4.CAL/*用于過程調用的指令*/ 5.INT/*在數據棧中分配存貯空間*/ 6.JMP,JPC/*用于if,while語句的條件或無條件控制轉移指令*/ 7.OPR/*一組算術或邏輯運算指令*/上述指令的格式由三部分組成:FLA其中,f,l,a的含義見下表:FLaINT———常量LIT———常量LOD層次差數據地址STO層次差數據地址CAL層次差程序地址JMP———程序地址JPC———程序地址OPR———運算類別表1PL處理機指令表1PL處理機指令PL的編譯程序為每一條PL源程序的可執行語句生成后綴式目標代碼。另一方面,發現錯誤,并給出合適的診斷信息且繼續編譯下去從而

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論