1 / 7
文档名称:

编译原理LL1文法实验.docx

格式:docx   大小:86KB   页数:7页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理LL1文法实验.docx

上传人:bb21547 2020/5/9 文件大小:86 KB

下载得到文件列表

编译原理LL1文法实验.docx

文档介绍

文档介绍:实验二:自上而下语法分析实验目的和要求根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。(选做)根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。(必做)本次实验的目的主要是加深对自上而下分析法的理解。:LL(1)分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。对下列文法,对任意输入的符号串进行分析:(1)E->TG(2)G->+TG(3)G->ε(4)T->FS(5)S->*FS(6)S->ε(7)F->(E)(8)F->i输入一以#结束的符号串(包括+—*/()i#):输出结果:包括分析栈、数组中的剩余字符串以及所用的产生式,形如:分析栈剩余输入串所用产生式Ei+i*i#E->TG设计思想及算法::{chars[30];inttop;//栈顶指针}S1;charb[20];charv1[6]={'i','+','*','(',')','#'};//终结符charv2[5]={'E','G','T','S','F'};//非终结符/*用二维数组保存预测分析表,可用符号^来代替ε,注意字符串结束位自动加'\0'*/()/*无返回值*/intiszhongjie(charX)返回数组下标intfeizhongjie(charf)返回数组下标boolchabiao(charX,charsym)bool型返回false和true ()/*输出分析栈*/intiszhongjie(charX)判断X是否为终结符,是返回数组下标intfeizhongjie(charf)判断X是否为非终结符,是返回数组下标boolchabiao(charX,charsym)判断X是否为非终结符,sym是否为终结符,若是查找预测表对应表格是否为空白,是则出错,否则进栈fopen 文件打开函数,//用二维数组保存预测分析表chartable[5][6][4]={{"TG","","","TG","",""},{"","+TG","","","^","^"},{"FS","","","FS","",""},{"","^","*FS","","^","^"},{"i","","","(E)","",""}};//查表函数,在预测分析表中判断X是否为非终结符,sym是否为终结符,若是查找预测表对应表格是否为空白,是则出错,否则进栈 intm=feizhongjie(X); intn=iszhongjie(sym); charstr[10]; strcpy(str,table[m][n]); if(strlen(str)==0) { //cout<<"匹配失败!"<<endl; returnfalse; } else { if(str[0]!='^') { for(inti=strlen(str)-1;i>=0;i--) push(str[i]); } print(); cout<<'\t'<<v2[m]<<"-->"<<str<<endl; returntrue; } }主