将正规式R化成最小DFA的状态图.doc_第1页
将正规式R化成最小DFA的状态图.doc_第2页
将正规式R化成最小DFA的状态图.doc_第3页
将正规式R化成最小DFA的状态图.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

姓名:沈亮 学号:0905080116 班级:09计算机工程01实验一:词法分析器的设计一、实验目的:(1)掌握词法分析器的构造过程以及基本方法。 (2)理解正规式、NFA、DFA及最小化DFA的转换过程和方法。二、实验内容给定一个正规式R=XY*|YX*Y|XYX,请先在练习本上将此正规式转变为NFA、DFA、最小化DFA;对你所完成的最小化DFA进行编程,完成词法分析器工作。三.设计分析1.将给定的正规式R=NFA;2.将NFA=DFA;3.将DFA=最小DFA;4,按照最小DFA的状态图,编写相应的程序。将正规式R=XY*|YX*Y|XYX化成最小DFA的状态图如下:图 1-1 最小DFA状态图简要方法:1. 根据最小DFA的状态图设计程序,从键盘输入含X、Y的字符串,所编写的程序从输入的字符串中的第一个字符开始比较,依次比较下去,若发现该字符串与该状态图不符,则不属于该状态图。2. 该程序的主要编程思想为大量使用if判断语句,以及一些简单的for循环语句。四、源程序代码:#includeusing namespace std;#define MAX 200void main()char aMAX;cout根据正规式R分成三个部分,即R1=XY*,R2=YX*Y,R3=XYXendl;cout请输入一段字符(仅含X或者Y):endl;cin.get(a,200);int n;/所输入字符串的长度for( int i=0;i!=MAX;+i)/计算编码的长度nif(ai=0)n=i;break;if(a0=X)if(a1=0) cout属于正规式R1=XY*endl;else if(a1=Y)if(a2=0)cout属于正规式R1=XY*endl;else if(a2=X & a3=0)cout属于正规式R3=XYXendl;else for(i=2;in;)if(ai=Y)i+;elsebreak;if(i=n)cout属于正规式R1=XY*endl;elsecout不属于正规式Rendl;elsecout不属于正规式Rendl;else if(a0=Y)if(a1=Y&a2=0)cout属于正规式R2=YX*Yendl;else if(an-1=Y)if(a1=X)for(i=1;in-1;)if(ai=X)i+;elsebreak;if(i=n-1)cout属于正规式R2=YX*Yendl;elsecout不属于正规式Rendl;elsecout不属于正规式Rendl;elsecout不属于正规式Rendl;五、测试用例1.当从键盘输入“XYYYYYYY“时,判断属于正规式R1=XY*.2.当从键盘输入YXXXXXXY时,判断属于正规式R2=YX*Y.3. 当从键盘输入XYX时,判断属于正规式R3=XYX.4. 当输入为XYYX时,不符合正规式R.5.当输入为YXXYX时,不符合正规式R.六、实验总结通过本次实验,使我对正规式转成相应的NFA、DFA以及最小DFA的知识更加了解,强化了我的理论知识,在实验过程中,还

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论