欢迎来到天天文库
浏览记录
ID:14102280
大小:114.50 KB
页数:7页
时间:2018-07-26
《实验二 算符优先文法及firstvt集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二算符优先文法及FIRSTVT集一.实验目的:掌握算符优先文法FIRSTVT集的求法二.实验要求:a)文法可以在程序中指定,也可以在程序运行时从键盘输入;b)digit表示终结符;c)在屏幕上输出最终结果;三.实验题目:求以下文法所有非终结符的FIRSTVT集L→EE→E+TE→TT→T*FT→FF→(E)F→digit四.程序代码:#include#include#includeusingnamespacestd;/*---------------------By舒婷;^_^好坑爹啊,不解释
2、好吗?---------------------*/structword{charname[100];intid;};charstr[100][100];intnum[100][100];intl1,l2,l3;//l1语句个数,l2非终结符个数,l3终结符个数.vectorQ[26];//26个大写vectorLL2,LL3;intvis[1000];voidgeshu()//l2,l3个数;{inti,j,h;chars[100],k;for(i=0;i3、][0]=0;for(j=0;j4、f(s[k]>='A'&&s[k]<='Z'){s[++k]=0;intn;boolf=true;for(h=0;h='a'&&s[k]<='z'){while(j+1='a5、'&&str[i][j+1]<='z')s[++k]=str[i][++j];s[++k]=0;//cout<6、rue;intn;for(h=0;h7、;j<=num[i][0];j++){if(num[i][j]!=m){if(num[i][j]>=0){wordt;t.name[0]=0;t.id=LL2[num[i][j]].name[0]-65;Q[pos].push_back(t);}else{wordt;intmm=-1*num[i][j]-1;t.id=LL3[mm].id;strcpy(t.name,LL3[mm].name);Q[pos].push_back(t);}break;}}}}voidans()//转存{inti,j,h;for(i=0;i8、intm=LL2[i].name[0]-65;for(j=0;j
3、][0]=0;for(j=0;j4、f(s[k]>='A'&&s[k]<='Z'){s[++k]=0;intn;boolf=true;for(h=0;h='a'&&s[k]<='z'){while(j+1='a5、'&&str[i][j+1]<='z')s[++k]=str[i][++j];s[++k]=0;//cout<6、rue;intn;for(h=0;h7、;j<=num[i][0];j++){if(num[i][j]!=m){if(num[i][j]>=0){wordt;t.name[0]=0;t.id=LL2[num[i][j]].name[0]-65;Q[pos].push_back(t);}else{wordt;intmm=-1*num[i][j]-1;t.id=LL3[mm].id;strcpy(t.name,LL3[mm].name);Q[pos].push_back(t);}break;}}}}voidans()//转存{inti,j,h;for(i=0;i8、intm=LL2[i].name[0]-65;for(j=0;j
4、f(s[k]>='A'&&s[k]<='Z'){s[++k]=0;intn;boolf=true;for(h=0;h='a'&&s[k]<='z'){while(j+1='a
5、'&&str[i][j+1]<='z')s[++k]=str[i][++j];s[++k]=0;//cout<
6、rue;intn;for(h=0;h7、;j<=num[i][0];j++){if(num[i][j]!=m){if(num[i][j]>=0){wordt;t.name[0]=0;t.id=LL2[num[i][j]].name[0]-65;Q[pos].push_back(t);}else{wordt;intmm=-1*num[i][j]-1;t.id=LL3[mm].id;strcpy(t.name,LL3[mm].name);Q[pos].push_back(t);}break;}}}}voidans()//转存{inti,j,h;for(i=0;i8、intm=LL2[i].name[0]-65;for(j=0;j
7、;j<=num[i][0];j++){if(num[i][j]!=m){if(num[i][j]>=0){wordt;t.name[0]=0;t.id=LL2[num[i][j]].name[0]-65;Q[pos].push_back(t);}else{wordt;intmm=-1*num[i][j]-1;t.id=LL3[mm].id;strcpy(t.name,LL3[mm].name);Q[pos].push_back(t);}break;}}}}voidans()//转存{inti,j,h;for(i=0;i8、intm=LL2[i].name[0]-65;for(j=0;j
8、intm=LL2[i].name[0]-65;for(j=0;j
此文档下载收益归作者所有