资源描述:
《安工大编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划安工大编译原理实验报告 编译原理实验报告 姓名:叶玉虎 班级:计122班 指导老师:王森玉 实验日期:XX/5/11 实验内容: 1.求出每个非终结符的FIRST集合 2.求出每个产生式右部的FIRST集合 3.求出每个非终结符的Follow集合 实验环境: VisualStudioXX 实验目的: 让同学们掌握FIRST集合和FOLLOW集合的求法 实验代码: #include #include #defineMAX5
2、0 charcss[MAX][MAX];//保存所有的产生式 intcount=0; intcnt=0;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 structL{//保存所有的终结符 charch; intflag;//1:能推出ε,0:不能,初值:-1 intnum; charfirst[MAX]; ints;//first的长度 charfoll
3、ow[MAX]; intl;//follow的长度 }l[MAX]; //对输入的格式进行控制,并校验输入是否符合格式 inthandle(chara[]) { intlen,i=0,j,k; len=strlen(a); while(a[i]!=10) {目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 if(a[i]=='$')return2;if(('
4、'==a[i])
5、
6、(9==a[i])){i++;continue;}if((a[i]>='A')&&(a[i]')){printf("产生式格式错误");return-1;}else{j=i;k=0;while((a[j]!='')&&(a[j]!=9)&&(a[j]!='$')&&(a[j]!=10)){if(a[j]=='
7、'){css[count][k]=' ';count++;if((a[j+1]=='')
8、
9、(a[j]==9)
10、
11、(a[j]=='$')
12、
13、(a[j]==10)){printf("产生式格式错误");return0;}css[c
14、ount][0]=a[i];css[count][1]=a[i+1];css[count][2]=a[i+2];k=3;j++;continue;}css[count][k]=a[j];k++;j++;}css[count][k]=' ';i=j;count++;} } else { printf("产生式格式错误"); return-1; } } return0; } //从键盘获得输入 intinput() { chara[MAX*MAX]; intv; printf("输入产生式,产生式之间以空格回车或Tab键分隔,并以$
15、键结束.");printf("用@表示虚拟符号ε,终结符用大写字母表示,其他字符表示非终结符");目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 while(1) { fgets(a,MAX*MAX,stdin); v=handle(a); if(v==-1) return-1; if(v==2) return0; } } //求出能推出ε的非终
16、结符 voidseekEmpty() { inti,j,k,t; intflag=0,flag2=0; intlen,c; chara[MAX][MAX],ch; for(i=0;iS;D
17、D D->(T)
18、H H->a
19、(S) T->T+S
20、S 源码:#include目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 #include #defineM
21、AX50