從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)0001_第1頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)0001_第2頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)0001_第3頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)0001_第4頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)0001_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、至生¥ 博學(xué)工行課程 名稱:從正規(guī)又法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)年級(jí)/專業(yè)/班:11級(jí)計(jì)算機(jī)類(二)班姓名: 徐勇兵學(xué)號(hào):E01114278從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī)輸入:任意的正規(guī)文法輸由:相應(yīng)的有窮狀態(tài)自動(dòng)機(jī)要求:識(shí)別有窮狀態(tài)自動(dòng)機(jī)是確定的還是非確定的,生成相應(yīng)的五元組形式。說(shuō)明:應(yīng)檢查輸入的是否正規(guī)文法。實(shí)驗(yàn)截圖:測(cè)試一:修結(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測(cè)試二:'已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ó)以月不是正規(guī)式程序結(jié)束*測(cè)試三: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,"請(qǐng)輸入終結(jié)符"); if(s=null) return;/ifend.add(s);/while/public void addend()/ 元素添加public void setnoend()

8、/非終結(jié)符元素添加 while(true)String s=JOptionPane.showInputDialog(null,"非請(qǐng)輸入終結(jié)符"); if(s=null) return;/ifnoend.add(s);/while/public void addnoend()/public void setproduce()while(true)String s=JOptionPane.showInputDialog(null,"請(qǐng)輸入產(chǎn)生式,-> 隔開(kāi)"); 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的閉包里面 忘了怎么寫(xiě)了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>();/ 表示輸入符號(hào)的集合即又窮字母表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)造自動(dòng)機(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. 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論