




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告实验名称 计算first集合和follow集合 实验时间 院系 计算机科学与技术 班级 软件工程1班 学号 姓名 1. 实验目的输入:任意的上下文无关文法。输出:所输入的上下文无关文法一切非终结符的first集合和follow集合。2. 实验原理设文法GS(VN,VT,P,S),则首字符集为: FIRST()a | a,aVT,,V *。若,FIRST()。由定义可以看出,FIRST()是指符号串能够推导出的所有符号串中处于串首的终结符号组成的集合。所以FIRST集也称为首符号集。设x1x2xn,FIRST()可按下列方法求得:令FIRST(),i1;(1) 若xiVT,则xiFIRST();(2) 若xiVN; 若FIRST(xi),则FIRST(xi)FIRST(); 若FIRST(xi),则FIRST(xi)FIRST();(3) ii+1,重复(1)、(2),直到xiVT,(i2,3,n)或xiVN且若FIRST(xi)或in为止。当一个文法中存在产生式时,例如,存在A,只有知道哪些符号可以合法地出现在非终结符A之后,才能知道是否选择A产生式。这些合法地出现在非终结符A之后的符号组成的集合被称为FOLLOW集合。下面我们给出文法的FOLLOW集的定义。设文法GS(VN,VT,P,S),则 FOLLOW(A)a | S Aa ,aVT。若SA,#FOLLOW(A)。由定义可以看出,FOLLOW(A)是指在文法GS的所有句型中,紧跟在非终结符A后的终结符号的集合。FOLLOW集可按下列方法求得:(1) 对于文法GS的开始符号S,有#FOLLOW(S);(2) 若文法GS中有形如BxAy的规则,其中x,yV *,则FIRST(y)FOLLOW(A);(3) 若文法GS中有形如BxA的规则,或形如BxAy的规则且FIRST(y),其中x,yV *,则FOLLOW(B)FOLLOW(A);3.实验内容计算first集合和follow集合4.实验心得通过上机实验我对文法符号的FIRST集和FOLLOW集有了更深刻的理解,已经熟练的掌握了求解的思想和方法,同时也锻炼了自己的动手解决问题的能力,对编程能力也有所提高。5.实验代码与结果#include#include#includeusing namespace std;#define MAXS 50int NONEMAXS=0;string strings;/产生式string Vn;/非终结符string Vt;/终结符string firstMAXS;/ 用于存放每个终结符的first集string FirstMAXS;/ 用于存放每个非终结符的first集string FollowMAXS; / 用于存放每个非终结符的follow集int N;/产生式个数struct STR string left; string right; ; /求VN和VTvoid VNVT(STR *p) int i,j; for(i=0;iN;i+) for(j=0;j=A&pi.leftj100) Vn+=pi.leftj; else if(Vt.find(pi.leftj)100) Vt +=pi.leftj; for(j=0;j=A&pi.rightj100) Vt +=pi.rightj; else if(Vn.find(pi.rightj)100) Vn+=pi.rightj; void getlr(STR *p,int i) int j; for(j=0;j) pi.left=strings.substr(0,j); pi.right=strings.substr(j+2,strings.length()-j); /对每个文法符号求first集string Letter_First(STR *p,char ch)int t;if(!(Vt.find(ch)100)firstVt.find(ch)=ch;return firstVt.find(ch)-1;if(!(Vn.find(ch)100)for(int i=0;i100) if(FirstVn.find(ch).find(pi.right0)100) FirstVn.find(ch)+=pi.right0; if(pi.right0=*) if(FirstVn.find(ch).find(*)100) FirstVn.find(ch)+=*; if(!(Vn.find(pi.right0)100) if(pi.right.length()=1) string ff; ff=Letter_First(p,pi.right0); for(int i_i=0;i_i100) FirstVn.find(ch)+=ffi_i; else for(int j=0;j100)&(j+1)pi.right.length() sort(TT.begin(),TT.end(); string tt; for(int t=1;tTT.length();t+) tt+=TTt; TT=tt; tt=; for(t=0;t100) FirstVn.find(ch)+=TTt; else for(t=0;t100) FirstVn.find(ch)+=TTt; break; return FirstVn.find(ch);/ 求每个非终结符的Follow集string Letter_Follow(STR *p,char ch)int t,k;NONEVn.find(ch)+;if(NONEVn.find(ch)=2)NONEVn.find(ch)=0;return FollowVn.find(ch);for(int i=0;iN;i+)for(int j=0;jpi.right.length();j+)if(pi.rightj=ch)if(j+1=pi.right.length()string gg;gg=Letter_Follow(p,pi.left0);NONEVn.find(pi.left0)=0;for(int k=0;k100)FollowVn.find(ch)+=ggk;else string FF; for(int jj=j+1;jj100)&(jj+1)pi.right.length() sort(TT.begin(),TT.end(); string tt; for(int t=1;tTT.length();t+) tt+=TTt; TT=tt; tt=; for(t=0;t100&TTt!=*) FF+=TTt; else for(t=0;t100) FF+=TTt; break; if(FF.find(*)100) for(k=0;k100) FollowVn.find(ch)+=FFk; else for(k=0;k100)&FFk!=*) FollowVn.find(ch)+=FFk; string dd; dd=Letter_Follow(p,pi.left0); NONEVn.find(pi.left0)=0; for(k=0;k100) FollowVn.find(ch)+=ddk; return FollowVn.find(ch);void result()coutn该文法不是LL(1)型文法endl;/主函数int main()int i,j,k; coutN;coutn请输入各产生式(*代表空):endl; STR *p=new STRMAXS; for(i=0;istrings; getlr(p,i); VNVT(p);coutendl;coutn=endl;cout非终结符tFIRSTttFOLLOWendl;for(i=0;iVn.length();i+)cout Vnitt;string pp;pp=Letter_First(p,Vni);for(j=0;j+1pp.length();j+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年股份质押借款经营活动合同范本
- 2025年建筑工程总包合同关键条款综述
- 2025关于企业用工合同模板
- 2025年电工中级职业技能考试电气自动化设计试题卷
- 2025年护士执业资格考试内科护理学专项考前冲刺试题型
- 2025年高压电工基础理论模拟试题及答案解析
- 2025年:从合同签订到实际用工的转变
- 2025年营养师基础知识考核试卷:营养配方与食谱编制试题
- 2025年中医内科副高考试题库(附答案)
- 2025年中学教师资格《综合素质》教育教学能力教育政策法规试题卷(含答案)
- 海南区污水处理项目可行性研究报告
- 食品新产品开发设计案例
- 应届生校招:管理培训生笔试试题及答案
- 机械维修工试题及答案
- AI+汽车智能化系列之十一:以地平线为例探究第三方智驾供应商核心竞争力
- 年产30万立方米商砼建设项目环评资料环境影响
- 院感知识培训资料课件
- 销售部门绩效考核管理办法
- 2025年全国大学生海洋知识竞赛试题及答案(共五套)
- 2025心肺复苏课件
- 2025年资源共享授权合同
评论
0/150
提交评论