C语言求文法的First集.doc

C语言求文法的First集.doc

ID:57178868

大小:82.50 KB

页数:9页

时间:2020-08-05

C语言求文法的First集.doc_第1页
C语言求文法的First集.doc_第2页
C语言求文法的First集.doc_第3页
C语言求文法的First集.doc_第4页
C语言求文法的First集.doc_第5页
资源描述:

《C语言求文法的First集.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言求文法的FIRST集//Copyright:ChenZexi,JXNU#include#include#include#defineMAXS50#defineepsilon'*'charnoend[MAXS];//非终极符charEnd[MAXS];//终极符intN;structSTR{inthas_epsion;charleft;charright[MAXS];};structFirst{charletter;chargather[MAXS];};intg

2、etlr(structSTR*p,inti,char*temp){intj;intk=0;intsucc=0;for(j=0;j'){succ=1;if(j==1){p[i].left=temp[0];j=3;p[i].has_epsion=0;while(temp[j]!=''){p[i].right[k]=temp[j];if(temp[j]==epsilon){p[i].has_epsion=1;}k++;j++;}

3、p[i].right[k]='';}}}returnsucc;}intfindchar(char*s,charc){inti;intindex=-1;for(i=0;i

4、N(终极符)和VT(非终极符)voidVNVT(structSTR*p){inti,j,x;for(i=0;i='A'&&p[i].left<='Z')){if(findchar(noend,p[i].left)<0){x=strlen(noend);noend[x]=p[i].left;noend[x+1]='';}}}for(j=0;j='A'&&p[

5、i].right[j]<='Z')){if(findchar(End,p[i].right[j])<0){x=strlen(End);End[x]=p[i].right[j];End[x+1]='';}}else{if(findchar(noend,p[i].right[j])<0){x=strlen(noend);noend[x]=p[i].right[j];noend[x+1]='';}}}}}//非终极符的FIRST集voidFirstgather(structSTR*p,structFirst*f){int

6、i,j,k,l,m;intx,n;intchange=1;inteps;for(i=0;i

7、j].right[0]);//不是非终极符if(n<0){k=0;//直接收取:对形如U->a…的产生式(其中a是终结符),把a收入到First(U)中if(findchar(f[i].gather,p[j].right[k])<0){x=strlen(f[i].gather);f[i].gather[x]=p[j].right[k];f[i].gather[x+1]='';change=1;}}//是非终极符else{//反复传送:对形入U->P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到F

8、irst(U)中for(l=0;l=0&&findchar(f[i].gather,p[j].right[l])<0){x=strlen(f[i].gather);f[i].ga

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

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

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