版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、算符優(yōu)先分析法設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康募由顚?duì)語法分析器工作過程的理解;加強(qiáng)對(duì)算符優(yōu)先分析法實(shí)現(xiàn)語法分析程 序的掌握;能夠采用一種編程語言實(shí)現(xiàn)簡單的語法分析程序;能夠使用自己編寫 的分析程序?qū)唵蔚某绦蚨芜M(jìn)行語法翻譯。二、實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)1的基礎(chǔ)上,用算符優(yōu)先分析法編制語法分析程序,語法分析程序的 實(shí)現(xiàn)可以采用任何一種編程語言和工具。三、實(shí)驗(yàn)要求:1. 對(duì)語法規(guī)則有明確的定義;2. 編寫的分析程序能夠?qū)?shí)驗(yàn)一的結(jié)果進(jìn)行正確的語法分析;3. 對(duì)于遇到的語法錯(cuò)誤,能夠做出簡單的錯(cuò)誤處理,給出簡單的錯(cuò)誤提示, 保證順利完成語法分析過程;四、實(shí)驗(yàn)步驟1. 定義目標(biāo)語言的語法規(guī)則;2. 求解預(yù)測(cè)分析方法需要的
2、符號(hào)集和分析表;3. 依次讀入實(shí)驗(yàn)一的分析結(jié)果,根據(jù)預(yù)測(cè)分析的方法進(jìn)行語法分析,直到 源程序結(jié)束;4. 對(duì)遇到的語法錯(cuò)誤做出錯(cuò)誤處理。五、實(shí)驗(yàn)報(bào)告要求詳細(xì)說明你的程序的設(shè)計(jì)思路和實(shí)現(xiàn)過程。實(shí)驗(yàn)報(bào)告要求用文法的形式對(duì)語 法定義做出詳細(xì)說明,說明語法分析程序的工作過程,說明錯(cuò)誤處理的實(shí)現(xiàn)。算符優(yōu)先分析器(綜合性實(shí)驗(yàn))一、實(shí)驗(yàn)?zāi)康恼莆說irstvt和lastvt集的算法,算符優(yōu)先分析表的構(gòu)造算法及其分析過程,并掌握 屮間代碼產(chǎn)生過程。二、實(shí)驗(yàn)內(nèi)容算術(shù)表達(dá)式和賦值語句的文法可以是(可以根據(jù)需要適當(dāng)改變):s->i=eee+te-ete->tt-t/ft->ff-(e)f->i根
3、據(jù)算符優(yōu)先分析法,將賦值語句進(jìn)行語法語義分析,翻譯成等價(jià)的一組基本操作,每 基本操作用四元式表示。三、實(shí)驗(yàn)過程和指導(dǎo)1、構(gòu)造firstvt和lastvt集合給定一個(gè)上下文無關(guān)文法,根據(jù)算法設(shè)計(jì)一個(gè)程序,求文法中每個(gè)非終結(jié)符的firstvt 集和lastvt集。算符描述如下:/京求firstvt集的算法*/procedure insert(p,a);if not fp,a thenbeginfp,a = true; (p,a)進(jìn)棧end;procedure firstvt;beginfor對(duì)每個(gè)非終結(jié)符p和終結(jié)符adofp,a = falsefor對(duì)每個(gè)形如pf a或p-*qa的產(chǎn)生式doins
4、ert(p,a)while stack 非空begin棧頂項(xiàng)出棧,記為(q,a)for對(duì)每條形如pf q的產(chǎn)生式doinsert(ra)end;end.2、構(gòu)造算符優(yōu)先分析表依據(jù)文法和求出的相應(yīng)firstvt和lastvt集生成算符優(yōu)先分析表。算法描述如下:for每個(gè)形如p->x1x2-xn的產(chǎn)生式dofor i = 1 to n-1 dobeginifxi和xi+1都是終結(jié)符thenxi = xi+1ifiv=n-2,xi和xi+2是終結(jié)符,但xi+1為非終結(jié)符thenxi = xi+2訐xi為終結(jié)符,xi+1為非終結(jié)符thenfor firstvt中的每個(gè)元素adoxi < a
5、;if xi為非終結(jié)符,xi+1為終結(jié)符thenforlastvt中的每個(gè)元素adoa > xi+1 ;end;3、構(gòu)造算符優(yōu)先分析和中間代碼產(chǎn)生過程。四、輸入數(shù)據(jù)和輸出數(shù)據(jù)若輸入文法:e->e+t | tt->t*f | ff-> (e) | i將得到如下所示的firstvt集和lastvt數(shù)組。+()1e 的 firstvt1111e 的 firstvt111e 的 firstvt11輸出的優(yōu)先關(guān)系農(nóng)如下:+*1()1 f£xi 1+><<<>>>><<>>>>>&g
6、t;(<<j<=)>>>>土<<<<=若輸入的語句是a:=b+c*(e-a)則輸出:g e,a,tl)(*,c,tl,t2)(+,b,t2,t3)(:乞t3,_,a)算符優(yōu)先文法處理一、實(shí)驗(yàn)?zāi)康膶W(xué)握算符優(yōu)先分析法的原理,利用算符優(yōu)先分析法將賦值語句進(jìn)行語法分析,翻譯成等價(jià)的 四兀式表示。二、實(shí)驗(yàn)內(nèi)容:1. 算術(shù)表達(dá)式的文法可以是(你可以根據(jù)需要適當(dāng)改變):e->e+e|e-e|e*e|e/e| (e) |i2. 根據(jù)算符優(yōu)先分析法,將表達(dá)式進(jìn)行語法分析,判斷一個(gè)表達(dá)式是否正確。3. 將賦值語句進(jìn)行語法分析,翻譯成等價(jià)的一組
7、基本操作,每一基本操作用四元式表示。三、實(shí)驗(yàn)預(yù)習(xí)提示1. 實(shí)驗(yàn)原理我們要分析的表達(dá)式滿足下血的算符優(yōu)先矩陣0 20 1為實(shí)現(xiàn)算符優(yōu)先算法,可以使用兩個(gè)工作棧。一個(gè)叫做optr,用以寄存運(yùn)算符,一個(gè)叫opnd, 用以寄存操作數(shù)或結(jié)果。算法描述如下:1首先置操作數(shù)棧為空棧,將表達(dá)式起始符;作為運(yùn)算符棧的棧底元素。2依次讀入表達(dá)式屮每個(gè)單詞,若是操作數(shù)則進(jìn)opnd棧,若是運(yùn)算符則轉(zhuǎn)3。3將此運(yùn)算符()1與optr棧頂元素0 2進(jìn)行比較,即查上表,若0 1> 0 2,貝9: 0 1進(jìn)棧,轉(zhuǎn)2若01=62 ,如b 1為;,則分析成功,否則optr棧頂元素出棧,并轉(zhuǎn)2若0 1<0 2,則出棧0
8、p7d棧頂元素至b,又出棧其棧頂元素至a,出棧optr棧頂元素至 t,進(jìn)行運(yùn)算r二a t b(t為運(yùn)算符),并將結(jié)杲r存入棧opnd后轉(zhuǎn)3。若9 1和02z間無優(yōu)先關(guān)系,貝i報(bào)錯(cuò)。四、實(shí)驗(yàn)步驟(一)準(zhǔn)備:1. 閱讀課本有關(guān)章節(jié),花一周時(shí)間確定算術(shù)表達(dá)式的文法,設(shè)計(jì)出算符優(yōu)先關(guān)系表;2. 考慮好設(shè)計(jì)方案;3. 設(shè)計(jì)出模塊結(jié)構(gòu)、測(cè)試數(shù)據(jù),初步編制好程序。(二)上課上機(jī):上機(jī)調(diào)試,發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,再修改完善。教師根據(jù)學(xué)生的設(shè)計(jì)方案與 學(xué)生進(jìn)行探討,以修改方案和代碼。(三)程序要求:程序思路(僅供參考):1借用實(shí)驗(yàn)一的結(jié)果,對(duì)將其中的取字符函數(shù)幾乎原封不動(dòng)地移植過來,其中的分割和分析 單詞的方法可
9、借用過來分割現(xiàn)在這個(gè)實(shí)驗(yàn)的運(yùn)算符、常量和變量。2. 模塊結(jié)構(gòu):(1)初始化:設(shè)立算符優(yōu)先關(guān)系表(或優(yōu)先函數(shù))、初始化變量空間(包括 堆棧、結(jié)構(gòu)體、數(shù)組、臨時(shí)變量等);(2)控制部分:將一個(gè)表達(dá)式從文件中讀出;(3) 詞法分析:將表達(dá)式分割成單詞序列;(4)利用算符優(yōu)先文法進(jìn)行表達(dá)式處理:根據(jù)算符 優(yōu)先關(guān)系表(或優(yōu)先函數(shù))對(duì)表達(dá)式單詞序列進(jìn)行堆棧(或其他)操作,得到并保存四元組, 如果遇到錯(cuò)誤則顯示錯(cuò)誤信息;(5)輸出四元組。3. 程序輸入/輸出示例:如參考c語言的運(yùn)算符。輸入如下表達(dá)式(以分號(hào)為結(jié)束)和輸出結(jié)果:(1)10;輸出:.正確(2)1+2;輸出:正確(3)(1+2)/3+4-(5+6/7);輸岀:正確(4)(1-2)/3+4輸出:錯(cuò)誤(5)1+2-3+(*4/5)輸出:錯(cuò)誤注意:1.為降低難度,表達(dá)式中不含變雖(只含無符號(hào)整數(shù));2. 如果遇到錯(cuò)誤的表達(dá)式,應(yīng)輸出錯(cuò)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生鮮配送與冷鏈倉儲(chǔ)管理承包合同3篇
- 2025年度體育場(chǎng)館場(chǎng)地租賃及賽事運(yùn)營管理服務(wù)協(xié)議2篇
- 2024皮鞋品牌代理權(quán)購銷合同范本3篇
- 二零二五年度施工安全風(fēng)險(xiǎn)評(píng)估與管理合同3篇
- 2025年度高科技公司股東退股協(xié)議書3篇
- 2025年度房地產(chǎn)項(xiàng)目成本控制與合同管理協(xié)議3篇
- 二零二五年貓咪寵物保險(xiǎn)代理合同2篇
- 2025年跨境電商項(xiàng)目監(jiān)控與管理服務(wù)合同2篇
- 二零二五年度環(huán)保產(chǎn)業(yè)投資合作合同6篇
- 二零二四年醫(yī)療器械研發(fā)合同
- 山東省濟(jì)南市2024-2025學(xué)年高一英語上學(xué)期學(xué)情檢測(cè)期末試題
- 車險(xiǎn)理賠全解析
- 微粒貸逾期還款協(xié)議書范本
- Unit10l'mten!(練)新概念英語青少版StarterA
- 產(chǎn)業(yè)園區(qū)開發(fā)全流程實(shí)操解析
- NBT 47013.4-2015 承壓設(shè)備無損檢測(cè) 第4部分:磁粉檢測(cè)
- 羽毛球比賽對(duì)陣表模板
- 2024年上海市中考數(shù)學(xué)真題試卷及答案解析
- 2024年全國卷1高考理綜試題及答案
- 初中語文現(xiàn)代文閱讀訓(xùn)練及答案二十篇
- 農(nóng)村開荒土地承包權(quán)轉(zhuǎn)讓協(xié)議書
評(píng)論
0/150
提交評(píng)論