预测分析实验报告

预测分析实验报告

ID:20738797

大小:210.44 KB

页数:8页

时间:2018-10-15

预测分析实验报告_第1页
预测分析实验报告_第2页
预测分析实验报告_第3页
预测分析实验报告_第4页
预测分析实验报告_第5页
资源描述:

《预测分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、北师范大学计算机科学与工程学院学生实验报告学号专业计算机科学与技术班级姓名课程名称计算机编译原理课程类型必修课实验名称实验四应用预测分析技术识别句子实验目的:1.根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析2.构造预测分析表,并利用分析表和一个栈來实现对上述程序没计语言的分析程序。实验要求:输入:任意的LL(1)文法及其待识别的符号串。输出:预测分析表及识别结论即输入符号串是否所给文法的句子、相应的推导。实验过程:LL(1)分析法属于确定的自顶向下分析方法。LL(1)的含义是:第一个L表明自顶向下分析是从左向右扫描输入串,第2个L表明分析过程中将使用最左推导,1表

2、明只需向右看一个符号便可决定如何推导,即选择哪个产生式(规则)进行推导。LL(1)文法的判别需要依次计算FIRST集、FOLLOW集和SELLECT集,然后判断是否为LL(1)文法,最后再进行句子分析。功能模块分解图输入要分析的字符串夠断字符串是杏正确XY▼出错主程序流程图实验内容:测试实例:输入文法G::=NULLF::=iE::=TGT::=FSG::=+TGS::=*FSS::=NULLF::=(E)源程序代码#include#include#includecharA[20];/*分析栈*/charB[20];/*剩余串*/比

3、3!^1[20]={7,,+,,’*,,’(?),,’#,};/*终结符*/charv2[20]={’E,’G•,’T?S?F’};/*非终结符*/intj=0,b=0,top=0,l;/*L为输入串长度*/typedefstructtype/*产生式类型定义*/{charorigin;/*大写字符*/chararray[5];/*产生式右边字符*/intlength;/*字符个数*/}type;typee,t,g,gl,s,sl,f,fl;/*结构体变量*/typeC[10][10];/*预测分析表*/voidprint()/*输出分析栈*/{inta;/*指针*/for(a=0;a<=

4、top+l;a++)printf(n%c’’,A[a]);printf(nttu);}/*print*/voidprint1()/*输出剩余串*/{intj;fOr(j=0;j

5、j]);printf("ttt");}/*printl*/intmain(){intm,n,k=0,flag=0,finish=0;charch,x;typecha;/*用来接受C[m][n]*//*把文法产生式赋值结构体*/e.origin=’E’;strcpy(e.array,’’TG”)

6、;e.length=2;t.origin='T';strcpy(t.array,*'FS");t.length=2;g.origin=’G’;strcpy(g.array,"+TG");g.length=3;gl.origin=’G’;gl.array

7、O

8、-A,;gl.length=l;s.origin-S1;strcpy(s.array,’’*FSn);s.length=3;si.origin-S';si.array[0]='A,;sl.length=l;f.origin=,F,;strcpy(f.array,"(E)H);f.length=3;fl.origin='F';fl.arr

9、ay[0]=T;fljength=l;for(m=0;m<=4;m++)/*初始化分析表*/for(n=0;n<=5;n++)C[m][n].origin=’N’;/*全部赋为空*//*填充分析表*/C[0][0]=e;C[0][3]=e;C

10、l

11、

12、l

13、=g;C[lI

14、4

15、=gl;C[l

16、[5]=gl;C[2][0]=t;C[2][3]=t;C[3][l]=sl;C[3][2]=s;C[3][4]=C[3][5]=sl;C[4][0]=fl;C[4][3]=f;printff提示:木程序只能对由?,

17、+7*7(丁构成的以’#’结束的字符串进行分析,");printf("请输入要分析的

18、字符串?’);do/*读入分析串*/{scanf("%c”,&ch);if((ch!=Y)&&(ch!=’+,)&&(ch!=’*’)&&(ch!=’(’)&&(ch!=,)’)&&(ch!=,#,)){printff’输入串中有非法字符”);exit(l);}B[j]=ch;j++;}while(ch!-#');I=j;/*分析串长度*/ch=B[O];/*当前分析字符*/AltopKAAb+topKE;/*'#•

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

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

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