版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 名 称: 从正规文法构造有穷状态自动机年级/专业/班: 11级计算机类(二)班 姓 名: 徐勇兵 学 号: E01114278 从正规文法构造有穷状态自动机输入:任意的正规文法输出:相应的有穷状态自动机要求:识别有穷状态自动机是确定的还是非确定的,生成相应的五元组形式。说明:应检查输入的是否正规文法。实验截图:测试一:测试二:*测试三:import java.util.Vector;import javax.swing.JOptionPane;class Toolspublic Vector<String> protection(Vector<String> v
2、s)Vector<String> newvector=new Vector<String>();for(int i=0;i<vs.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<Str
3、ing>>();for(int i=0;i<vs.size();i+)Vector<String> produce=(Vector<String>)vs.get(i);Vector<String> temp=new Vector<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>
4、 addElements(Vector<String> vs,Vector<String>temp)for(int i=0;i<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 toolsclass ElementsVector<String> end=n
5、ew Vector<String>();/表示终结符Vector<String> noend=new Vector<String>();/表示非终结符Vector<Vector<String>> produce=new Vector<Vector<String>>();/产生式public void setend()/终结符元素添加while(true)String s=JOptionPane.showInputDialog(null,"请输入终结符");if(s=null)return;/
6、ifend.add(s);/while/public void addend()/元素添加public void setnoend()/非终结符元素添加while(true)String s=JOptionPane.showInputDialog(null,"非请输入终结符");if(s=null)return;/ifnoend.add(s);/while/public void addnoend()/public void setproduce() while(true) String s=JOptionPane.showInputDialog(null,"请输
7、入产生式,->隔开"); if(s=null)return; Vector<String> temp=new 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> getn
8、oend()return noend;public Vector<Vector<String>> getproduce()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.
9、add("S"); temp.add("aA"); produce.add(temp); /*/ Vector<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&
10、quot;); produce.add(temp2); /*/ Vector<String> temp3=new Vector<String>(); temp3.add("A"); temp3.add("aB"); produce.add(temp3); /*/ Vector<String> temp4=new Vector<String>(); temp4.add("A"); temp4.add("bA"); produce.add(temp4); /*/ Vect
11、or<String> temp5=new Vector<String>(); temp5.add("B"); temp5.add("aS"); produce.add(temp5); /*/ Vector<String> temp6=new Vector<String>(); temp6.add("B"); temp6.add("bA"); produce.add(temp6); /*/ Vector<String> temp7=new Vector<
12、;String>(); temp7.add("B"); temp7.add("e"); produce.add(temp7); /*/ Vector<String> temp8=new Vector<String>(); temp8.add("S"); temp8.add("aB"); produce.add(temp8); /* Vector<String> temp9=new Vector<String>(); temp9.add("S"
13、); 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)/正则表达式判断s1是否在END的闭包里面 正则忘了怎么写了 int length=s.length(); for(int i=0;i<length;i+) String
14、 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)/如果不含有终结符,则为非终结符 return true; return false; / public booleanpublic void show()
15、System.out.print("终结符输出如下:");for(int i=0;i<end.size();i+)System.out.print(String)end.get(i)+", ");System.out.println(" ");System.out.print("非终结符输出如下:");for(int i=0;i<noend.size();i+)System.out.print(String)noend.get(i)+", ");System.out.println(
16、" ");System.out.print("产生式输出如下:");for(int i=0;i<produce.size();i+)System.out.println(" ");Vector<String> temp=(Vector<String>)produce.get(i);System.out.print(String)temp.get(0)+"->"+(String)temp.get(1);System.out.println(" ");/class
17、 Elementspublic class Test Elements elements;Tools tools=new Tools();Vector<String> end=new Vector<String>();/表示终结符Vector<String> noend=new Vector<String>();/表示非终结符Vector<String> inputTable=new Vector<String>();/表示输入符号的集合 即又穷字母表Vector<String> statusTable=new
18、 Vector<String>();/状态表Vector<Vector<String>> produce=new Vector<Vector<String>>();/产生式Vector<Vector<String>> newproduce=new Vector<Vector<String>>();/转换函数String start="S"/初态String last="Z"/终态public void firststep()if(elements.
19、Iscontainend("aA")=true)System.out.println("yes");for(int i=0;i<produce.size();i+)Vector<String> 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.cha
20、rAt(1);Vector<String> temp1=new Vector<String>();temp1.add(left);temp1.add(one);temp1.add(two);newproduce.add(temp1);/ifelse/S->a形式String one=""+right.charAt(0);Vector<String> temp1=new Vector<String>();temp1.add(left);temp1.add(one);temp1.add(last);newproduce.ad
21、d(temp1);public boolean iszhenggui()for(int i=0;i<produce.size();i+)Vector<String> 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)Strin
22、g 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()/构造自动机 public void setstatusTable()/状态表for(int i=0;i<noend.size();i+)statusTable.add(noend.get(i);
23、statusTable.add(last); public void setinputTable()/状态表for(int i=0;i<end.size();i+)inputTable.add(end.get(i);public void show()System.out.print("状态表输出如下:");for(int i=0;i<statusTable.size();i+)System.out.print(String)statusTable.get(i)+", ");System.out.println(" ");
24、System.out.print("字母表输出如下:");for(int i=0;i<inputTable.size();i+)System.out.print(String)inputTable.get(i)+", ");System.out.println(" ");System.out.print("转换函数输出如下:");for(int i=0;i<newproduce.size();i+)System.out.println(" ");Vector<String>
25、; temp=(Vector<String>)newproduce.get(i);System.out.print(String)temp.get(0)+" "+(String)temp.get(1)+" "+(String)temp.get(2);System.out.println(" ");System.out.println("初态是"+start);System.out.println("终态是"+last);public boolean judge()boolean fl
26、ag=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()/如果是第一次放入数据Vector<String> temp2=new V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高频等离子工岗前生产安全技能考核试卷含答案
- 园林修剪工岗前道德考核试卷含答案
- 固体废物监测员岗前综合知识考核试卷含答案
- 出河机司机规程测试考核试卷含答案
- 无线通信设备装调工岗前职级晋升考核试卷含答案
- 2026医用CT机滑环轴承接触应力分布与磨损机理研究
- 2026中国碳纤维复合材料在航空航天领域应用前景与技术瓶颈
- 2026中国电能替代政策推动下电加热设备市场爆发潜力评估
- 2026光伏组件回收产业政策支持与技术路线经济性分析
- 2026口腔医疗连锁机构扩张战略与市场竞争分析
- 高级教师职称面试讲课答辩题目及答案
- 肝癌介入治疗术后护理
- GB/Z 194-2026实习活动医疗卫生专业学习环境质量护理场所医疗卫生教育提供者要求
- 2026-2030中国婴儿车行业深度调研及投资前景预测研究报告
- 幼儿园安全教育防滑教案详解
- 彩钢顶屋面维修工程维修施工方案
- 大学室长培训
- 雨课堂学堂在线学堂云《神经网络理论及应用(北工商)》单元测试考核答案
- 2025重庆日报报业集团所属企业招聘3人笔试历年典型考点题库附带答案详解试卷3套
- 雨课堂在线学堂《走进医学》作业单元考核答案
- 人教版二年级数学上册第二单元1~6的表内乘法达标测试卷(含答案)
评论
0/150
提交评论