【精品】LR(1)分析法

【精品】LR(1)分析法

ID:44588173

大小:323.44 KB

页数:16页

时间:2019-10-23

【精品】LR(1)分析法_第1页
【精品】LR(1)分析法_第2页
【精品】LR(1)分析法_第3页
【精品】LR(1)分析法_第4页
【精品】LR(1)分析法_第5页
资源描述:

《【精品】LR(1)分析法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、姪台2彖攵经豢曉WENJINGCOLLEGE.YANTAIUNIVERSITY课程:编译原理实验报告系一专业一班级—姓名—学号—指导教师学年学期实验2.3LR(1)分析法1.实验目的1•构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子.2.实验平台Windows+VC+Win32Console范例程序:“4-LRl.c”3.实验过程和指导1・调试范例程序范例程序H前述不能对所有输入串进行匸确的分析.输出格式如下:步骤状态栈符号栈输入串ActionGoto(1)请输出完整的分析过程。即详细输出每一步骤状态栈和符号栈的变化情况.(2)

2、请输出最终的分析结果,即输入串“合法”或“非法”.2.对一个新的文法实现LR(1)分析。4.程序代码第一种文法#include#includechar*action[10][3]={〃S3#",〃S4#〃,NULL,NULL,NULL,'2cc〃,〃S6#〃,〃S7#〃,NULL,〃S3#〃,〃S4#〃,NULL,S3#〃,〃r3#〃,NULL,NULL,NULL,〃rl#〃,〃S6#〃,〃S7#〃,NULL,NULL,NULL,〃r3#〃,AACTTON表*/〃r2#〃,〃r2#〃,NULL,NULL,NULL,z/r2#z

3、,};intgotol[10][2]={1,2,/*QOTO表*/0,0,o,5,0,&0,0,0,0,0,9,0,0,0,0,0,0};charvt[3]=『a'Jb‘J#'};charvn[2]二{'S','B'};/*存放非终结符*//*存放终结彳f*/char*LR[4]={〃E-〉S#〃,〃B-冶B#〃,〃B->b#〃};/*存放产生式*/inta[10];charb[10],c[10],cl;inttopi,top2,top3,top,m,n;voidmain(){intg,h,i,j,k,1,p,y,z,count;charx,copy[10],co

4、pyl[10];top1=0;top2=0;top3=0;top=0;a[0]=0;y=a[0];b[0]=,#';count=0;z二0;printf("请输入表达式");do{scanf("%c",&cl);c[top3]=cl;top3=top3+l;}while(cl!=,#');printfC步骤t状态栈tt符号栈tt输入串ttACTI0NtG0T0〃);do{y=z;m二0;n=0;g=top;j=0;k=0;x=c[top];count++;printf("%dt",count);while(ni<=topl){/*y,z指

5、向状态栈栈顶*//*输出状态栈*/printf(〃tt");while(n<=top2){/*输出符号栈*/printf("%c",b[n]);n二n+1;}printf(z/tt,z);while(g<=top3){printf("%c",c[g]);萨g+1;}printf(z/tt,z);while(x!=vt[j]&&j<=2)j++;if(j=2&&x!二vt[j]){printf(z,error/,);return;}if(action[y][j]==NULL){printf("eiror'rT);return;}elsestrcpy(

6、copy,action[y][j]);if(copy[0]='S'){沪copy[1]-'O';topi二topl+1;top2=top2+l;a[topl]=z;b[top2]=x;top=top+l;i=0;while(copy[i]!='#'){printf("%c",copy[i]);i卄;}printf(,zz/);}if(copy[0]==,r){i=0;while(copy[i]!二'#'){printfcopy[i]);i卄;}h二copy[l]-'O';strcpy(copyl,LR[h]);wh订e(copy1[0]!=vn[k])k++;

7、l=strlen(LR[h])-4:/*输出输入串*//*处理移进*//*处理归约*/top1二topIT+1;top2=top2~l+l;y二a[toplT];p=gotol[y][k];a[topl]=p;b[top2]=copyl[0];z=p;printf(,zt,z);printf(/z%d/z,p);}}while(action[y][j]!二〃acc");printf("acc");getchar();测试一(1)测试bb#•C:UsersJohnDesktopSB8文件夹Debug4-LRl.exe,

8、请输入表达式bb#齿骤状

9、态栈符号栈

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

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

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