欢迎来到天天文库
浏览记录
ID:57310274
大小:58.08 KB
页数:3页
时间:2020-08-11
《编译原理(求First集).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、问题描述题目:First集和Follow集生成算法模拟设计一个由正规文法生成First集和Follow集并进行简化的算法动态模拟。动态模拟算法的基本功能是:ⅰ.输入一个文法G;ⅱ.输出由文法G构造FIRST集的算法;ⅲ.输出First集;ⅳ.输出由文法G构造FOLLOW集的算法;ⅴ.输出FOLLOW集。2、分析、设计、实现通过对产生式的顺序扫描,运用上述规则,把每种规则都转换为相应的算法,经过规则后将产生的First集存下来。流程图3、函数与过程的功能(MFC)CStringCFirstAnd
2、Follow::First(charVn,charPVn){CStringresult,tmpresult;chartmpmid;inttmpflag;if(Vns.Find(Vn,0)==-1&&Vn!=';'&&Vn!='
3、'){result.Insert(result.GetLength(),Vn);returnresult;}for(intix=0;ix4、{tmpflag=ix;break;}}tmpflag+=3;for(intindex=tmpflag;index=0)//Vn{if(tmp==PVn5、6、tmp==Vn){do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='7、'&&tmpmid!=';');}else{CStrin8、gtmpr=First(tmp,PVn);if(tmpr.Find('_',0)==-1)//Vn{tmpflag=tmpresult.Find('_',0);while(tmpflag>=0){tmpresult.Delete(tmpflag,1);tmpflag=tmpresult.Find('_',0);}index--;do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='9、'&&tmpmid!=';');}else//Vn{tmpmid=10、Vpro.GetAt(index);}tmpresult+=tmpr;}}else{if(tmp!='11、'&&tmp!=';'){tmpflag=tmpresult.Find('_',0);while(tmpflag>=0){tmpresult.Delete(tmpflag,1);tmpflag=tmpresult.Find('_',0);}if(tmpresult.Find(tmp,0)==-1){tmpresult.Insert(tmpresult.GetLength(),tmp);}inde12、x--;do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='13、'&&tmpmid!=';');}}if(tmpmid==';'14、15、tmpmid=='16、'){for(intii=0;ii17、(ii));}if(tmpmid==';')break;tmpresult.Empty();}}returnresult;}4、运行结果分析5、总结
4、{tmpflag=ix;break;}}tmpflag+=3;for(intindex=tmpflag;index=0)//Vn{if(tmp==PVn
5、
6、tmp==Vn){do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='
7、'&&tmpmid!=';');}else{CStrin
8、gtmpr=First(tmp,PVn);if(tmpr.Find('_',0)==-1)//Vn{tmpflag=tmpresult.Find('_',0);while(tmpflag>=0){tmpresult.Delete(tmpflag,1);tmpflag=tmpresult.Find('_',0);}index--;do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='
9、'&&tmpmid!=';');}else//Vn{tmpmid=
10、Vpro.GetAt(index);}tmpresult+=tmpr;}}else{if(tmp!='
11、'&&tmp!=';'){tmpflag=tmpresult.Find('_',0);while(tmpflag>=0){tmpresult.Delete(tmpflag,1);tmpflag=tmpresult.Find('_',0);}if(tmpresult.Find(tmp,0)==-1){tmpresult.Insert(tmpresult.GetLength(),tmp);}inde
12、x--;do{index++;tmpmid=Vpro.GetAt(index);}while(tmpmid!='
13、'&&tmpmid!=';');}}if(tmpmid==';'
14、
15、tmpmid=='
16、'){for(intii=0;ii17、(ii));}if(tmpmid==';')break;tmpresult.Empty();}}returnresult;}4、运行结果分析5、总结
17、(ii));}if(tmpmid==';')break;tmpresult.Empty();}}returnresult;}4、运行结果分析5、总结
此文档下载收益归作者所有