ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:25.14KB ,
资源ID:18704137      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18704137.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理实验报告3Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理实验报告3Word下载.docx

1、=M(B,aa)=M(M(B,a),a)=M(A,a)=Z该符号串能被有穷状态所接受 !B:=b输入规则:Z:=Ab Z:=Ba Z:=Zc A:=a B:=Ab文法规则存储完毕!此为非确定有穷状态自动机!NFA N=(Z,B,A,b,a,c,M,S,Z)M(A,a)=$M(A,b)=Z,BM(A,c)=$M(B,a)=Z,AM(B,b)=$M(B,c)=$M(Z,a)=$M(Z,b)=$M(Z,c)=ZM(S,a)=AM(S,b)=BM(S,c)=$将NFA转化为DFA!DFA N=(S,B,A,AZ,BZ,Z,b,a,c, M,S,F)其中MM(S,b)=B(S,a)=A(B,a)=AZ(

2、A,b)=BZ(AZ,b)=BZ(AZ,c)=Z(BZ,a)=AZ(BZ,c)=Z(Z,c)=Z 其中 F=AZ,BZ,Z 输入要推导的字符串:ababc(S,ababc) =M(M(S,a),babc) =M(A,babc) =M(A,b),abc) =M(BZ,abc) =M(BZ,a),bc) =M(AZ,bc) =M(AZ,b),c) =M(BZ,c) =ZZ属于终止状态集合! 该字符串能被有穷状态所接受实验结果:abah 曰 * z B- A A h- B Tn=-三=- =s z z z B B A A一 屉赶;皿d血a屉!JRdEi法规则存储完毕此为确定有穷状态自动机,DFA箕中

3、Fl:MB,bB,a=AA,aft,b=BMCS.hS,a-n 生危fa请 退出请捋m 请输入要推导的符号串:ababaa MCr ababaa =MCM =MA,babaa =MCI1lbaa =MCB.abaa.baa5 =MCAr baa) -rKM,aaB,aaJ=M競符号串能被有穷状态所接受*b a c a b8A B z B a A b -一 =一 = 一一 一一 s数 gZ:A:B; w则则则则则则则 f 畐 m-劈 _鸟-a_=&g 生遽巒 运行m请按2 退岀雷霽一花为非确定有穷状态自动机?UFA H-Z,B.A.,M.,ZMnpn:n=$B,cttZ,c=HCE,a-S,bB

4、 n=$ 将NPA转牝为DFfH DFA N1 =SJ, LB, Eft, AZ,LBZJ, tai, Lc, MJ , S,FJ 其中护:CSl,b=*BHJCB,a-CAZlMJ =EBZJNJ=ZJM1=tAZJNJCBZl,c-rZlmj =iZ其中 F,=MJ Mf ,babc-Mf rAJ,b,abcW IB却 “beLAZlRbcMJM,.cEBZl,c-Z参考程序#includeString.hstruct Leftitem;struct RightNode /存储状态转换关系中弧与终止状态结点结构char tran;char nextstate;RightNode* next

