編譯原理實驗指導書

編譯原理實驗指導書

ID:6282939

大?。?06.00 KB

頁數(shù):9頁

時間:2018-01-08

編譯原理實驗指導書_第1頁
編譯原理實驗指導書_第2頁
編譯原理實驗指導書_第3頁
編譯原理實驗指導書_第4頁
編譯原理實驗指導書_第5頁
資源描述:

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

1、編譯原理實驗指導書前言編譯原理是計算機專業(yè)的主干課和必修課,由于這門課程相對抽象且內(nèi)容較復雜,一直是比較難學的一門課程。在編譯原理的學習過程中,實驗非常重要,只有通過上機實驗,才能使學生對比較抽象的課程內(nèi)容產(chǎn)生一個具體的感性認識。本書實驗環(huán)境主要為C環(huán)境,在C環(huán)境下手動生成詞法分析器及語法分析器,通過這些實驗,能使學生對這些部份的工作機理有一個詳細的了解。由于這門課實驗難度較大,所以希望在實驗前學生要做好預習工作。在上機前寫好實驗預習報告。-i--i-目錄實驗一手工生成PL/0語言詞法分析器1實驗二用算符優(yōu)先分析法進行表達式分析5-i-實驗一手工生成PL/0語言

2、詞法分析器實驗名稱:手工生成PL/0語言詞法分析器實驗目的:編制一個讀單詞過程,從輸入的源程序中,識別出各個具有獨立意義的單詞,即基本保留字、標識符、常數(shù)、運算符、分隔符五大類。并依次輸出各個單詞的內(nèi)部編碼及單詞符號自身值。(遇到錯誤時可顯示“Error”,然后跳過錯誤部分繼續(xù)顯示)實驗原理:詞法分析過程1、PL/0的詞法分析程序Getsym(圖1)是一個獨立的過程,它把輸入的字符串形式的源程序分割成一個個單詞符號。為此PL/0編譯程序設置了三個全程量的公用單元如下:Sym:存放每個單詞的類別,用內(nèi)部編碼形式表示;Id:存放用戶所定義的標識符的值,即標識符字符串

3、的機內(nèi)表示;Num:存放用戶定義的數(shù)。如果我們把基本字、運算符、界符稱為語言固有的單詞,而對標識符、常數(shù)稱為用戶定義的單詞,那么經(jīng)詞法分析程序分出的單詞,對固有的單詞只給出類別存放在sym中,而對用戶定義的單詞(標識符或常數(shù))既給出類別又給值,其類別存放在sym中,值放在id或num中,全部單詞種類由編譯程序定義的純量類型sumbol給出,也可稱為語法的詞匯表。如下面提到的ifsym,thensym,ident,number均屬symbol中的元素。因此詞法分析程序Getsym將完成下列任務:濾空格:空格在詞法分析時是一種不可缺少的界符,而在語法分析時則是無用的

4、,必須濾掉;(1)識別保留字:設有一張保留字表。對每個字母打頭的字母、數(shù)字串要查此表。若查到則為保留字,將對應的類別放在sym中,如IF對應值IFSYM,THEN對應為THENSYM。若查不到,則認為是用戶定義的標識符;(2)識別標識符:對用戶定義的標識符將IDENT放在SYM中,標識符本身的值放在ID中;(3)拼數(shù):當所取單詞是數(shù)字時,將數(shù)的類別NUMBER放在SYM中,數(shù)值本身的值存放在NUM中;(4)拼復合詞:對兩個字符組成的算符,如>=,:=,<=等單詞,識別后將類別送SYM中;(5)輸出源程序:邊讀入字符邊輸出(可輸出在文件中)。由于一個單詞往往是由一

5、個或幾個字符組成的,所以在詞法分析過程Getsym中又定義了一個取字符過程GETCH(見圖2),由詞法分析需要取字符時調(diào)用。-6-2、GETCH所用單元說明:CH:存放當前讀取的字符,初值為空;LINE:為一維數(shù)組,其數(shù)組元素是字符,界對為1:80。用于讀入一行字符的緩沖區(qū)。LL和CC為計數(shù)器,初值為0;GETSYM流程圖的工作單元說明:A:一維數(shù)組,數(shù)組元素為字符,界對1:10;ID:同A;WORD:保留字表,一維數(shù)組,數(shù)組元素為以字符為元素的一維數(shù)組,界對為1:13,查找方式采用二分法。-6-圖2取字符過程GETCH實驗步驟:(一)準備:1.閱讀課本有關章節(jié)

6、,花一周時間明確語言的語法,寫出基本保留字、標識符、常數(shù)、運算符、分隔符和程序例。2.初步編制好程序。3.準備好多組測試數(shù)據(jù)。(2,”main”)(5,”(“)(5,”)“)(5,”{“)(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(2,”a”)(4,”=”)(3,”10”)(5,”;”)(2,”b”)(4,”=”)(2,”a”)(4,”+”)(3,”20”)(5,”;”)(5,”}“)(二)上課上機:將源代碼拷貝到機上調(diào)試,發(fā)現(xiàn)錯誤,再修改完善。第二次上機調(diào)試通過。(三)程序要求:程序輸入/輸出示例:如源程序為C語言。輸入如下一段

7、:main(){inta,b;a=10;b=a+20;}要求輸出如右圖。要求:識別保留字:if、int、for、while、do、return、break、continue其他的都識別為標識符;常數(shù)為無符號整形數(shù);運算符包括:+、-、*、/、=、>、<、>=、<=、!=分隔符包括:,、;、{、}、(、)估計實驗時間:1.課余準備15小時;2.上機二次4小時;3.完成實驗報告5小時。以上為參考,具體可自行增刪。實驗成果:-6-1.程序源代碼(以報告形式提交);2.已經(jīng)測試通過的測試數(shù)據(jù)3組(全部存在一個文本文件中附在報告后面,以“第一組輸入/輸出/第二組輸入/輸出

8、/第三組輸入/輸出”的順

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

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

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