




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程编译原理实验名称实验二LL(1)分析法实验目的1 .掌握LL(1)分析法的基本原理;2 .掌握LL(1)分析表的构造方法;3 .掌握LL(1)驱动程序的构造方法。一.实验内容及要求根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1) E-TG(2) G-+TG(3) G-s(4) T-FS(5) S-*FS(6) S-(7) F-(E)(8) F-i程序输入一以#吉束的符号串(包括+*()i#),如:i+i*i#。输出过程如下:步骤分析栈剩余输入串所
2、用产生式1 Ei+i*i#E-TG.实验过程及结果代码如下:#include#includeedge.husingnamespacestd;edge:edge()cinleftright;rlen=right.length();if(NODE.find(left)NODE.length()NODE+=le化stringedge:getlf()returnleft;stringedge:getrg()returnright;stringedge:getfirst()(returnfirst;)stringedge:getfollow()(returnfollow;)stringedge:gets
3、elect()(returnselect;)stringedge:getro()(stringstr;str+=right0;returnstr;)intedge:getrlen()(returnright.length();)voidedge:newfirst(stringw)(inti;for(i=0;ifirst.length()first+=wi;)voidedge:newfollow(stringw)(inti;for(i=0;ifollow.length()&wi!=)follow+=wi;)voidedge:newselect(stringw)(inti;for(i=0;isel
4、ect.length()&wi!=)select+=wi;)inti=first.find();first.erase(i,1);)intSUM;stringNODE,ENODE;/计算firstvoidfirst(edgeni,edge*n,intx)(inti,j;for(j=0;jSUM;j+)(if(ni.getlf()=nj.getlf()(if(NODE.find(nj.getro()NODE.length()(for(i=0;iSUM;i+)if(ni.getlf()=nj.getro()first(ni,n,x);)elsenx.newfirst(nj.getro();)/计算
5、followvoidfollow(edgeni,edge*n,intx)(inti,j,k,s;stringstr;for(i=0;ini.getrlen();i+)(s=NODE.find(ni.getrg()i);if(s-1)是非终结符if(ini.getrlen()-1)/不在最右for(j=0;jSUM;j+)if(nj.getlf().find(ni.getrg()i)=0)(if(NODE.find(ni.getrg()i+1)NODE.length()(for(k=0;kSUM;k+)if(nk.getlf().find(ni.getrg()i+1)=0)(nj.newfoll
6、ow(nk.getfirst();if(nk.getfirst().find()nk.getfirst().length()nj.newfollow(ni.getfollow();elsestr.erase();str+=ni.getrg()i+1;nj.newfollow(str);计算selectvoidselect(edge&ni,edge*n)inti,j;if(ENODE.find(ni.getro()ENODE.length()ni.newselect(ni.getro();if(ni.getro()=)ni.newselect(ni.getfollow();elsefor(i=0
7、;ini.getrlen();i+)for(j=0;jnj.getfirst().length()return;输出集合voidout(stringp)inti;if(p.length()=0)return;cout;for(i=0;ip.length()-1;i+)coutpi;)/连续输出符号voidoutfu(inta,stringc)(inti;for(i=0;ia;i+)coutc;输出预测分析表voidoutgraph(edge*n,string(*yc)50)(inti,j,k;boolflag;for(i=0;iENODE.length();i+)(if(ENODEi!=)(o
8、utfu(10,);coutENODEi;outfu(10,);cout#endl;intx;for(i=0;iNODE.length();i+)(outfu(4,);coutNODEi;outfu(5,);for(k=0;kENODE.length();k+)(flag=1;for(j=0;jSUM;j+)(if(NODEi=nj.getlf()0)(x=nj.getselect().find(ENODEk);if(x-1)(coutnj.getrg();ycik=nj.getrg();outfu(9-nj.getrlen(),);flag=0;)x=nj.getselect().find(
9、#);if(k=ENODE.length()-1&x-1)coutnj.getrg();ycij=nj.getrg();if(flag&ENODEk!=)outfu(11,);coutendl;分析符号串intpipei(string&chuan,string&fenxi,string(*yc)50,int&b)charch,a;intx,i,j,k;b+;coutendl9)outfu(8,);elseoutfu(9,);coutfenxi;outfu(26-chuan.length()-fenxi.length(),);coutchuan;outfu(10,);a=chuan0;ch=fe
10、nxifenxi.length()-1;x=ENODE.find(ch);if(x-1)if(ch=a)fenxi.erase(fenxi.length()-1,1);chuan.erase(0,1);couta匹配;if(pipei(chuan,fenxi,yc,b)return1;elsereturn0;)elsereturn0;)else(if(ch=#)(if(ch=a)(cout分析成功endl;return1;)elsereturn0;)elseif(ch=)(fenxi.erase(fenxi.length()-1,1);if(pipei(chuan,fenxi,yc,b)ret
11、urn1;elsereturn0;)else(i=NODE.find(ch);if(a=#)(x=ENODE.find();if(x-1)j=ENODE.length()-1;elsej=ENODE.length();)elsej=ENODE.find(a);if(ycij.length()(coutNODEi-1;k-)if(yci皿k!=)fenxi+=ycijk;if(pipei(chuan,fenxi,yc,b)return1;elsereturn0;elsereturn0;voidmain()edge*n;stringstr,(*yc)50;inti,j,k;boolflag=0;c
12、out请输入上下文无关文法的总规则数:SUM;cout请输入具体规则(格式:左部右部,为空):endl;n=newedgeSUM;for(i=0;iSUM;i+)for(j=0;jNODE.length()&ENODE.find(strj)ENODE.length()ENODE+=strj;计算first集合for(i=0;iSUM;i+)first(ni,n,i);outfu(10,*);coutendl;for(i=0;iSUM;i+)if(ni.getfirst().find()ni.getfirst().length()if(NODE.find(ni.getro()NODE.lengt
13、h()for(k=1;kni.getrlen();k+)if(NODE.find(ni.getrg()k)NODE.length()(for(j=0;jnj.getfirst().length()(ni.delfirst();break;计算follow集合for(k=0;kSUM;k+)(for(i=0;iSUM;i+)(if(ni.getlf()=n0.getlf()ni.newfollow(#);follow(ni,n,i);for(i=0;iSUM;i+)(for(j=0;jSUM;j+)if(nj.getrg().find(ni.getlf()=nj.getrlen()-1)ni.n
14、ewfollow(nj.getfollow();计算select集合for(i=0;iSUM;i+)(select(ni,n);for(i=0;iNODE.length();i+)(str.erase();for(j=0;jSUM;j+)if(nj.getlf()0=NODEi)(if(!str.length()str=nj.getselect();else(for(k=0;knj.getselect().length();k+)if(str.find(nj.getselect()k)str.length()(flag=1;break;输出coutendl非终Z符;outfu(SUM,);co
15、utFirst;outfu(SUM,);coutFollowendl;outfu(5+SUM,-*-);coutendl;for(i=0;iNODE.length();i+)(for(j=0;jSUM;j+)if(NODEi=nj.getlf()0)(outfu(3,);coutNODEi;outfu(SUM+4,);out(nj.getfirst();outfu(SUM+4-2*nj.getfirst().length(),);out(nj.getfollow();coutendl;break;outfu(5+SUM,-*-);coutendl判定结论:;if(flag)(cout该文法不是LL(1)文法!endl;return;else(cout”该文法是LL文法!endl;)输出预测分析表coutendl预测分析表如下:endl;yc=newstringNODE.Iength()50;outgraph(n,yc);stringchuan,fenxi,fchuan;coutendle-*fsF-TG-TG-A-(?-FG-F-e-e-i请输入符号串圜分析驾森剩余输入串1#E2itCT3ttGGF4tGSiStGCitG7itGT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TR 41019:2024 EN Facility managements role in sustainability,resilience and adaptability
- 2025年度校园基础设施装修改造工程合同
- 2025年度房产居间合同:旅游地产项目开发合作协议
- 2025年度标前协议模板:XX基础设施建设合作前期协议
- 2025年度酒店客房预订客户投诉处理合同
- 2025年度博物馆安防监控设备采购与安装合同
- 学期班级教学活动工作任务计划
- 学期阅读推广活动计划
- 社区文艺活动计划
- 生物教育在新时代的挑战与机遇计划
- 2024年银行考试-农村信用社考试近5年真题附答案
- 健康教育学全套课件完整版
- 人教版小学数学四年级下册第一单元测试卷附答案(共9套)
- 2024年辽宁省中考语文真题含解析
- 二年级上册100以内加减法竖式计算题200道及答案
- 质量管理体系相关标准知识讲解(一)-质量管理-组织的质量-实现持续成功指南-答案
- 5.5.1三角恒等变换(第一课时)课件高一上学期数学人教A版
- 中国智慧物流发展报告
- 导演聘用合同正式(2024版)
- 焊接加工成本算表
- DL∕T 712-2010 发电厂凝汽器及辅机冷却器管选材导则
评论
0/150
提交评论