实验2 有穷状态自动机.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验2 有穷状态自动机

科学与工程学院学生实验报告 学号 专业 计算机 班级 姓名 课程名称 编译原理 课程类型 必修 实验名称 实验二、有穷状态自动机 实验目的: 掌握有穷状态自动机的概念、其存储表示及其与正则文法的联系; 掌握运行有穷状态自动机的概念。 实验内容: 从正则文法构造有穷状态自动机,运行有穷状态自动机识别字符串。 输入:任意的有穷状态自动机和带识别的字符串; 输出:对输入字符串运行相应有穷状态自动的过程; 要求: 以简便方式输入有穷状态自动机; 除给出运行过程,还给出识别结论。 说明: 对于非确定的有穷状态自动机的运行采用交互方式; 以简便方式输出运行过程。 测试文法为: A::=a,A::=b A::=Aa B::=Bb C::=Cc B::=Acb B::=Cb 实验代码如下: #includestdio.h #includestring.h #includemath.h void main() { int i,j,k1,k2,t=0,t1,g,l,f,f1,tag=0; char a[20][20]={0}; char c[20][20]={0}; char K[50]={0}; char e[50]={0}; printf(请输入规则个数:\nf=); scanf(%d,f); printf(请依次输入文法规则:); for(i=0;if;i++) scanf(%s,a[i]); K[0]=S; t1=1; for(i=0;if;i++) for(j=0;jstrlen(a[i]);j++) if(a[i][j]=Aa[i][j]=Z) K[t1++]=a[i][j]; for(i=0;it1-1;i++) { for(j=t1-1;ji;j--) if(K[j]==K[i]) for(g=j;gt1;g++) { K[g]=K[g+1]; t1--; } } for(i=0;if;i++) for(j=0;jstrlen(a[i]);j++) if((a[i][j]=a a[i][j]=z)||(a[i][j]=40 a[i][j]=57)) e[t++]=a[i][j]; for(i=0;it-1;i++) { for(j=t-1;ji;j--) if(e[j]==e[i]) for(g=j;gt;g++) { e[g]=e[g+1]; t--;}} for(i=0;if;i++) { c[i][0]=M;c[i][1]=(;c[i][3]=,;c[i][5]=);c[i][6]==; if((a[i][4]=Aa[i][4]=Z)((a[i][5]=aa[i][5]=z)||(a[i][5]=40 a[i][5]=57))) { c[i][2]=a[i][4]; c[i][4]=a[i][5]; c[i][7]=a[i][0]; } else { c[i][2]=S;c[i][4]=a[i][4];c[i][7]=a[i][0]; } } f1=f; for(i=0;if1-1;i++) { for(j=i+1;jf1;j++) if(c[i][2]==c[j][2]c[i][4]==c[j][4]) { l=strlen(c[i]); c[i][l]=c[j][7]; for(k1=j;k1f1;k1++) for(k2=j;k2strlen(c[k1]);k2++) c[k1][k2]=c[k1+1][k2]; f1--; } } for(i=1;if1;i++) if(strlen(c[i])8) tag=1; if(tag==1) printf(该有穷状态自动机是非确定的.\n); else { printf(该有穷状态自动机是确定的.\n);} printf(K={); for(i=0;it1;i++) printf(%c ,K[i]); printf(}); printf(\n); printf(W={); for(i=0;it;i++) printf(%c ,e[i]); printf(}); printf(\

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档