版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、至生¥ 博學(xué)工行課程 名稱:從正規(guī)又法構(gòu)造有窮狀態(tài)自動機(jī)年級/專業(yè)/班:11級計(jì)算機(jī)類(二)班姓名: 徐勇兵學(xué)號:E01114278從正規(guī)文法構(gòu)造有窮狀態(tài)自動機(jī)輸入:任意的正規(guī)文法輸由:相應(yīng)的有窮狀態(tài)自動機(jī)要求:識別有窮狀態(tài)自動機(jī)是確定的還是非確定的,生成相應(yīng)的五元組形式。說明:應(yīng)檢查輸入的是否正規(guī)文法。實(shí)驗(yàn)截圖:測試一:修結(jié)符輸出如下;如 非終給荷輸出如下:5, A, B, 產(chǎn)生式輸出如下: 3->ak S->hB S->eA- 山-汕4 B->a5E>e 是正規(guī)式 狀態(tài)表輸出如下;*A,比Z, 字母表輸出如下;工6 轉(zhuǎn)換函數(shù)輸出如下: 3 a A S
2、UB S e Z k a B A k» A B a S b to A B * Z 初態(tài)是S 終態(tài)是工 是DFA測試二:'已rminait口/ lest LJ叁v盒 Aiff iicati onj L ;rirogram fixes javajr to Kb 轉(zhuǎn)不相由或E a,上一非終結(jié)得輸出如下;S, A, E,產(chǎn)生式輸出如下:5->aA5->bBS->e,K-AmEk->bAB->aSB->bABy tS->aB)一,國以月不是正規(guī)式程序結(jié)束*測試三:A>aS且一 二白網(wǎng)E-?aSE->bAB>eS->aB是
3、正規(guī)式狀態(tài)表輸出如下;W,小為 字母耒輸出如下:R, L, 轉(zhuǎn)換函數(shù)輸出如下,5日風(fēng)S h BS e 2A a EA b AB a 3E b AB e 2S a B初態(tài)是導(dǎo)鱷態(tài)是工 不是import java.util.Vector;import javax.swing.JOptionPane;class Toolspublic Vector<String> protection(Vector<String> vs)Vector<String> newvector=new Vector<String>();for(int i=0;i<vs.
4、size();i+)newvector.add(vs.get(i);return newvector;public Vector<Vector<String>> doubleprotection(Vector<Vector<String>> vs) Vector<Vector<String>> newvector=new Vector<Vector<String>>();for(int i=0;i<vs.size();i+)Vector<String> produce=(Vecto
5、r<String>)vs.get(i);Vector<String> temp=new V ector<String>();for(int j=0;j<produce.size();j+)temp.add(String)produce.get(j);/for jnewvector.add(temp);/for ireturn newvector;public Vector<String> addElements(Vector<String> vs,Vector<String>temp)for(int i=0;i<
6、;temp.size();i+)/if(!vs.contains(temp.get(i) vs.add(temp.get(i); /forreturn vs;/public Vector<String> addElements(Vector<String> vs,Vector<String>temp) /class tools class ElementsVector<String> end=new V ector<String>();/ 表示終結(jié)符Vector<String> noend=new Vector<St
7、ring>();/ 表示非終結(jié)符Vector<Vector<String>> produce=new Vector<Vector<String>>();/ 產(chǎn)生式 public void setend()/終結(jié)符元素添加 while(true) String s=JOptionPane.showInputDialog(null,"請輸入終結(jié)符"); if(s=null) return;/ifend.add(s);/while/public void addend()/ 元素添加public void setnoend()
8、/非終結(jié)符元素添加 while(true)String s=JOptionPane.showInputDialog(null,"非請輸入終結(jié)符"); if(s=null) return;/ifnoend.add(s);/while/public void addnoend()/public void setproduce()while(true)String s=JOptionPane.showInputDialog(null,"請輸入產(chǎn)生式,-> 隔開"); if(s=null)return;Vector<String> temp=n
9、ew Vector<String>();temp.add(s.split("->")0);temp.add(s.split("->")1);produce.add(temp);/while/public void addproduce()public Vector<String> getend()return end;public Vector<String> getnoend()return noend;public Vector<Vector<String>> getproduc
10、e()return duce;public void run()/*TEST*/end.add("a");end.add("b");noend.add("S");noend.add("A");noend.add("B");Vector<String> temp=new Vector<String>();temp.add("S");temp.add("aA");produce.add(temp);/*/Vector&l
11、t;String> temp1=new Vector<String>();temp1.add("S");temp1.add("bB");produce.add(temp1);/*/Vector<String> temp2=new Vector<String>();temp2.add("S");temp2.add("e");produce.add(temp2);/*/Vector<String> temp3=new Vector<String>();t
12、emp3.add("A");temp3.add("aB");produce.add(temp3);/*/Vector<String> temp4=new Vector<String>();temp4.add("A");temp4.add("bA");produce.add(temp4);/*/Vector<String> temp5=new Vector<String>();temp5.add("B");temp5.add("aS&quo
13、t;);produce.add(temp5);/*/Vector<String> temp6=new Vector<String>();temp6.add("B");temp6.add("bA");produce.add(temp6);/*/Vector<String> temp7=new Vector<String>();temp7.add("B");temp7.add("e");produce.add(temp7);/*/Vector<String>
14、temp8=new Vector<String>();temp8.add("S");temp8.add("aB");produce.add(temp8);/* Vector<String> temp9=new Vector<String>();temp9.add("S");temp9.add("aAA");produce.add(temp9);*/ System.out.println("produce.size()="+produce.size();/*te
15、st*/this.setend();/this.setnoend();/this.setproduce();正則public boolean Iscontainend(String s)正則表達(dá)式判斷 s1是否在 END的閉包里面 忘了怎么寫了int length=s.length();for(int i=0;i<length;i+)String a=""+s.charAt(i);if(end.contains(a)continue;else return false;/forreturn true;/public boolean isRGPcontain(Strin
16、g s)public boolean IsNoENd(String s)String ss=""+s.charAt(0);if(! Iscontainend(ss)/如果不含有終結(jié)符,則為非終結(jié)符 return true;return false;/ public booleanpublic void show()System.out.print("終結(jié)符輸出如下:");for(int i=0;i<end.size();i+)System.out.print(String)end.get(i)+",");System.out.p
17、rintln("");System.out.print("非終結(jié)符輸出如下:");for(int i=0;i<noend.size();i+)System.out.print(String)noend.get(i)+",");System.out.println("");System.out.print("產(chǎn)生式輸出如下:");for(int i=0;i<produce.size();i+)System.out.println("");Vector<Stri
18、ng> temp=(Vector<String>)produce.get(i);System.out.print(String)temp.get(0)+"->"+(String)temp.get(1);System.out.println("");class Elements public class Test Elements elements;Tools tools=new Tools();Vector<String> end=new V ector<String>();/ 表示終結(jié)符Vector<
19、;String> noend=new Vector<String>();/ 表示非終結(jié)符Vector<String> inputTable=new Vector<String>();/ 表示輸入符號的集合即又窮字母表Vector<String> statusTable=new Vector<String>();/ 狀態(tài)表Vector<Vector<String>> produce=new Vector<Vector<String>>();/ 產(chǎn)生式Vector<Vector&
20、lt;String>> newproduce=new Vector<Vector<String>>();/ 轉(zhuǎn)換函數(shù)String start="S"/ 初態(tài)String last="Z"/ 終態(tài)public void firststep()if(elements.Iscontainend("aA")=true)System.out.println("yes");for(int i=0;i<produce.size();i+)Vector<String> temp
21、=produce.get(i);String left=temp.get(0);String right=temp.get(1);if(right.length()!=1)S->aA形式String one=""+right.charAt(0);String two=""+right.charAt(1);Vector<String> temp1=new Vector<String>();templ.add(left);templ.add(one);temp1.add(two);newproduce.add(temp1);/i
22、felse/S->a 形式String one=""+right.charAt(0);Vector<String> temp1=new Vector<String>();temp1.add(left);temp1.add(one);temp1.add(last);newproduce.add(temp1);public boolean iszhenggui()for(int i=0;i<produce.size();i+)Vector<String> temp=produce.get(i);String left=temp.g
23、et(0);String right=temp.get(1);if(right.length()>2)return false;if(right.length()=1)if(elements.IsNoENd(right)=false)/S->A 不滿足 return false;if(right.length()=2)String one=""+right.charAt(0);String two=""+right.charAt(1);if(elements.Iscontainend(one)=false)/return false;if(e
24、lements.IsNoENd(two)=false) return false;return true;public void FA() 構(gòu)造自動機(jī)public void setstatusTable()/ 狀態(tài)表for(int i=0;i<noend.size();i+)statusTable.add(noend.get(i);) statusTable.add(last); ) public void setinputTable()/ 狀態(tài)表 for(int i=0;i<end.size();i+) inputTable.add(end.get(i);) ) public v
25、oid show() System.out.print("狀態(tài)表輸出如下:"); for(int i=0;i<statusTable.size();i+)System.out.print(String)statusTable.get(i)+","); ) System.out.println(""); System.out.print("字母表輸出如下:"); for(int i=0;i<inputTable.size();i+) System.out.print(String)inputTable.g
26、et(i)+","); ) System.out.println(""); System.out.print("轉(zhuǎn)換函數(shù)輸出如下:"); for(int i=0;i<newproduce.size();i+) System.out.println(""); Vector<String> temp=(Vector<String>)newproduce.get(i); System.out.print(String)temp.get(0)+""+(String)temp
27、.get(1)+"+(String)temp.get(2); ) System.out.println(""); System.out.println("初態(tài)是"+start); System.out.println("終態(tài)是"+last); ) public boolean judge() boolean flag=true; Vector<Vector<String>> vs=new Vector<Vector<String>>(); /Vector<String> vv=new Vector<String>(); for(int i=0;i<newproduce.size();i+)Vector<String> temp=newproduce.get(i);String left=temp.get(0);String midle=temp.get(1); if(vs.isEmpty()如果是
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年貴州事業(yè)單位聯(lián)考文化旅游職業(yè)學(xué)院招聘14人考試參考題庫及答案解析
- 2026中國雅江集團(tuán)社會招聘筆試備考題庫及答案解析
- 2026山西離柳焦煤集團(tuán)有限公司專業(yè)技術(shù)人員招聘柳林縣凌志售電有限公司專業(yè)技術(shù)人員4人筆試備考題庫及答案解析
- 2026年現(xiàn)金流管理優(yōu)化培訓(xùn)
- 九江富和建設(shè)投資集團(tuán)有限公司2026年第一批招聘工作人員【12人】筆試參考題庫及答案解析
- 2026湖北十堰市市屬國有企業(yè)招聘第一批40人考試參考題庫及答案解析
- 2026湖北武漢大學(xué)人民醫(yī)院科研助理招聘7人筆試備考題庫及答案解析
- 2026年金融反洗錢合規(guī)操作流程
- 2026年排水系統(tǒng)中的流體流動特性
- 2025年四川日報(bào)筆試及答案
- GB 4053.3-2025固定式金屬梯及平臺安全要求第3部分:工業(yè)防護(hù)欄桿及平臺
- 2026中央廣播電視總臺招聘124人參考筆試題庫及答案解析
- JG/T 3030-1995建筑裝飾用不銹鋼焊接管材
- 流程與TOC改善案例
- 【當(dāng)代中國婚禮空間設(shè)計(jì)研究4200字(論文)】
- GB/T 20322-2023石油及天然氣工業(yè)往復(fù)壓縮機(jī)
- 中國重汽車輛識別代號(VIN)編制規(guī)則
- 項(xiàng)目管理學(xué)課件戚安邦全
- 羽毛球二級裁判員試卷
- 通風(fēng)與空調(diào)監(jiān)理實(shí)施細(xì)則abc
- JJF 1614-2017抗生素效價(jià)測定儀校準(zhǔn)規(guī)范
評論
0/150
提交評論