編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)

編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)

ID:18793455

大小:302.50 KB

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

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

編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
資源描述:

《編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、編譯原理實(shí)驗(yàn)指導(dǎo)書(shū)《編譯原理》課程組2003年12月17概述一、本課程實(shí)踐的目的和任務(wù)編譯原理是一門(mén)實(shí)踐性很強(qiáng)的課程,只有通過(guò)實(shí)踐,才能真正掌握。實(shí)際的編譯程序是十分復(fù)雜的,有時(shí)由多達(dá)十幾萬(wàn)條指令組成。為此,編譯原理的實(shí)踐教學(xué),采用簡(jiǎn)化編譯過(guò)程的辦法,選擇最關(guān)鍵的3個(gè)環(huán)節(jié)──詞法分析、語(yǔ)法分析(包括語(yǔ)義處理、產(chǎn)生無(wú)優(yōu)化的目標(biāo)指令)、連接調(diào)試,進(jìn)行編程和調(diào)試訓(xùn)練。每個(gè)環(huán)節(jié)作為一個(gè)實(shí)踐課題。先分別編程調(diào)試,再連接在一起總調(diào)。二、實(shí)踐方法任何一個(gè)實(shí)用的高級(jí)語(yǔ)言,其語(yǔ)法都比較復(fù)雜,如選其作為源語(yǔ)言,很難實(shí)踐全過(guò)程。故本實(shí)踐將定義一個(gè)簡(jiǎn)化的語(yǔ)言──C/C++

2、語(yǔ)言的一個(gè)子集作為源語(yǔ)言,分3個(gè)課題,設(shè)計(jì)調(diào)試出它的編譯程序。前后貫穿這一條主線進(jìn)行實(shí)踐。每次都可利用課余時(shí)間編程,利用上機(jī)時(shí)間進(jìn)行輸入和調(diào)試。建議使用C/C++語(yǔ)言或C語(yǔ)言。三、實(shí)踐報(bào)告的規(guī)范和要求每個(gè)課題完成后寫(xiě)出實(shí)踐報(bào)告。實(shí)踐報(bào)告包括程序設(shè)計(jì)時(shí)考慮的算法和方法;調(diào)試過(guò)程中出現(xiàn)的問(wèn)題和解決的措施;打印出程序清單和調(diào)試時(shí)所用的源程序。四、簡(jiǎn)化的C/C++語(yǔ)言子集的定義⒈C/C++語(yǔ)言子集的語(yǔ)法定義〈C/C++子集程序〉→〈變量說(shuō)明〉〈分程序〉。〈變量說(shuō)明〉→〈空〉|VAR〈變量表〉:INTEGER;〈變量表〉→〈變量〉|〈變量〉,〈變量表〉〈變量

3、〉→〈標(biāo)識(shí)符〉〈分程序〉→BEGIN〈語(yǔ)句組〉END〈語(yǔ)句組〉→〈語(yǔ)句〉|〈語(yǔ)句〉;〈語(yǔ)句組〉〈語(yǔ)句〉→〈賦值語(yǔ)句〉|〈條件語(yǔ)句〉|〈WHILE語(yǔ)句〉|〈分程序〉〈賦值語(yǔ)句〉→〈變量〉:=〈算術(shù)表達(dá)式〉〈條件語(yǔ)句〉→IF〈布爾表達(dá)式〉THEN〈語(yǔ)句〉ELSE〈語(yǔ)句〉17〈WHILE語(yǔ)句〉→WHILE〈布爾表達(dá)式〉DO〈語(yǔ)句〉〈算術(shù)表達(dá)式〉→〈項(xiàng)〉|〈算術(shù)表達(dá)式〉+〈項(xiàng)〉|〈算術(shù)表達(dá)式〉-〈項(xiàng)〉〈項(xiàng)〉→〈初等量〉|〈項(xiàng)〉*〈初等量〉|〈項(xiàng)〉/〈初等量〉〈初等量〉→〈無(wú)符號(hào)數(shù)〉|〈變量〉|(〈算術(shù)表達(dá)式〉)〈關(guān)系表達(dá)式〉→〈算術(shù)表達(dá)式〉〈關(guān)系運(yùn)算符〉〈

4、算術(shù)表達(dá)式〉〈標(biāo)識(shí)符〉→〈字母〉|〈標(biāo)識(shí)符〉〈字母〉|〈標(biāo)識(shí)符〉〈數(shù)字〉〈無(wú)符號(hào)數(shù)〉→〈數(shù)字〉|〈無(wú)符號(hào)數(shù)〉〈數(shù)字〉〈關(guān)系運(yùn)算符〉→〈

5、〈=

6、=

7、〉=

