编译原理LL1文法实验.docx

编译原理LL1文法实验.docx

ID:55170362

大小:86.30 KB

页数:7页

时间:2020-04-30

编译原理LL1文法实验.docx_第1页
编译原理LL1文法实验.docx_第2页
编译原理LL1文法实验.docx_第3页
编译原理LL1文法实验.docx_第4页
编译原理LL1文法实验.docx_第5页
资源描述:

《编译原理LL1文法实验.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二:自上而下语法分析一、实验目的和要求根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。(选做)根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。(必做)本次实验的目的主要是加深对自上而下分析法的理解。二、实验内容1.功能描述:LL(1)分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。对下列文法,对任意输入的符号串进行分析:(1)E->TG(2)G->+TG(3)G->ε(4)T->FS(5)S->*FS(6)

2、S->ε(7)F->(E)(8)F->i输入一以#结束的符号串(包括+—*/()i#):输出结果:包括分析栈、数组中的剩余字符串以及所用的产生式,形如:分析栈剩余输入串所用产生式Ei+i*i#E->TG设计思想及算法:72.程序结构描述:2.1参数含义structStack{chars[30];inttop;//栈顶指针}S1;charb[20];charv1[6]={'i','+','*','(',')','#'};//终结符charv2[5]={'E','G','T','S','F'};//非终结符/*用二维数组保存预测分

3、析表,可用符号^来代替ε,注意字符串结束位自动加''*/2.2返回值描述voidprint()/*无返回值*/intiszhongjie(charX)返回数组下标intfeizhongjie(charf)返回数组下标7boolchabiao(charX,charsym)bool型返回false和true2.3函数功能voidprint()/*输出分析栈*/intiszhongjie(charX)判断X是否为终结符,是返回数组下标intfeizhongjie(charf)判断X是否为非终结符,是返回数组下标boolchabi

4、ao(charX,charsym)判断X是否为非终结符,sym是否为终结符,若是查找预测表对应表格是否为空白,是则出错,否则进栈fopen 文件打开函数,返回指向文件第一个字符的指针2.4函数之间的调用关系图3.程序源代码//用二维数组保存预测分析表chartable[5][6][4]={{"TG","","","TG","",""},{"","+TG","","","^","^"},7{"FS","","","FS","",""},{"","^","*FS","","^","^"},{"i","","","(E)","","

5、"}};//查表函数,在预测分析表中判断X是否为非终结符,sym是否为终结符,若是查找预测表对应表格是否为空白,是则出错,否则进栈intm=feizhongjie(X);intn=iszhongjie(sym);charstr[10];strcpy(str,table[m][n]);if(strlen(str)==0){//cout<<"匹配失败!"<=0;i--)push(str[i]);}pri

6、nt();cout<<'t'<"<

7、11.txt","r"))==NULL){//读取文件内容,并返回文件指针,该指针指向文件的第一个字符7fprintf(stderr,"读取文件失败!");exit(1);}intialstack();push('#');push('E');sym=fgetc(fp);//把第一个输入符号读进symflag=true;cuo=false;print();cout<

8、f(iszhongjie(X)!=-1){sym=fgetc(fp);}elseif(!chabiao(X,sym)){cuo=true;}}return0;}三、实验过程记录:出错次数3次、出错严重程度不高、解决办法摘要:第一次错误是语法错误,加括号改正第二次读取文件的文件

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

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

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