下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)7-8預(yù)測分析表方法一、實(shí)驗(yàn)?zāi)康睦斫忸A(yù)測分析表方法的實(shí)現(xiàn)原理。二、實(shí)驗(yàn)內(nèi)容:編寫一通用的預(yù)測法分析程序,要求有一定的錯誤處理能力,出錯后能夠使程序繼續(xù)運(yùn)行下去,直到分析過程結(jié)束??赏ㄟ^不同的文法(通過數(shù)據(jù)表現(xiàn))進(jìn)行測試。三.實(shí)驗(yàn)要求:給定算術(shù)表達(dá)式文法,編寫程序,測試數(shù)據(jù)。算術(shù)表達(dá)式文法E→TE’E’→+TE’|-TE’|εT→FT’T’→*FT’|/FT’|%FT’|εF→(E)|id|num四.實(shí)驗(yàn)過程:1.實(shí)驗(yàn)代碼:importjava.io.*;importjavax.swing.JOptionPane;publicclasspredict{ int length_vn=5,length_vt=10; staticinti,j,i1=0,e_flag=0;publicpredict(){} staticStringVN[]={"E","e","T","t","F"}; staticString staticStringCS[]={"Te","+Te","-Te","$","Ft","*Ft","/Ft","%Ft","","(E)","d","n"}; staticStringfollow[][]={{"#",")"},{"#",")"},{"#",")","+","-"},{"#",")","+","-"},{"#",")","+","-","*","/","%"}};staticintanalysis_table[][]={{-1,-1,-1,-1,-1,0,-1,0,0,-1},{1,2,-1,-1,-1,-1,3,-1,-1,3},{-1,-1,-1,-1,-1,4,-1,4,4,-1},{8,8,5,6,7,-1,8,-1,-1,8},{-1,-1,-1,-1,-1,9,-1,10,11,-1}};publicvoidlocate(Stringvn,Stringvt){ for(inta=0;a<5;a++){ if(VN[a].equals(vn)){ i=a;break; } elsei=-1; } for(intb=0;b<10;b++){ if(VT[b].equals(vt)){ j=b;break; } elsej=-1; }}publicvoidequal(intvn,intvt){ Stringcs=""; if(analysis_table[vn][vt]==-1) { inta; for(a=0;a<follow[vn].length;a++) { if(follow[vn][a].equals(VT[vt]))break; } if(a<follow[vn].length)error1(); elseerror2(vt); } else{ cs=CS[analysis_table[vn][vt]]; intcs_length=cs.length(); charachar[]=newchar[cs_length]; charbchar[]=newchar[cs_length]; cs.getChars(0,cs_length,achar,0); for(inta=0,b=cs_length-1;a<cs_length;a++,b--){ bchar[b]=achar[a]; } Stringnewstr=newString(bchar); in_Stack(newstr); }}publicvoiderror1(){ System.out.println("出錯,彈出棧頂符號");}publicvoiderror2(intvt){ System.out.println("出錯,跳過"+VT[vt]); in_Stack(VN[i]); i1++; }publicvoiderror3(Stringstr){ System.out.println("錯誤,不匹配終結(jié)符"+str); i1++; }publicvoidin_Stack(Stringstr){ try{ FileWriterfw=newFileWriter("test.txt",true); PrintWriterpw=newPrintWriter(fw); pw.write(str); pw.close(); fw.close(); }catch(IOExceptionef){}}publicStringout_Stack(){ Stringc=""; try{Readerdu=newFileReader("test.txt");BufferedReaderbr=newBufferedReader(du); c=br.readLine(); br.close(); du.close(); Filef1=newFile("test.txt"); f1.delete(); }catch(IOExceptioneio){} c=c.trim(); Stringsub_str=c.substring(0,c.length()-1); in_Stack(sub_str); Stringzhand=c.substring(c.length()-1,c.length()); returnzhand;}publicstaticvoidmain(Stringargs[]){ Filef=newFile("test.txt"); f.delete(); predictpd=newpredict(); Stringfenxi; Stringinput=JOptionPane.showInputDialog("請輸入算術(shù)表達(dá)式:"); input=input.trim(); chargchar[]=newchar[1]; pd.in_Stack("#E"); fenxi="E"; while(i1<input.length()){ inta,b,c; fenxi=pd.out_Stack(); System.out.println("------------------------------------------------"); System.out.print("棧頂元素:"+fenxi+'\t'); input.getChars(i1,i1+1,gchar,0); Stringvt=newString(gchar); vt=vt.trim(); System.out.print("當(dāng)前單詞記號:"+vt+"\t"); for(c=0;c<10;c++){ if(VT[c].equals(fenxi))break; } for(a=0;a<5;a++){ if(VN[a].equals(fenxi)){ System.out.print("展開非終結(jié)符"+fenxi+"->"); for(b=0;b<10;b++){ if(VT[b].equals(vt)&&analysis_table[a][b]!=-1){ System.out.print(CS[analysis_table[a][b]]+"\n");break; } } } } if(c<10&&!fenxi.equals(vt))pd.error3(fenxi); if(fenxi.equals(vt)){ System.out.println("匹配終結(jié)符"+fenxi+'\t'); i1++; } else{ pd.locate(fenxi,vt); pd.equal(i,j); } } System.out.println("結(jié)束");}}2.試驗(yàn)測試:給定一符合該文法的句子,如d+n/d,運(yùn)行預(yù)測分析程序,給出分析過程和每一步的分析結(jié)果,輸出形式如下圖:給定一不符合該文法的句子,如dd**n,運(yùn)行預(yù)測分析程序,給出分析和每一步的分析過程,并給出對錯誤的處理分析過程,輸出形式如下圖:四、實(shí)驗(yàn)總結(jié):1.本次通過試驗(yàn),我學(xué)會了預(yù)測分析表的構(gòu)造方法,即給文法的正規(guī)式編號:存放在字符數(shù)組中,從0開始編號,正規(guī)式的編號即為該正規(guī)式在數(shù)組中對應(yīng)的下標(biāo)。2.明白了錯誤處理機(jī)制,緊急方式的錯誤恢復(fù)方法(拋棄某些符號,繼續(xù)向下分析)(1)棧頂為非終結(jié)符A,串中當(dāng)前單詞屬于FOLLOW(A),則從棧中彈出A(此時可認(rèn)為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年服裝行業(yè)財務(wù)招聘常見問題與答案
- 2026年業(yè)務(wù)咨詢顧問的面試題及答案解析
- 2026年軟件開發(fā)工程師面試考點(diǎn)詳解
- 2026年企業(yè)培訓(xùn)與發(fā)展面試考察的要點(diǎn)及參考答案
- 2026年智能機(jī)器人客服面試技巧及常見問題解答
- 可信計算技術(shù)在供應(yīng)鏈安全管理中的策略-洞察及研究
- 非甾體抗炎藥在前列腺疾病治療中的應(yīng)用-洞察及研究
- 高通量測序技術(shù)在遺傳性疾病篩查中的作用-洞察及研究
- 未來五年枯茗子企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年酶工程與發(fā)酵工程企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報告
- 電子制造行業(yè)數(shù)字化轉(zhuǎn)型白皮書
- 腫瘤患者雙向轉(zhuǎn)診管理職責(zé)
- 公共安全視頻監(jiān)控建設(shè)聯(lián)網(wǎng)應(yīng)用(雪亮工程)運(yùn)維服務(wù)方案純方案
- 福建省漳州市2024-2025學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量檢測歷史試卷(含答案)
- 定額〔2025〕2號文-關(guān)于發(fā)布2020版電網(wǎng)技術(shù)改造及檢修工程概預(yù)算定額2024年下半年價格
- 管道穿越高速橋梁施工方案
- 2024版《中醫(yī)基礎(chǔ)理論經(jīng)絡(luò)》課件完整版
- 2022版義務(wù)教育(物理)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 井噴失控事故案例教育-井筒工程處
- 地源熱泵施工方案
- GB/T 16947-2009螺旋彈簧疲勞試驗(yàn)規(guī)范
評論
0/150
提交評論