8、〉

9、〈〉〈字母〉→A│B│C│D│E│F│G│H│I│J│K│L│M│N│O│P│Q│R│S│T││U│V│W│X│Y│Z〈數(shù)字〉→1│2│3│4│5│6│7│8│9│0實(shí)驗(yàn)1詞法分析介紹詞法分析程序的編程與調(diào)試。(2學(xué)時(shí))一、目的與要求1)目的通過(guò)設(shè)計(jì)調(diào)試詞法分析程序,實(shí)現(xiàn)從源程序中分出各種單詞的方法;加深對(duì)課堂教學(xué)的理解;提高詞法分析方法的實(shí)踐能力。2)要求⑴掌握從源程序文件中讀取有效字符的方法

10、和產(chǎn)生源程序的內(nèi)部表示文件的方法。⑵掌握詞法分析的實(shí)現(xiàn)方法。⑶上機(jī)調(diào)試編出的詞法分析程序。二、實(shí)踐題⒈題目用C/C++語(yǔ)言編寫(xiě)前述C/C++子集的詞法分析程序。1)主程序設(shè)計(jì)考慮,(參閱后面給出的程序框架)主程序的說(shuō)明部分為各種表格和變量安排空間。17數(shù)組k為關(guān)鍵字表,每個(gè)數(shù)組元素存放一個(gè)關(guān)鍵字。采用定長(zhǎng)的方式,較短的關(guān)鍵字后面補(bǔ)空格。P數(shù)組存放分界符。為了簡(jiǎn)單起見(jiàn),分界符、算術(shù)運(yùn)算符和關(guān)系運(yùn)算符都放在p表中(學(xué)生編程時(shí),應(yīng)建立算術(shù)運(yùn)算符表和關(guān)系運(yùn)算符表,并且各有類(lèi)號(hào)),合并成一類(lèi)。id和ci數(shù)組分別存放標(biāo)識(shí)符和常數(shù)。instring數(shù)組為輸入源程

11、序的單詞緩存。outtoken記錄為輸出內(nèi)部表示緩存。還有一些為造表填表設(shè)置的變量。主程序開(kāi)始后,先以人工方式輸入關(guān)鍵字,造k表;再輸入分界符等造p表。主程序的工作部分設(shè)計(jì)成便于調(diào)試的循環(huán)結(jié)構(gòu)。每個(gè)循環(huán)處理一個(gè)單詞;接收鍵盤(pán)上送來(lái)的一個(gè)單詞;調(diào)用詞法分析過(guò)程;輸出每個(gè)單詞的內(nèi)部碼。2)詞法分析過(guò)程考慮該過(guò)程取名為lexical,它根據(jù)輸入單詞的第一個(gè)字符(有時(shí)還需讀第二個(gè)字符),判斷單詞類(lèi),產(chǎn)生類(lèi)號(hào):以字符k表示關(guān)鍵字;i表示標(biāo)識(shí)符;c表示常數(shù);p表示分界符;s表示運(yùn)算符(學(xué)生編程時(shí)類(lèi)號(hào)分別為1,2,3,4,5)。對(duì)于標(biāo)識(shí)符和常數(shù),需分別與標(biāo)識(shí)符表

12、和常數(shù)表中已登記的元素相比較,如表中已有該元素,則記錄其在表中的位置,如未出現(xiàn)過(guò),將標(biāo)識(shí)符按順序填入數(shù)組id中,將常數(shù)變?yōu)槎M(jìn)制形式存入數(shù)組中ci中,并記錄其在表中的位置。lexical過(guò)程中嵌有兩個(gè)小過(guò)程:一個(gè)名為getchar,其功能為從instring中按順序取出一個(gè)字符,并將其指針pint加1;另一個(gè)名為error,當(dāng)出現(xiàn)錯(cuò)誤時(shí),調(diào)用這個(gè)過(guò)程,輸出錯(cuò)誤編號(hào)。將詞法分析程序設(shè)計(jì)成獨(dú)(入口)立一遍掃描源程序的結(jié)構(gòu)。其流程圖見(jiàn)圖1。17圖1詞法分析程序流程圖⒉要求⑴所有識(shí)別出的單詞都用兩個(gè)字節(jié)的等長(zhǎng)表示,稱(chēng)為內(nèi)部碼。第一個(gè)字節(jié)為t,第二個(gè)字節(jié)為i

13、。t為單詞的種類(lèi)。關(guān)鍵字的t=1;分界符的t=2;算術(shù)運(yùn)算符的t=3;關(guān)系運(yùn)算符的t=4;無(wú)符號(hào)數(shù)的t=5;標(biāo)識(shí)符的t=6

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(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)系客服處理。