安工大王森玉编译原理实验报告.doc

安工大王森玉编译原理实验报告.doc

ID:55579093

大小:143.50 KB

页数:19页

时间:2020-05-18

安工大王森玉编译原理实验报告.doc_第1页
安工大王森玉编译原理实验报告.doc_第2页
安工大王森玉编译原理实验报告.doc_第3页
安工大王森玉编译原理实验报告.doc_第4页
安工大王森玉编译原理实验报告.doc_第5页
资源描述:

《安工大王森玉编译原理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验报告老师:王森玉姓名:学号:班级:实验内容:输入一个文法1.求出每个非终结符的FIRST集合2.求出每个产生式右部的FIRST集合3.求出每个非终结符的Follow集合实验环境:VisualC++6.0实验目的:让同学们通过编写代码求出FIRST集合和FOLLOW集合,加深对这两种集合求法的理解。实验内容一:测试文法:S->S;D

2、DD->(T)

3、HH->a

4、(S)T->T+S

5、S源码:#include#include#defineMAX50charcss[MAX][MAX];//保存所有的产生式intco

6、unt=0;intcnt=0;structL{//保存所有的终结符charch;intflag;//1:能推出ε,0:不能,初值:-1intnum;charfirst[MAX];ints;charfollow[MAX];intl;}l[MAX];//对输入的格式进行控制,并校验输入是否符合格式inthandle(chara[]){intlen,i=0,j,k;len=strlen(a);while(a[i]!=10){if(a[i]=='~')return2;if((''==a[i])

7、

8、(9==a[i])){i++;continue;}if((a[i]>

9、='A')&&(a[i]<='Z')){if((a[i+1]!='-')

10、

11、(a[i+2]!='>')){printf("产生式格式错误");return-1;}else{j=i;k=0;while((a[j]!='')&&(a[j]!=9)&&(a[j]!='~')&&(a[j]!=10)){if(a[j]=='

12、'){css[count][k]='';count++;if((a[j+1]=='')

13、

14、(a[j]==9)

15、

16、(a[j]=='~')

17、

18、(a[j]==10)){printf("产生式格式错误");return0;}css[coun

19、t][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键分隔,并以~键结束.");printf("用#表示空符号ε,非终结

20、符用大写字母表示,其他字符表示终结符");while(1){fgets(a,MAX*MAX,stdin);v=handle(a);if(v==-1)return-1;if(v==2)return0;}}//求出能推出ε的非终结符voidseekEmpty(){inti,j,k,t;intflag=0,flag2=0;intlen,c;chara[MAX][MAX],ch;for(i=0;i

21、j=0;j

22、

23、(!flag)){l[cnt].ch=a[i][0];l[cnt].flag=-1;l[cnt].num=1;l[cnt].s=0;l[cnt].l=0;cnt++;flag=1;continue;}}c=count;while(c){for(i=0;i

24、(j=0;j

25、

26、(a[i][j]>'Z')){flag2=1;brea

27、k;}}if(flag2){for(k=0;k

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。