首页 北邮编译原理LL(1)语法分析程序

北邮编译原理LL(1)语法分析程序

举报
开通vip

北邮编译原理LL(1)语法分析程序Fourshortwordssumupwhathasliftedmostsuccessfulindividualsabovethecrowd:alittlebitmore.------------------------------------------author------------------------------------------date北邮编译原理LL(1)语法分析程序北邮编译原理LL(1)语法分析程序北邮编译原理LL(1)语法分析程序-----------------------------...

北邮编译原理LL(1)语法分析程序
Fourshortwordssumupwhathasliftedmostsuccessfulindividualsabovethecrowd:alittlebitmore.------------------------------------------author------------------------------------------date北邮编译原理LL(1)语法分析程序北邮编译原理LL(1)语法分析程序北邮编译原理LL(1)语法分析程序----------------------------------------------------------------------------------------------------北邮编译原理LL(1)语法分析程序--------------------------------------------------LL(1)语法分析程序2010211306班赵雪莹(10211310)语法分析程序:该语法分析程序实现对算术 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式的语法分析,并且在对输入表达式进行分析的过程中,输出所采用的产生式。该程序使用的是LL(1)语法分析程序,为给定文法构造预测分析表,并通过预测分析表对输入的表达式进行预测分析,并将栈顶状态和预测分析过程详细输出,如果匹配成功则接受,如果匹配不成功则返回错误信息。给定文法的产生式:E->E+T|E-T|TT->T*F|T/F|FF->id|(E)|num源代码:#include#include#include#include#includeusingnamespacestd;structNode1{charvn;charvt;chars[12];}MAP[22];//存储分析预测表每个位置对应的终结符,非终结符,产生式intk;charG[12][12]={"E->TR","R->+TR","R->-TR","R->e","T->FW","W->*FW","W->/FW","W->e","F->(E)","F->i","F->n"};//存储文法中的产生式,用R代表E',W代表T',e代表空charVN[6]={'E','R','T','W','F'};//存储非终结符charVT[9]={'i','n','+','-','*','/','(',')','#'};//存储终结符charFOLLOW[12][12]={"(,i,n","+","-","),#","(,i,n","*","/","+,-,),#","(","i","n"};//存储文法中每个产生式对应的FOLLOW集合charRight[12][8]={"->TR","->+TR","->-TR","->e","->FW","->*FW","->/FW","->e","->(E)","->i","->n"};stackstak,stak1,stak2;boolcompare(char*a,char*b){inti,la=strlen(a),j,lb=strlen(b);for(i=0;i='a'))||((c<='Z')&&(c>='A')))word[x]='i';elseif(c>='0'&&c<='9')word[x]='n';elseword[x]=c;}while(!stak.empty())//判断栈中是否为空,若不空就将栈顶元素与分析表匹配进行相应操作stak.pop();stak.push('#');//栈底标志stak.push('E');//起始符号先入栈printf("步骤栈顶元素输入串推到所用产生式或匹配\n");p=stak.top();while(p!='#')//查预测分析表将栈顶元素进行匹配,若栈顶元素与输入串匹配成功则向前匹配,否则生成式反序入栈{printf("%7d",i++);p=stak.top();//从栈中弹出一个栈顶符号,由p记录并输出stak.pop();printf("%6c",p);for(j=k,m=0;j1;j--)stak.push(action[j]);}}if(strcmp(output,"#")!=0)//匹配不成功return"ERROR";}intmain(){freopen("in.txt","r",stdin);charsource[100];inti,j,flag,l,m;printf("\n*****R代表E',W代表T',e代表空*****\n\n");printf("算术表达式对应的文法产生式如下:\n");for(i=0;i<8;i++)printf("%s\n",G[i]);printf("________________________________________________________________________________\n");printf("\n该文法的FOLLOW集如下:\n");//手动生成FOLLOW集合for(i=0;i<8;i++){printf("FOLLOW(%s)={%s}\n",G[i],FOLLOW[i]);}printf("________________________________________________________________________________\n");for(i=0,k=0;i<11;i++)//通过FOLLOW集合生成预测分析表{l=strlen(FOLLOW[i]);for(j=0;j>source)//输入源文件串进行预测分析{printf("\n分析结果:%s\n\n",Analyse(source));}while(1);return0;}将其改写LL(1)文法:手动生成的FOLLOW集合为:生成的预测分析表为:输入表达式:(通过文件输入)对表达式((a+b)*3/5)#首先转换为token序列,以i代表标识符,以n代表常量,然后进行预测分析:如果输入的是错误的表达式(少了一个括号),则:
本文档为【北邮编译原理LL(1)语法分析程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥15.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
清风浮云123
暂无简介~
格式:doc
大小:267KB
软件:Word
页数:26
分类:
上传时间:2022-07-10
浏览量:6