版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE 3PAGE 8編譯原理實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)安排:上機(jī)實(shí)踐按小組完成實(shí)驗(yàn)任務(wù)。每小組三人,分別完成TEST語(yǔ)言的詞法分析、語(yǔ)法分析、語(yǔ)義分析和中間代碼生成三個(gè)題目,語(yǔ)法分析部分可任意選擇一種語(yǔ)法分析方法。先各自調(diào)試運(yùn)行,然后每小組將程序連接在一起調(diào)試,構(gòu)成一個(gè)相對(duì)完整的編譯器。實(shí)驗(yàn)報(bào)告:上機(jī)結(jié)束后提交實(shí)驗(yàn)報(bào)告,報(bào)告內(nèi)容:1小組成員;2個(gè)人完成的任務(wù);3分析及設(shè)計(jì)的過(guò)程;4程序的連接;5設(shè)計(jì)中遇到的問題及解決方案;6總結(jié)。實(shí)驗(yàn)一 詞法分析一、實(shí)驗(yàn)?zāi)康?通過(guò)設(shè)計(jì)編制調(diào)試TEST語(yǔ)言的詞法分析程序,加深對(duì)詞法分析原理的理解。并掌握在對(duì)程序設(shè)計(jì)語(yǔ)言源程序進(jìn)行掃描過(guò)程中將其分解為各類單詞的詞法分析方法。
2、編制一個(gè)讀單詞過(guò)程,從輸入的源程序中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類。并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。二、實(shí)驗(yàn)預(yù)習(xí)提示 1詞法分析器的功能和輸出格式詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。詞法分析器的單詞符號(hào)常常表示成以下的二元式(單詞種別碼,單詞符號(hào)的屬性值)。2TEST語(yǔ)言的詞法規(guī)則|ID|ID|NUM a|b|z|A|B|Z1|2|9|0+|-|*|/|=|(|)|:|,|;|!=|=|!=|=/*/ 三、實(shí)驗(yàn)過(guò)程和指導(dǎo) 1.閱讀課本有關(guān)章節(jié),明確語(yǔ)言的語(yǔ)法,畫出狀態(tài)圖和詞法分析算法流程圖。2.編制好程序。3.準(zhǔn)備好多組測(cè)試數(shù)
3、據(jù)。4.程序要求程序輸入/輸出示例:輸入如下一段: int a, b ;a = 10 ;b = a * 6 ;要求輸出為:intintIDa,IDb;IDa=NUM10;IDb=IDa*NUM6;5修改狀態(tài)圖、算法流程圖及程序,使得該程序能夠識(shí)別注釋結(jié)束符“*/”。 實(shí)驗(yàn)二 遞歸下降分析法一、實(shí)驗(yàn)?zāi)康?根據(jù)算術(shù)表達(dá)式文法編制調(diào)試遞歸下降分析程序,以便對(duì)任意輸入的符號(hào)串進(jìn)行分析。本次實(shí)驗(yàn)的目的主要是加深對(duì)遞歸下降分析法的理解。二、實(shí)驗(yàn)預(yù)習(xí)提示 1遞歸下降分析法的功能遞歸下降分析器的功能是利用函數(shù)之間的遞歸調(diào)用模擬語(yǔ)法樹自上而下的構(gòu)造過(guò)程。2遞歸下降分析法的前提改造文法:消除二義性、消除左遞歸、提
4、取左因子,判斷是否為L(zhǎng)L(1)文法,3遞歸下降分析法實(shí)驗(yàn)設(shè)計(jì)思想及算法為G的每個(gè)非終結(jié)符號(hào)U構(gòu)造一個(gè)遞歸過(guò)程,不妨命名為U。U的產(chǎn)生式的右邊指出這個(gè)過(guò)程的代碼結(jié)構(gòu):(1)若是終結(jié)符號(hào),則和當(dāng)前輸入符號(hào)對(duì)照,若匹配則向前進(jìn)一個(gè)符號(hào);否則出錯(cuò)。(2)若是非終結(jié)符號(hào),則調(diào)用與此非終結(jié)符對(duì)應(yīng)的過(guò)程。當(dāng)U的右部有多個(gè)產(chǎn)生式時(shí),可用選擇結(jié)構(gòu)實(shí)現(xiàn)。具體為:(1)對(duì)于每個(gè)非終結(jié)符號(hào)Uu1|u2|un處理的方法如下:U( )ch=當(dāng)前符號(hào);if(ch可能是u1字的開頭) 處理u1的程序部分;else if(ch可能是u2字的開頭)處理u2的程序部分;else error()(2)對(duì)于每個(gè)右部u1=x1x2xn的
5、處理架構(gòu)如下:處理x1的程序;處理x2的程序;處理xn的程序;(3)對(duì)于右部中的每個(gè)符號(hào)xi 如果xi為終結(jié)符號(hào):if(xi= = 當(dāng)前的符號(hào)) 讀入下一符號(hào); return; else出錯(cuò)處理 如果xi為非終結(jié)符號(hào),直接調(diào)用相應(yīng)的過(guò)程xi()三、實(shí)驗(yàn)過(guò)程和指導(dǎo) 1.閱讀課本有關(guān)章節(jié)。2.考慮好設(shè)計(jì)方案。3.設(shè)計(jì)出模塊結(jié)構(gòu)、測(cè)試數(shù)據(jù),編制好程序。4程序要求程序輸入/輸出示例: 對(duì)下列文法,用遞歸下降分析法對(duì)任意輸入的符號(hào)串進(jìn)行分析: (1)ETG(2)G+TG|TG(3)G(4)TFS(5)S*FS|/FS(6)S(7)F(E)(8)Fi輸出的格式如下:輸入:以#結(jié)束的符號(hào)串(包括+*/()i
6、#): 輸出結(jié)果:i+i*i#為合法符號(hào)串表達(dá)式中允許使用運(yùn)算符(+-*/)、分隔符(括號(hào))、字符i,結(jié)束符#; 如果遇到錯(cuò)誤的表達(dá)式,應(yīng)輸出錯(cuò)誤提示信息(該信息越詳細(xì)越好);對(duì)學(xué)有余力的同學(xué),可以詳細(xì)的輸出推導(dǎo)的過(guò)程,即詳細(xì)列出每一步使用的產(chǎn)生式。5. 也可以參考課本實(shí)現(xiàn)TEST語(yǔ)言的語(yǔ)法分析程序。實(shí)驗(yàn)三 后綴式的產(chǎn)生與計(jì)算一、實(shí)驗(yàn)?zāi)康?將非后綴式用來(lái)表示的算術(shù)表達(dá)式轉(zhuǎn)換為用后綴式來(lái)表示的算術(shù)表達(dá)式,并計(jì)算用逆波蘭式來(lái)表示的算術(shù)表達(dá)式的值。二、實(shí)驗(yàn)預(yù)習(xí)提示 1后綴式定義將運(yùn)算對(duì)象寫在前面,而把運(yùn)算符號(hào)寫在后面。后綴式的特點(diǎn)在于運(yùn)算對(duì)象順序不變,運(yùn)算符號(hào)位置反映運(yùn)算順序。采用后綴式可以很好的表
7、示簡(jiǎn)單算術(shù)表達(dá)式,其優(yōu)點(diǎn)在于易于計(jì)算機(jī)處理表達(dá)式。2后綴式生成的實(shí)驗(yàn)設(shè)計(jì)思想及算法(1)首先構(gòu)造一個(gè)運(yùn)算符棧,此運(yùn)算符在棧內(nèi)遵循越往棧頂優(yōu)先級(jí)越高的原則。(2)讀入一個(gè)用中綴表示的簡(jiǎn)單算術(shù)表達(dá)式,為方便起見,設(shè)該簡(jiǎn)單算術(shù)表達(dá)式的右端多加上了優(yōu)先級(jí)最低的特殊符號(hào)“#”。(3)從左至右掃描該算術(shù)表達(dá)式,從第一個(gè)字符開始判斷,如果該字符是數(shù)字,則分析到該數(shù)字串的結(jié)束并將該數(shù)字串直接輸出。(4)如果不是數(shù)字,該字符則是運(yùn)算符,此時(shí)需比較優(yōu)先關(guān)系。做法如下:將該字符與運(yùn)算符棧頂?shù)倪\(yùn)算符的優(yōu)先關(guān)系相比較。如果,該字符優(yōu)先關(guān)系高于此運(yùn)算符棧頂?shù)倪\(yùn)算符,則將該運(yùn)算符入棧。倘若不是的話,則將此運(yùn)算符棧頂?shù)倪\(yùn)算符
8、從棧中彈出,將該字符入棧。(5)重復(fù)上述操作(1)-(2)直至掃描完整個(gè)簡(jiǎn)單算術(shù)表達(dá)式,確定所有字符都得到正確處理,我們便可以將中綴式表示的簡(jiǎn)單算術(shù)表達(dá)式轉(zhuǎn)化為逆波蘭表示的簡(jiǎn)單算術(shù)表達(dá)式。3后綴式計(jì)算的實(shí)驗(yàn)設(shè)計(jì)思想及算法(1)構(gòu)造一個(gè)棧,存放運(yùn)算對(duì)象。(2)讀入一個(gè)用逆波蘭式表示的簡(jiǎn)單算術(shù)表達(dá)式。(3)自左至右掃描該簡(jiǎn)單算術(shù)表達(dá)式并判斷該字符,如果該字符是運(yùn)算對(duì)象,則將該字符入棧。若是運(yùn)算符,如果此運(yùn)算符是二目運(yùn)算符,則將對(duì)棧頂部的兩個(gè)運(yùn)算對(duì)象進(jìn)行該運(yùn)算,將運(yùn)算結(jié)果入棧,并且將執(zhí)行該運(yùn)算的兩個(gè)運(yùn)算對(duì)象從棧頂彈出。如果該字符是一目運(yùn)算符,則對(duì)棧頂部的元素實(shí)施該運(yùn)算,將該棧頂部的元素彈出,將運(yùn)算結(jié)果入棧。(4)重復(fù)上述操作直至掃描完整個(gè)簡(jiǎn)單算術(shù)表達(dá)式的逆波蘭式,確定所有字符都得到正確處理,我們便可以求出該簡(jiǎn)單算術(shù)表達(dá)式的值。三、實(shí)驗(yàn)過(guò)程和指導(dǎo) 1.閱讀課本有關(guān)章節(jié),2.考慮好設(shè)計(jì)方案;3.設(shè)計(jì)出模塊結(jié)構(gòu)、測(cè)試數(shù)據(jù),編制好程序。4程序要求程序輸入/輸出示例: 輸出的格式如下:(1)輸入:以#
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 罕見病藥物供應(yīng)鏈管理策略
- 食品廠安全生產(chǎn)獎(jiǎng)懲制度
- 線上擴(kuò)展活動(dòng)策劃方案(3篇)
- 警察朗讀活動(dòng)方案策劃(3篇)
- 部隊(duì)攝影活動(dòng)策劃方案(3篇)
- 上線營(yíng)銷活動(dòng)策劃方案(3篇)
- 罕見病生殖健康科普教育的策略
- 2025年洛陽(yáng)市公安機(jī)關(guān)招聘輔警人員筆試真題
- 反詐安全培訓(xùn)
- 2026交通運(yùn)輸部所屬事業(yè)單位第四批招聘160人備考題庫(kù)及答案詳解1套
- 漁夫和他的靈魂-練習(xí)及答案
- 探析鐵路橋涵施工中缺陷和應(yīng)對(duì)策略
- LYT 1279-2020聚氯乙烯薄膜飾面人造板
- 聲樂教學(xué)與藝術(shù)指導(dǎo)的有效結(jié)合淺析
- 電解質(zhì)紊亂護(hù)理查房-課件
- 城市軌道交通工程竣工驗(yàn)收管理培訓(xùn)
- 運(yùn)動(dòng)訓(xùn)練的監(jiān)控
- GB/T 6730.62-2005鐵礦石鈣、硅、鎂、鈦、磷、錳、鋁和鋇含量的測(cè)定波長(zhǎng)色散X射線熒光光譜法
- 中考?xì)v史第一輪復(fù)習(xí)教案
- 中國(guó)郵政《國(guó)際及臺(tái)港澳郵件處理規(guī)則》
- 植物病害發(fā)生發(fā)展
評(píng)論
0/150
提交評(píng)論