




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验-lr分析仪计算机科学与技术学院计算机科学与技术专业及1403班学校编号1408030322名字:朱浩日期:2017年5月29日一、实验的目标和任务设计一个非递归预测分析器来分析表达式语言,理解自顶向下语法分析方法的基本思想,掌握设计非递归预测分析器的基本方法。二、实验要求建立以语法为代表的数据结构及其LL(1)分析表,设计并实现相应的预测分析器,并对词法分析后源程序生成的二进制码流进行预测分析。如果输入字符串是语法定义的句子,输出“是”,否则输出“否”。三、语法描述和LL(1)分析表表达式语言的语法规则如下:1.程序表达;2.|表达式。程序3.表达式表达式项4.|项5.项目项目*因素6.|因素7.因子编号或id8.|(表达式)将该语言的语法转换为LL(1)语法,如下所示:1 prgmexpr;prgm 8术语因素术语2 prgm prgm 9术语*因子术语3 prgm 10项4 expr 术语expr 11因子 (expr)5 expr 12因子 num6 expr term expr 13 system _ goalprgm7 expr第一语言语法的第一语言分析表如下:TNNum*();#prgm111prgm 2223expr4455expr 677学期88术语“1091010因素1211系统目标131313为语法中的每个语法符号指定一个常数值。符号编码表如下:语法符号不变价值评论(Num);*#4625130终结符(#是输入结束标志)Exprexpr 学期术语“因素prgmprgm 系统目标258260259262261256257263非终结符四、语法和LL(1)分析表数据结构一代代的语法可以存储在数组Yy_pushtab中。数组的第一个下标是生产编号,第一个生产的序列号是0;每列以相反的顺序存储生成右侧每个符号的常数值,以0结束。表达式语言XL的L1(1)分析表可以存储在数组Yy_d中。第一个下标是非终止值,第二个下标是终止值,数组元素的值为:0(表示接受)、1(表示生产编号)和-1(表示语法错误)。Yy_d数组的具体内容和表示如下:0 1 2 3 4 5 6#;* () Num-10-1-10-1021-1-11-11-14-1-1343-1-1-1-17-17-165-1-16-1-1-1-1-110-111-1998-19-1-112-1-112-112prgm 256prgm 257expr 258术语259expr 260因子261术语262系统目标263数组Yy_pushtab的具体内容和表示如下:V.预测分析仪通用控制程序结构预测分析器的通用控制程序使用上述两个表Yy_pushtab、Yy_d和一个分析堆栈(元素类型为int),其结构如下:初始化;/*将开始符号的常数值按入分析站,并指向第一个输入符号*/同时(分析堆栈不为空)如果(堆栈顶部常数表示终止符)如果(该常数不等于输入符号的常数)报告语法错误;否则从堆栈顶部弹出一个数字;前进读取下一个输入符号;else /*堆栈顶部的常数表示非终止符*/待办事项=栈顶常数当前输入符号的常数;如果(待办事项=-1)报告语法错误;否则从堆栈中弹出堆栈顶部元素;将Yy _ pushtab待办事项中列出的所有常量按入分析堆栈;请执行此程序。将输出堆栈内容的功能添加到程序中,以便与手动模拟分析过程进行比较。六、预测分析控制程序测试用例使用预测分析器和手动模拟来分析语法句子12;用于分析。综合分析过程可由下表表示。堆栈(符号)堆栈(值)输入语符列做什么系统目标prgmprgm ;exprprgm ;expr 术语prgm ;expr term 因子prgm ;expr term Numprgm ;expr term prgm ;expr prgm ;expr 术语prgm ;expr 术语prgm ;expr term 因子prgm ;expr term Numprgm ;expr term prgm ;expr prgm ;prgm 263256257 1 258257 1 260 259257 1 260 262 261257 1 260 262 6257 1 260 262257 1 260257 1 260 259 2257 1 260 259257 1 260 262 261257 1 260 262 6257 1 260 262257 1 260257 1 260 2622571 2;#1 2;#1 2;#1 2;#1 2;#1 2;#2;#2;#2;#2;#2;#2;#;#;#;#120371195711962思考:请考虑如何设计和实现LL(1)分析表的自动生成程序。七.实验代码根据LALR(1)分析表压缩表示方法,完成了LR分析器的程序设计,增加了输出状态堆栈内容的功能。用上面表达式语法中的一个句子作为输入进行测试。实验源程序:#包括#包括char *action103=S3# , S4# ,空,/*行动桌子*/空,空, acc ,S6# , S7# ,空,S3# , S4# ,空,r3# , r3# ,NULL,空,空, r1# ,S6# , S7# ,空,空,空, r3# ,r2# , r2# ,NULL,空,空, R2 # ;102=1,2,/*QOTO表*/0,0,0,5,0,8,0,0,0,0,0,9,0,0,0,0,0,0 ;char vt3=a,b,# ;/*存储非终结符*/2=南,北;/*商店终端*/char *LR4=E-S# , S-BB# , B-aB# , B-B # ;/*存储生产*/国际10;char b10,c10,C1;int top1,top2,top3,top,m,n;void main()int g,h,I,j,k,l,p,y,z,countchar x,copy10,copy 110;top 1=0;top 2=0;top 3=0;top=0;a0=0;y=a0;b0=#;计数=0;z=0;编译原理课程设计;PRINTF(-王新- n );printf(-20170527- n );PRINTF ( - n )请输入表达式;做scanf(“% c”,C1);c前3名=C1;top 3=top 3 1;同时(c1!=#);printf( step t state stack t t symbol stack t t输入字符串 t t 操作 tGoto n n );做y=z。m=0;n=0;/*y,z指向状态堆栈的顶部*/g=顶部;j=0;k=0;x=ctop;计数;printf(“% d t”,计数);而(m=top1) /*输出状态堆栈*/printf(“% d”,am);m=m1;printf( t t );而(n=top2) /*输出符号堆栈*/printf(%c ,bn);n=n1;printf( t t );而(g=top3) /*输出输入字符串*/printf(“% c”,cg);g=G1;printf( t t );同时(x!;j=2;if(j=2x!()printf( error n );返回;如果(行动yj=空)printf( error n );返回;其他(副本,行动yj);如果(复制0=S)/*处理移到*/z=复制1-0;top 1=top 11;top 2=top 2 1;atop 1=z;b前2名=x;top=top 1;I=0;同时(复制i )!=#)printf(“% c”,复制I);我;printf( n );如果(复制0=r)/*处理减少*/I=0;同时(复制i )!=#)printf(“% c”,复制I);我;h=复制1-0;strcpy(copy1,LRh);而(复制10!=k)k;l=strlen(左h)-4;top 1=top 1-l 1;top 2=top 2-l 1;y=排名前1-1;k;a前1名=p;b排名第2=第1名排名第0;z=p;printf( t );printf(“% d n”,p);而(行动y)j!= ACC );printf( ACC n );getch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焊工安全知识培训课件书
- 2025年事业单位工勤技能-广东-广东铸造工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东汽车驾驶与维修员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽水文勘测工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京兽医防治员五级(初级工)历年参考题库含答案解析
- 烹调基础知识培训总结课件
- 2025年职业技能鉴定-铁路职业技能鉴定-铁路职业技能鉴定(铁路连结员)初级历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-石雕工-石雕工(高级技师)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-灭火救援专业士兵-灭火救援专业士兵(高级)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-劳动关系协调员-劳动关系协调员高级技师(一级)历年参考题库含答案解析(5套)
- (2025年标准)职工转岗协议书
- 2026年色彩流行趋势报告
- 2025年江苏劳动保障协理员招聘考试(劳动保障相关业务知识)历年参考题库含答案详解(5套)
- 电梯转让协议书范本
- 2025年火电电力职业技能鉴定考试-风力发电运行检修员历年参考题库含答案解析(5套典型题)
- 2025湖南省低空经济发展集团有限公司招聘12人(第二次)笔试参考题库附带答案详解(10套)
- 医患沟通技巧试题及答案
- 牛仔裤廓形趋势报告
- 年产2000吨电子级超高纯石英晶体材料制造项目环评报告表
- 2025重庆对外建设集团招聘41人笔试参考题库附带答案详解(10套)
- 2025年秋季开学第一次全体教师大会上校长讲话-:想为、敢为、勤为、善为
评论
0/150
提交评论