安徽工业大学编译原理实验报告.docx
《安徽工业大学编译原理实验报告.docx》由会员分享,可在线阅读,更多相关《安徽工业大学编译原理实验报告.docx(24页珍藏版)》请在优知文库上搜索。
1、编译原理试验报告姓名:叶玉虎班级1计122班指导老师,王森玉试验日期,2015/5/11试验内容:1.求出每个非终结符的FIRST集合2,求出每个产生式右部的FIRST集合3.求出每个非终结符的Fo1.1.ow集合试验环境:Visua1.Studio2010试验目的:让同学们驾驭FIRST集合和FO1.1.oW集合的求法试验代码:ftinc1.udeinc1.udeJtdefineMAX50CharCSSMAXMAX;保存全部的产生式intcount=0;intcnt=0:struct1.保存全部的终结符charch:intf1.ag1.:能推出,0:不能,初值:Tintnum:Charfir
2、SIMAX;ints;firsr的长度charfo1.1.owMAX;int】/fo1.1.ow的长度1MX;/对输入的格式进行限制,并校验输入是否符合格式inthandIe(chara)int1.en,i=0,j,k;Ien=Str1.en(八):whi1.e(ai!-10)if-)return2;if(*,=ai)(9=ai)i+;continue;if(a=A)&(a)Printf(“产生式格式错误n);return-1;e1.seJ=i:k=0;whi1.e(aj!-)(aj!=9)&(aj!=S,)&(aj!=10)i-,)csscountk三,0,;count+;if(aj+1.=
3、,)1.1.(aj=9)(aj=S,)1.(aj=10)Printf(产生式格式错误n);return0;csscountOj=ai;csscount1.=ai+1.;csscount2=ai+2;k=3;j+;continue;csscountk=aj:k+;j+;csscountk=,0;count+;e1.sePrintf(产生式格式错误n);return-1:return0:从键盘获得输入intinput()charaMAX*MAX;intv;Printf(输入产生式,产生式之间以空格回车或Tab键分隔,并以$键结束.n);Printf(用表示虚拟符号,终结符用大写字母表示,其他字符表
4、示非终结符n):whi1.e(1.)fgets(a,MAX*MAX,stdin);v=hand1.e(八):if(v=-1.)return-1:if(v=2)return0;求出能推出E的非终结符voidSeekEmptyOinti,j,k,t;intf1.ag=O,f1.ag2-0;int1.enc;charaMAXMAX,ch;for(i=0;icount;i+)strcpy(ai,cssi):/求出含有的非终结符的个数,并把各终结符保存起来for(i=0;icount;i+)for(j=0;jcnt;J+)if(1.j.ch=ai0)1.j.num+:f1.ag=1.;break;e1.
5、sef1.ag=0:if(!cnt)II(!f1.ag)1cnt.ch=ai0;1cnt.f1.ag=-1.;1cnt.num=1.;1cntj.s=0;1cnt.1=0;ent+;f1.ag=1.;continue;c=count;whi1.e(c)for(i=0;ic:i+)假如该终结符推出*从a中删除全部带有该终结符的产生式if(ai=)ch=ai0;for(j=0dcj+)if(ch=aj0)if(j!=c-1.)for(k=j;kc-1.:k+)strcpy(ak,ak+1.);c-;j:e1.sec-:J-;for(j=0;jcnt;j+)if(ch=1.j.ch)1.jfIag=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽 工业大学 编译 原理 实验 报告
![提示](https://www.yzwku.com/images/bang_tan.gif)