编译原理实验报告材料FIRST集和FOLLOW集(共10页).doc
《编译原理实验报告材料FIRST集和FOLLOW集(共10页).doc》由会员分享,可在线阅读,更多相关《编译原理实验报告材料FIRST集和FOLLOW集(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上编译原理实验报告实验名称 计算first集合和follow集合 实验时间 院系 计算机科学与技术 班级 软件工程1班 学号 姓名 1. 实验目的输入:任意的上下文无关文法。输出:所输入的上下文无关文法一切非终结符的first集合和follow集合。2. 实验原理设文法GS(VN,VT,P,S),则首字符集为: FIRST()a | a,aVT,,V *。若,FIRST()。由定义可以看出,FIRST()是指符号串能够推导出的所有符号串中处于串首的终结符号组成的集合。所以FIRST集也称为首符号集。设x1x2xn,FIRST()可按下列方法求得:令FIRST(),i1;
2、(1) 若xiVT,则xiFIRST();(2) 若xiVN; 若FIRST(xi),则FIRST(xi)FIRST(); 若FIRST(xi),则FIRST(xi)FIRST();(3) ii+1,重复(1)、(2),直到xiVT,(i2,3,n)或xiVN且若FIRST(xi)或in为止。当一个文法中存在产生式时,例如,存在A,只有知道哪些符号可以合法地出现在非终结符A之后,才能知道是否选择A产生式。这些合法地出现在非终结符A之后的符号组成的集合被称为FOLLOW集合。下面我们给出文法的FOLLOW集的定义。设文法GS(VN,VT,P,S),则 FOLLOW(A)a | S Aa ,aVT
3、。若SA,#FOLLOW(A)。由定义可以看出,FOLLOW(A)是指在文法GS的所有句型中,紧跟在非终结符A后的终结符号的集合。FOLLOW集可按下列方法求得:(1) 对于文法GS的开始符号S,有#FOLLOW(S);(2) 若文法GS中有形如BxAy的规则,其中x,yV *,则FIRST(y)FOLLOW(A);(3) 若文法GS中有形如BxA的规则,或形如BxAy的规则且FIRST(y),其中x,yV *,则FOLLOW(B)FOLLOW(A);3.实验内容计算first集合和follow集合4.实验心得通过上机实验我对文法符号的FIRST集和FOLLOW集有了更深刻的理解,已经熟练的掌
4、握了求解的思想和方法,同时也锻炼了自己的动手解决问题的能力,对编程能力也有所提高。5.实验代码与结果#include#include#includeusing namespace std;#define MAXS 50int NONEMAXS=0;string strings;/产生式string Vn;/非终结符string Vt;/终结符string firstMAXS;/ 用于存放每个终结符的first集string FirstMAXS;/ 用于存放每个非终结符的first集string FollowMAXS; / 用于存放每个非终结符的follow集int N;/产生式个数struct
5、 STR string left; string right; ; /求VN和VTvoid VNVT(STR *p) int i,j; for(i=0;iN;i+) for(j=0;j=A&pi.leftj100) Vn+=pi.leftj; else if(Vt.find(pi.leftj)100) Vt +=pi.leftj; for(j=0;j=A&pi.rightj100) Vt +=pi.rightj; else if(Vn.find(pi.rightj)100) Vn+=pi.rightj; void getlr(STR *p,int i) int j; for(j=0;j) pi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 报告 材料 FIRST FOLLOW 10
限制150内