下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4次上機(jī)語(yǔ)法分析2目的:熟練掌握自下而上的語(yǔ)法分析方法,并能用程序?qū)崿F(xiàn)。要求:1. 使用如下文法:E ® E+T | T T ® T*F | F F ® (E) | id2. 對(duì)于任意給定的輸入串(詞法記號(hào)流)進(jìn)行語(yǔ)法分析,要求采用LR分析器來(lái)完成。手工構(gòu)造LR分析表,利用移進(jìn)-歸約分析算法(P69 圖3.12)輸出(P70 表3.8)對(duì)應(yīng)的動(dòng)作部分。如:輸入:id*+id/(id+id)#輸出:移進(jìn)按 F->id歸約 移進(jìn) error 3. 要有一定的錯(cuò)誤處理功能。即對(duì)錯(cuò)誤能提示,并且能在一定程度上忽略盡量少的記號(hào)來(lái)進(jìn)行接下來(lái)的分析。例如:從狀態(tài)0開(kāi)始的
2、記號(hào)流為:bm將b移進(jìn)之后,棧里的情況應(yīng)該為: 0 b 2此時(shí)查表發(fā)現(xiàn) action2,m=error輸出打?。篹rror把A和狀態(tài)1相繼壓入棧,用戶(hù)指針后移到FOLLOW(A)對(duì)應(yīng)的元素繼續(xù)分析。0.棧. . . . a . .A發(fā)現(xiàn)錯(cuò)誤I0 :C®a ·AcA®· bn. . .I 1C®a A ·c. . .AI 2A®b · n. . .b擴(kuò)展:1.利用P92頁(yè)的表3.13的方式將錯(cuò)誤進(jìn)行分類(lèi)提示,即給出具體的出錯(cuò)信息。2. 在已有文法的基礎(chǔ)上再加上減法“-”和除法“/”對(duì)應(yīng)的產(chǎn)生式構(gòu)成最終的文法。從而使得
3、記號(hào)流可以處理帶括號(hào)的加、減、乘、除四則運(yùn)算。#include<iostream>#include<fstream>#include<string>#include<stack>using namespace std;stack<int> astack;int i=0,b,c,a;/a為輸入符號(hào),即table數(shù)組列,b為table數(shù)組行 char temp1000;string wenfa6="按E->E+T規(guī)約","按E->T規(guī)約","按T->T*F規(guī)約"
4、,"按T->F規(guī)約","按F->(E)規(guī)約","按F->id規(guī)約"int table129=/*數(shù)組列,id=0,+=1,*=2,(=3,)=4,$=5,E=6,T=7,F=8 ;行為狀態(tài), 表中所存數(shù)字011代表移進(jìn);1217代表按16產(chǎn)生式規(guī)約,-1代表接受狀態(tài)*/ 5,-2,-2,4,-3,-2,1,2,3,-4,6,-4,-4,-3,-1,-2,-2,-2,13,13,7,13,13,13,-2,-2,-2,15,15,15,15,15,15,-2,-2,-2,5,-2,-2,4,-3,-2,8,2,3,17
5、,17,17,17,17,17,-2,-2,-2,5,-2,-2,4,-3,-2,-2,9,3,5,-2,-2,4,-3,-2,-2,-2,10,-4,6,-4,-4,11,-5,-2,-2,-2,12,12,7,12,12,12,-2,-2,-2,14,14,14,14,14,14,-2,-2,-2,16,16,16,16,16,16,-2,-2,-2;void Analysis()i=0;while('#'!=tempi)if('i'=tempi) a=0; if('+'=tempi) a=1; if('('=tempi) a
6、=3; if(')'=tempi) a=4; if('*'=tempi) a=2; if('$'=tempi) a=5; if('E'=tempi) a=6; if('T'=tempi) a=7; if('F'=tempi) a=8;b=astack.top(); c=tableba;if(-1=c)cout<<"接受"<<endl;break; if(c>=0&&c<=11)cout<<"移進(jìn)"
7、<<endl; astack.push(c);if(0=a) i+;i+; if(c>=12)cout<<wenfac-12<<endl;if(c=12|c=14|c=16) astack.pop(); astack.pop();astack.pop();else astack.pop();b=astack.top();astack.push(tablebc/2); if(-2=c)cout<<"error,缺少運(yùn)算對(duì)象"<<endl;/狀態(tài)5進(jìn)棧astack.push(5);if(-3=c)cout<<"error,不配對(duì)的右括號(hào)"<<endl;/從輸入中刪除右括號(hào)i+;if(-4=c)cout<<"error,缺少運(yùn)算符+"<<endl;/狀態(tài)6進(jìn)棧astack.push(6);if(-5=c)cout<<"error,缺少右括號(hào)"<<endl;/狀態(tài)11入棧astack.push(11);void main()ifstream i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度地鐵消防安全檢測(cè)與維護(hù)保養(yǎng)協(xié)議3篇
- 二零二五年度創(chuàng)業(yè)企業(yè)股權(quán)激勵(lì)協(xié)議(限制性股權(quán))3篇
- 二零二五年度建筑廢棄物處理及環(huán)保治理合同3篇
- 二零二五年度個(gè)人知識(shí)產(chǎn)權(quán)抵押反擔(dān)保協(xié)議
- 二零二五年度社會(huì)保障項(xiàng)目建議書(shū)編制手冊(cè)3篇
- 二零二五年度大數(shù)據(jù)應(yīng)用股權(quán)委托代持合同樣本3篇
- 個(gè)人工廠轉(zhuǎn)讓合同(含生產(chǎn)線改造升級(jí))二零二五版4篇
- 二零二五版失業(yè)保險(xiǎn)應(yīng)收賬款質(zhì)押貸款合同5篇
- 二零二五年度摩托車(chē)租賃與賽事宣傳推廣合同4篇
- 蔬菜基地微噴灌施工方案
- 【人教版化學(xué)】必修1 知識(shí)點(diǎn)默寫(xiě)小紙條(答案背誦版)
- 俄語(yǔ)版:中國(guó)文化概論之中國(guó)的傳統(tǒng)節(jié)日
- 《奧特萊斯業(yè)態(tài)淺析》課件
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護(hù)理匯報(bào)
- 養(yǎng)殖場(chǎng)獸醫(yī)服務(wù)合同
- 哪吒之魔童降世
- HR六大板塊+三支柱體系
- 2022年上海市各區(qū)中考一模語(yǔ)文試卷及答案
- 我國(guó)無(wú)菌包裝行業(yè)消費(fèi)量已超千億包-下游需求仍存擴(kuò)容潛力
評(píng)論
0/150
提交評(píng)論