資源描述:
《《編譯原理》實驗指導書80734new》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、編譯原理實驗指導書雷宇樸春慧馬新娜段淑鳳編石家莊鐵道學院2005年3月前言編譯原理是計算機科學與技術專業(yè)的一門重要的專業(yè)必修課程,又是一門對實踐性要求較高的課程。上機實驗是編譯原理學習的重要環(huán)節(jié)。通過實驗,可以使學生深化理解和靈活掌握編譯系統(tǒng)的一般構造原理、基本設計方法和主要實現(xiàn)技術,培養(yǎng)學生設計、實現(xiàn)和擴充程序設計語言的基本能力,提高學生從理論到實際的設計開發(fā)軟件的動手能力。本書包括了編譯原理課程主要實驗內(nèi)容。不同層次不同需要的學校可根據(jù)本專業(yè)教學要求選擇,也可自行開發(fā)實驗內(nèi)容。本書由雷宇、樸春慧、馬新娜、段淑鳳等綜合編寫,并得到眾多師生的大力支持,在此一并感謝。由于編者水平所限,
2、時間倉促,錯誤及欠缺之處懇請批評指正。編者石家莊鐵道學院計算機系2005.3目錄實驗一詞法分析1實驗二預測分析法4實驗三LR分析法5附錄1:實驗報告格式6實驗一詞法分析一、實驗目的(實驗日期:2010.4.23)通過設計編制調(diào)試一個具體的詞法分析程序,加深對詞法分析原理的理解。并掌握在對程序設計語言源程序進行掃描過程中將其分解為各類單詞的詞法分析方法。二、實驗要求編制一個讀單詞過程,源程序為一個文件,讀取該文件,識別出各個具有獨立意義的單詞,即基本保留字、標識符、常數(shù)、運算符、界符五大類。并依次輸出各個單詞的內(nèi)部編碼及單詞符號自身值。單詞的內(nèi)部編碼如下:1、保留字:if、int、fo
3、r、while、do、return、break、continue;單詞種別碼為1;2、標識符:除保留字外的以字母開頭,后跟字母、數(shù)字的字符序列;單詞種別碼為2;3、常數(shù)為無符號整形數(shù);單詞種別碼為3;4、運算符包括:+、-、*、/、=;單詞種別碼為4;5、分隔符包括:,、;、{、}、(、);單詞種別碼為5。三、預習提示1、詞法分析器的功能和輸出格式詞法分析器的功能是輸入源程序,輸出單詞符號。詞法分析器的單詞符號常常表示成以下的二元式(單詞種別碼,單詞符號的屬性值)。本實驗中,采用的是一類符號一種種別碼的方式。2、各類單詞的文法<標識符>→<字母><字母數(shù)字串><字母數(shù)字串>→<字母>
4、<字母數(shù)字串>
5、<數(shù)字><字母數(shù)字串>
6、ε<無符號整數(shù)>→<數(shù)字>
7、<數(shù)字><無符號整數(shù)><運算符>→+
8、-
9、*
10、/
11、=<界符>→,
12、;
13、(
14、)
15、{
16、}3、模塊結構參照教材圖2.5詞法分析過程GETSYM。四、實驗過程和指導51、準備(1)課本有關章節(jié);(2)編制好程序;(3)準備多組測試數(shù)據(jù)。2、程序思路(僅供參考):在詞法分析中,自文件頭開始掃描源程序字符,一旦發(fā)現(xiàn)符合“單詞”定義的源程序字符串時,將它翻譯成固定長度的單詞內(nèi)部表示,并填入適當?shù)男畔⒈?。?jīng)過詞法分析后,源程序字符串(源程序的外部表示)被翻譯成具有等長信息的單詞串(源程序的內(nèi)部表示),并產(chǎn)生兩個表格:常數(shù)表和標識符表
17、,它們分別包含了源程序中的所有常數(shù)和所有標識符。(1)定義部分:定義常量、變量、數(shù)據(jù)結構。(2)初始化:從文件將源程序全部輸入到字符緩沖區(qū)中。(3)取單詞前:去掉多余空白。(4)取單詞:利用實驗一的成果讀出單詞的每一個字符,組成單詞,分析類型。(5)顯示結果。3、為了能設計好程序,注意以下事情:(1)模塊設計:將程序分成合理的多個模塊(函數(shù)),每個模塊做具體的同一事情。(2)寫出(畫出)設計方案:模塊關系簡圖、流程圖、全局變量、函數(shù)接口等。(3)編程時注意編程風格:空行的使用、注釋的使用、縮進的使用等。五、例源程序文件內(nèi)容如下:main(){inta,b;a=10;b=a+20;}要
18、求輸出如下:(2,”main”)(5,”(”)(5,”)”)(5,”{“}(1,”int”)(2,”a”)(5,”,”)(2,”b”)5(5,”;”)(2,”a”)(4,”=”)(3,10)(5,”;”)(2,”b”)(4,”=”)(2,”a”)(4,”+”)(3,20)(5,”;”)(5,”)”)5實驗二預測分析法一、實驗目的(實驗日期:2010)根據(jù)某一LL(1)文法編制調(diào)試預測分析程序,以便對任意輸入的符號串進行分析。本次實驗的目的主要是加深對預測分析法的理解。二、實驗要求本次實驗的LL(1)文法為表達式文法:E→E+T
19、TT→T*F
20、FF→i
21、(E)編寫識別表達式文法的合法句
22、子的預測分析程序,對輸入的任意符號串,給出分析過程及分析結果。分析過程要求輸出步驟、分析棧、剩余輸入串和所用產(chǎn)生式。如果該符號串不是表達式文法的合法句子,要給出盡量詳細的錯誤提示。三、實驗過程1、準備(1)閱讀課本有關章節(jié);(2)初步編制好程序;(3)準備多組測試數(shù)據(jù)。2、上機調(diào)試3、思路將表達式預測分析表存到一個數(shù)組中,參照教材圖5.11預測分析程序的框圖編寫分析程序。4、為了能設計好程序,注意以下事情:(1)模塊設計:將程序分成合理的多個模塊(函數(shù)),