從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī).doc_第1頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī).doc_第2頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī).doc_第3頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī).doc_第4頁(yè)
從正規(guī)文法構(gòu)造有窮狀態(tài)自動(dòng)機(jī).doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余6頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

課 程 名 稱: 從正規(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è)試一:測(cè)試二:*測(cè)試三:import java.util.Vector;import javax.swing.JOptionPane;class Toolspublic Vector protection(Vector vs)Vector newvector=new Vector();for(int i=0;ivs.size();i+)newvector.add(vs.get(i);return newvector;public VectorVector doubleprotection(VectorVector vs)VectorVector newvector=new VectorVector();for(int i=0;ivs.size();i+)Vector produce=(Vector)vs.get(i);Vector temp=new Vector();for(int j=0;jproduce.size();j+)temp.add(String)produce.get(j);/for jnewvector.add(temp);/for ireturn newvector;public Vector addElements(Vector vs,Vectortemp)for(int i=0;itemp.size();i+)/if(!vs.contains(temp.get(i) vs.add(temp.get(i); /forreturn vs;/public Vector addElements(Vector vs,Vectortemp) /class toolsclass ElementsVector end=new Vector();/表示終結(jié)符Vector noend=new Vector();/表示非終結(jié)符VectorVector produce=new VectorVector();/產(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()/非終結(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 temp=new Vector(); temp.add(s.split(-)0); temp.add(s.split(-)1); produce.add(temp); /while/public void addproduce()public Vector getend()return end;public Vector getnoend()return noend;public VectorVector getproduce()return duce;public void run() /*TEST*/end.add(a);end.add(b);noend.add(S);noend.add(A);noend.add(B); Vector temp=new Vector(); temp.add(S); temp.add(aA); produce.add(temp); /*/ Vector temp1=new Vector(); temp1.add(S); temp1.add(bB); produce.add(temp1); /*/ Vector temp2=new Vector(); temp2.add(S); temp2.add(e); produce.add(temp2); /*/ Vector temp3=new Vector(); temp3.add(A); temp3.add(aB); produce.add(temp3); /*/ Vector temp4=new Vector(); temp4.add(A); temp4.add(bA); produce.add(temp4); /*/ Vector temp5=new Vector(); temp5.add(B); temp5.add(aS); produce.add(temp5); /*/ Vector temp6=new Vector(); temp6.add(B); temp6.add(bA); produce.add(temp6); /*/ Vector temp7=new Vector(); temp7.add(B); temp7.add(e); produce.add(temp7); /*/ Vector temp8=new Vector(); temp8.add(S); temp8.add(aB); produce.add(temp8); /* Vector temp9=new Vector(); temp9.add(S); temp9.add(aAA); produce.add(temp9);*/ / System.out.println(produce.size()=+produce.size();/*TEST*/this.setend();/this.setnoend();/this.setproduce();public boolean Iscontainend(String s)/正則表達(dá)式判斷s1是否在END的閉包里面 正則忘了怎么寫(xiě)了 int length=s.length(); for(int i=0;ilength;i+) String a=+s.charAt(i); if(end.contains(a) continue; else return false; /for return true;/public boolean isRGPcontain(String 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;iend.size();i+)System.out.print(String)end.get(i)+, );System.out.println( );System.out.print(非終結(jié)符輸出如下:);for(int i=0;inoend.size();i+)System.out.print(String)noend.get(i)+, );System.out.println( );System.out.print(產(chǎn)生式輸出如下:);for(int i=0;iproduce.size();i+)System.out.println( );Vector temp=(Vector)produce.get(i);System.out.print(String)temp.get(0)+-+(String)temp.get(1);System.out.println( );/class Elementspublic class Test Elements elements;Tools tools=new Tools();Vector end=new Vector();/表示終結(jié)符Vector noend=new Vector();/表示非終結(jié)符Vector inputTable=new Vector();/表示輸入符號(hào)的集合 即又窮字母表Vector statusTable=new Vector();/狀態(tài)表VectorVector produce=new VectorVector();/產(chǎn)生式VectorVector newproduce=new VectorVector();/轉(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;iproduce.size();i+)Vector temp=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 temp1=new Vector();temp1.add(left);temp1.add(one);temp1.add(two);newproduce.add(temp1);/ifelse/S-a形式String one=+right.charAt(0);Vector temp1=new Vector();temp1.add(left);temp1.add(one);temp1.add(last);newproduce.add(temp1);public boolean iszhenggui()for(int i=0;iproduce.size();i+)Vector temp=produce.get(i);String left=temp.get(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(elements.IsNoENd(two)=false)/return false;return true; public void FA()/構(gòu)造自動(dòng)機(jī) public void setstatusTable()/狀態(tài)表for(int i=0;inoend.size();i+)statusTable.add(noend.get(i);statusTable.add(last); public void setinputTable()/狀態(tài)表for(int i=0;iend.size();i+)inputTable.add(end.get(i);public void show()System.out.print(狀態(tài)表輸出如下:);for(int i=0;istatusTable.size();i+)System.out.print(String)statusTable.get(i)+, );System.out.println( );System.out.print(字母表輸出如下:);for(int i=0;iinputTable.size();i+)System.out.print(String)inputTable.get(i)+, );System.out.println( );System.out.print(轉(zhuǎn)換函數(shù)輸出如下:);for(int i=0;inewproduce.size();i+)System.out.println( );Vector temp=(Vector)newproduce.get(i);System.out.print(String)temp.get(0)+ +(String)temp.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;VectorVector vs=new VectorVector();/Vector vv=new Vector();for(int i=0;inewproduce.size();i+)Vector temp=newproduce.get(i);String left=temp.get(0);String midle=temp.get(1);if(vs.isEmpty()/如果是第一次放入數(shù)據(jù)Vector temp2=new Vector();temp2.add(left);temp2.add(midle);vs.add(temp2);else/System.out.println(11

溫馨提示

  • 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)論