5、sibling;RightNode(char x,char y)tran=x; nextstate=y; nextsibling=NULL;struct Leftitem /存储状态转换关系中初始状态结点结构char state;RightNode* link;存放确定化的NFA状态结点结构struct Stateitemchar newstates10;Stateitem()newstates0=0;/ int CheckState(Leftltem Array,int size)RightNode* p;RightNode* q;for(int i=0;inextsibling; if(q

6、=NULL) return 1; while(q!=NULL)if(p_tran=q_tran) return 0; q=q-return 1; int CheckExist(Stateltem SArray,int& length,char temp)/将NFA确定化创建二维矩阵时判别新产生的状态是否在状态数组中存储过int i=0,k,m;while(ilength)length+;m=length;return m;elsereturn k;int getcount1(Leftltem Array,int size) /取得 FA 中状态的个数char temp20;int len=0,

7、count=0;int i,j;RightNode* pNode;for(i=0;pNode=Arrayi.link;while(pNode)for(j=0;jnextstate=tempj) break;if(j=len)count+;templen=pNode-nextstate;len+;pNode=pNode-return count;int getcount2(Leftltem Array,int size) /取得 FA 中输入字母的个数tran=tempj) break;tran;int getstate(RightNode* pNode,char arc) 判定一个状态是否能通

8、过一条弧进入下一状态tran=arc) return 1;return 0;void Sort(char A,int n) /将取得的新状态进行排序for(int i=n_1;i0;i_)for(int j=O;i;if(Aj+1coutvoid Bianli2(Leftltem Array,int size)输岀FA中有穷的输入字母表 elsetra n; len+; pNode=pNode- void Bianli31(LeftItem Array,int size)输岀DFA状态转换关系的集合 M int i;while(pNode!coutvv M(vArrayi.statevvtra

9、nvv)=nextstateSort(K,len);coutvvKjvvif(getstate(pNode,Kj)while(qNode)if(qNode-vvqNode-qNode=qNode-endl;$vvendl;TArrayvoid lnitiate(Leftltem Array,int size,char TArray) 将 FA 中的输入字母表存入数组ivsize;jvlen;tran=TArrayj) break;TArraylen=pNode- void GetState(Leftltem Array,int size,char nstate,char arc,char te

10、mp) /将NFA确定化创建二维矩阵时取得新状态int i=0;while(nstatei!=for(int j=0;jvsize;if(Arrayj.state=nstatei)RightNode* p=Arrayj.link;while(p!tran=arc)int k=0;while(tempk!if(p-nextstate=tempk) break; k+;if(tempk=tempk=p-tempk+1=0:p=p- void Change(Stateltem SArray,char temp,int& length,int MArray20,int index,int i)/取得新

11、状态后对状态数组以及状态转换矩阵进行对应变化int k;if(temp0!k=CheckExist(SArray,length,temp);MArrayindexi=k;if(k=length)strcpy(SArraylength.newstates,temp);char FindNewState(Leftltem Array,int size,char S,char arc) / 得到当前状态的下一状态if(Arrayi.state=S)RightNode* p=Arrayi.link;tran=arc) return p- p=p-return NULL;/取得输入字母在字母表中的下表

12、int Findy(char TArray,char s)while(TArrayi!if(TArrayi=s) return i; i+; void CreateFA1(Leftltem Array,int size,char start,char end)/根据输入文法创建FA if(CheckState(Array,size)此为确定有穷状态自动机 !DFA D=(此为非确定有穷状态自动机 !NFA N=(Bianli1(Array,size);,Bianli2(Array,size);,M,coutvvstart;else coutvvstartvv coutvvendvv)其中 M:

13、 if(CheckState(Array,size) Bianli31(Array,size);Bianli32(Array,size);length,int void CreateFA2(Leftltem Array,int size,char start,char end,Stateltem SArray,char TArray,int& MArray20)/将NFA转换为DFAint index=0;doi=0;temp0=GetState(Array,size,SArrayindex.newstates,TArrayi,temp);Sort(temp,strlen(temp);Chan

14、ge(SArray,temp,length,MArray,index,i);index+;while(index=length);void Display(StateItem SArray,char TArray,int MArray20,int x,int y,char start,char end)输出确定化的NFAint i,j,k;将 NFA 转化为 DFA!=(ivx;if(i=0) coutvvvvSArrayi.newstatesvvelse coutvv,ivy;if(i=O) coutvTvvTArrayivvTArrayivv, Mstartvv,F)其中 Mx;jvy;i

15、f(MArrayij!=-1)k=MArrayij;(,vvTArrayjvv)=vvSArrayk.newstatesvv其中 F=k=0;j=0;while(SArrayi.newstatesj!if(SArrayi.newstatesj=end) break;j+;if(SArrayi.newstatesj!if(k=0) coutvvk+;void RunFA1(Leftltem Array,int size,char start,char end)char TD20;int i=0,j;char s=start;COUt请输入要推导的符号串:;cinTD;svvTDj!TDj;e ndl;while (TDi!if(TDi+1!cout

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1