版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 特至I 学诚H 课程名称:从正规文法构造有夯状态自动机 年级/专业/班:11级计算机类(二)班 姓名:徐勇兵 E01114278 从正规文法构造有穷状态自动机 输入:任意的正规文法 输由:相应的有穷状态自动机 要求:识别有穷状态自动机是确定的还是 非确定的,生成相应的五元组形式。 说明:应检查输入的是否正规文法。 实验截图: 测试一:修结符输出如下;如非终给荷输出如下:5,5,A,B,A,B,产生式输出如下:3 3- -akSakS- -hBShBS- -ee A A- -山-汕4B4B- -a5a5 EE是正规式状态表输出如下;*A,A,比“字母表输出如下;工 6转换函数输出如下:3 3a
2、 aASUBSASUBSe eZkZkaBaBA AkABaSkABaSb btotoA AB*ZB*Z初态是S S终态是工是DFADFA 测试二: t terfninatea?lstLJavaAfpiicationjvrsrogrerfninatea?lstLJavaAfpiicationjvrsrograjwajwr ri iJsJs jav&jav& jrjr然结符输出2 2口木:a,a,6 6 非终结符输出如下;S,AS,Af fB,产生式输出如下: 5 5- -alal S S- -bDbD3 3- -yeye k k- -bAbAB BaSaSB B- -ADADA
3、 AB B- -ytyt 方一AMAM乩4 4不是正规式程序结束 * 测试三: AaB B B- -?aS?aS E E- -bibi BeBe S S- -aBaB 是正规式 状态表输出如下:二,%B勺字母装输出如下:R,匕,转换函数输出如下 5 5日国 SEESEE S Se e2 2 AaEAaE 亚A A EaEaS S EbAEbA BeBe2 2 S Sa aS S 初态是S S: 终态是工 不是NF0NF0 importjava.util.Vector; importjavax.swing.JOptionPane; classTools publicVectorprotectio
4、n(Vectorvs) Vectornewvector=newVector(); for(inti=0;ivs.size();i+) newvector.add(vs.get(i); returnnewvector; doubleprotection(VectorVector vs)( VectorVectornewvector=newVectorVector(); for(inti=0;ivs.size();i+) Vectorproduce=(Vector)vs.get(i); Vectortemp=newVector(); for(intj=0;jproduce.size();j+) t
5、emp.add(String)produce.get(j); /forj newvector.add(temp); /fori returnnewvector; publicVectoraddElements(Vectorvs,Vectortemp) for(inti=0;itemp.size();i+) if(!vs.contains(temp.get(i) vs.add(temp.get(i); /for returnvs; /publicVectoraddElements(Vector vs,Vectortemp)/classtoolsclassElements Vectorend=ne
6、wVector();/表示终结符 Vectornoend=newVector();/表示非终结符 VectorVectorproduce=newVectorVector();/产生式 publicVectorVector publicvoidsetend()/终结符元素添加 while(true) Strings=JOptionPane.showInputDialog(null,请输入终结符); if(s=null)return;/ifend.add(s);/while/publicvoidaddend()/元素添加 publicvoidsetnoend()/非终结符元素添加 while(tr
7、ue) Strings=JOptionPane.showInputDialog(null,非请输入终结符); if(s=null)return;/ifnoend.add(s); /while /publicvoidaddnoend()/ publicvoidsetproduce() while(true) Strings=JOptionPane.showInputDialog(null,请输入产生式,-隔开); if(s=null) return; Vectortemp=newVector(); temp.add(s.split(-)0); temp.add(s.split(-)1); pro
8、duce.add(temp); /while /publicvoidaddproduce() publicVectorgetend() returnend; publicVectorgetnoend() returnnoend; publicVectorVectorgetproduce() duce; publicvoidrun() /*TEST*/ end.add(a); end.add(b); noend.add(S); noend.add(A); noend.add(B); Vectortemp=newVector(); temp.add(S); temp.a
9、dd(aA); produce.add(temp); /*/ Vectortemp1=newVector(); temp1.add(S); temp1.add(bB); produce.add(temp1); /*/ Vectortemp2=newVector(); temp2.add(S); temp2.add(e); produce.add(temp2); /*/ Vectortemp3=newVector(); temp3.add(A); temp3.add(aB); produce.add(temp3); /*/ Vectortemp4=newVector(); temp4.add(A
10、); temp4.add(bA); produce.add(temp4); /*/ Vectortemp5=newVector(); temp5.add(B); temp5.add(aS); produce.add(temp5); /*/ Vectortemp6=newVector(); temp6.add(B); temp6.add(bA); produce.add(temp6); /*/ Vectortemp7=newVector(); temp7.add(B); temp7.add(e); produce.add(temp7); /*/ Vectortemp8=newVector();
11、temp8.add(S); temp8.add(aB); produce.add(temp8); /*Vectortemp9=newVector(); temp9.add(S); temp9.add(aAA); produce.add(temp9);*/ /System.out.println(produce.size()=+produce.size(); /*TEST*/ /this.setend(); /this.setnoend(); /this.setproduce(); publicbooleanIscontainend(Strings)/正则表达式判断s1是否在END的闭包里面 正
12、则忘了怎么写了 intlength=s.length(); for(inti=0;ilength;i+) ( Stringa=+s.charAt(i); if(end.contains(a) continue; elsereturnfalse; /for returntrue; /publicbooleanisRGPcontain(Strings) publicbooleanIsNoENd(Strings) Stringss=+s.charAt(0); if(!Iscontainend(ss)/如果不含有终结符,则为非终结符 returntrue; returnfalse; /publicbo
13、olean publicvoidshow() System.out.print(终结符输出如下:); for(inti=0;iend.size();i+) System.out.print(String)end.get(i)+,); System.out.println(); System.out.print(非终结符输出如下:); for(inti=0;inoend.size();i+) System.out.print(String)noend.get(i)+,); System.out.println(); System.out.print(产生式输出如下:); for(inti=0;i
14、produce.size();i+) System.out.println(); Vectortemp=(Vector)produce.get(i); System.out.print(String)temp.get(0)+-+(String)temp.get(1); System.out.println(); classElementspublicclassTest Elementselements; Toolstools=newTools(); Vectorend=newVector(); Vectornoend=newVector(); VectorinputTable=newVecto
15、r();/表示输入符号的集合即又 穷字母表 VectorstatusTable=newVector();/状态表 VectorVectorproduce=newVectorVector();/产生式 表示终结符 表示非终结符 VectorVectornewproduce=newVectorVector();/转换 函数 Stringstart=S;/初态 Stringlast=Z;/终态 publicvoidfirststep() if(elements.Iscontainend(aA)=true) System.out.println(yes); for(inti=0;iproduce.si
16、ze();i+) Vectortemp=produce.get(i); Stringleft=temp.get(0); Stringright=temp.get(1); if(right.length()!=1)/S-aA形式 Stringone=+right.charAt(0); Stringtwo=+right.charAt(1); Vectortemp1=newVector(); temp1.add(left); temp1.add(one); temp1.add(two); newproduce.add(templ); /if else/S-a形式 Stringone=+right.c
17、harAt(0); Vectortemp1=newVector(); temp1.add(left); temp1.add(one); temp1.add(last); newproduce.add(temp1); publicbooleaniszhenggui() for(inti=0;iproduce.size();i+) Vectortemp=produce.get(i); Stringleft=temp.get(0); Stringright=temp.get(1); if(right.length()2) returnfalse; if(right.length()=1) if(el
18、ements.IsNoENd(right)=false)/S-A不满足 returnfalse; if(right.length()=2) Stringone=+right.charAt(0); Stringtwo=+right.charAt(1); if(elements.Iscontainend(one)=false) returnfalse; if(elements.IsNoENd(two)=false) returnfalse; ) ) returntrue; ) publicvoidFA()构造自动机 ) publicvoidsetstatusTable()/状态表 for(inti
19、=0;inoend.size();i+) statusTable.add(noend.get(i); )statusTable.add(last); publicvoidsetinputTable()/状态表 for(inti=0;iend.size();i+) inputTable.add(end.get(i); publicvoidshow() System.out.print(状态表输出如下:); for(inti=0;istatusTable.size();i+) System.out.print(String)statusTable.get(i)+,); System.out.pri
20、ntln(); System.out.print(字母表输出如下:); for(inti=0;iinputTable.size();i+) System.out.print(String)inputTable.get(i)+,); System.out.println(); System.out.print(转换函数输出如下:); for(inti=0;inewproduce.size();i+) System.out.println(); Vectortemp=(Vector)newproduce.get(i); System.out.print(String)temp.get(0)+(St
21、ring)temp.get(1)+ +(String)temp.get(2); System.out.println(); System.out.println(初态是+start); System.out.println(终态是+last); ) publicbooleanjudge() booleanflag=true; VectorVectorvs=newVectorVector(); /Vectorvv=newVector(); for(inti=0;inewproduce.size();i+) Vectortemp=newproduce.get(i); Stringleft=temp.get(0); Stringmidle=temp.get(1); if(vs.isEmpty()如果是第一次放入数据 Vectortemp2=newVector(); temp2.add(left); temp2.add(midle);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年光触媒复合式过滤器项目可行性研究报告
- 课程设计项目书模板
- 数学代数课程设计总结
- 中国高速工具钢行业盈利态势及需求趋势预测预测研究报告(2024-2030版)
- 2024年中国电子配件箱市场调查研究报告
- 中国重烷基苯行业应用状况及投资盈利预测研究报告(2024-2030版)
- 中国跨座式单轨列车行业发展模式与投资策略建议研究报告(2024-2030版)
- 2024年中国树脂工艺摆饰市场调查研究报告
- 中国耐腐蚀压力表行业运行态势及前景动态预测研究报告(2024-2030版)
- 中国纳米钛酸钡行业应用状况及投资策略分析研究报告(2024-2030版)
- 《阿凡达》电影赏析
- DB42-T 2286-2024 地铁冷却塔卫生管理规范
- 合作伙伴合同协议书范文5份
- 小学生主题班会《追梦奥运+做大家少年》(课件)
- 公安机关人民警察高级执法资格考题及解析
- 浙教版信息科技四年级上册全册教学设计
- 2024年全国职业院校技能大赛中职(中式烹饪赛项)考试题库-下(多选、判断题)
- 教师节感恩老师主题班会一朝沐杏雨一生念师恩因为有你未来更加光明课件
- 红托竹荪工厂化栽培技术规程
- 【基于Android的电商购物系统设计与实现3900字(论文)】
- YBT 189-2014 连铸保护渣水分含量(110℃)测定试验方法
评论
0/150
提交评论