语法分析实验语法分析(lr)

语法分析实验语法分析(lr)

ID:21877360

大小:236.22 KB

页数:8页

时间:2018-10-25

语法分析实验语法分析(lr)_第1页
语法分析实验语法分析(lr)_第2页
语法分析实验语法分析(lr)_第3页
语法分析实验语法分析(lr)_第4页
语法分析实验语法分析(lr)_第5页
资源描述:

《语法分析实验语法分析(lr)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告课程名称编译原理实验名称语法分析(LR)班级计科1203学号201207010321姓名马万里指导教师黄全舟实验日期2015.5.21二、实验原理LR分析器结构:三、主要仪器设备Pc机一台(装有VS2012)!1!主要代码及其说明^include^include〈vector〉^include〈iostream〉usingnamespacestd;^defineN10char*Action[][4]={//此处三维也可以{"S3","S4","ERROR","ERROR"},{"ERROR","ERROR"

2、,"ERROR","acc"},{"ERROR","ERROR",〃S5〃,〃R2"},{"ERROR","ERROR","R3〃,"R3〃},{〃ERROR〃,〃ERROR〃,〃R4","R4〃},{"S3","S4","ERROR","ERROR"},{"ERROR","ERROR","ERROR","Rl"}};TntGoTo[][2]={{1,2},{0,0},{0,0},{0,0},{0,0},{6,2},{0,0}};char*GL[]={"L-〉E,1/,"L-〉E"E-〉,,"E-〉b"};intPush(vecto

3、r&State,vector&InChar,inta,charb)State.push_back(a);InChar.push_back(b);returna;}voidPop(vector&State,vector&TnChar,intcout){while(cout){State,popback();TnChar.pop_back();cout——;voidPrinStack(vectorState,vector〈char〉TnChar)//状态栈和栈中符号输出vector

4、nt>::iteratoriters=State.begin();vector〈char〉::iteratoriter_i=InChar.begin0;for(;iter_s!=Statc.end();itcr_s++){cout<<*iter_s;printf(,zt,z);for(;iter_i!=InChar.end();iter_i++){cout<<*iter_i;//输岀分析动作voidprintlnCh(char氺InCh)while(*TnCh!=’’){printf("%c",*inCh);InCh++;}pr

5、intf(”tt”);voidprintAanly(chara,intb)if(a==S,)printf("S%d",b);if(a==’R,)printf("R%d",b);printf(z,tt,z);}voidprintNextState(chara,constcharb)//输出下一状态{if(a==,S,)printf("%d",atoi(&b));}intLcount(char*p)//判断文法右边符号的个数{intm=0;while(*p!=’’){ifOp==,>,)m=l;if(m>0)ra++;P++;

6、}return(m~2);}voidmenu(){printf("步骤1状态t栈中符号1余留符号1分析动作1下一状态");}voidmain(){cout〈〈"请输入符号串("以財示记结束")vector〈int〉State;//状态拽vector〈char〉inChar;//桉中的符号State.pushback(0);TnChar.pushback(’#’);//输入的字符串char*inCh;InCh=(char^)malloc(sizeof(char)^N);gets(InCh);printf(〃*林林林林林

7、林林林林林林林林*符号串%s的LR分析过程本本本本本本本本本本本本本本本本本本本本本本本本本本本InCh);menu();intToS=0,InS=O,count=0;while(strncmp(Action[ToS][inS],〃acc〃,3)){count++;//步骤序号if(!strncmp(Action[ToS][InS],’’ERROR",5)){printf(〃error〃);break;}elseif(!strncmp(Action[ToS][InS],〃S",1)){inttemp;printfC%dt/’,c

8、ount);PrinStack(State,InChar);switch(Action[ToS][InS][1])break;break;break;break;break;{case’1’:temp=Push(Stat

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

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

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