LR0分析器实验报告.docx

上传人:Che****ry 文档编号:4550765 上传时间:2021-09-29 格式:DOCX 页数:10 大小:223.89KB
返回 下载 相关 举报
LR0分析器实验报告.docx_第1页
第1页 / 共10页
LR0分析器实验报告.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《LR0分析器实验报告.docx》由会员分享,可在线阅读,更多相关《LR0分析器实验报告.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品word 可编辑资料 - - - - - - - - - - - - -编译原理课程设计性试验报告课程题目:LR(0)分析法姓名:钟继文专业班级 :运算机科学与技术( 1)班指导老师:孙长圣老师学号:110920210019报告日期:2021 年 6 月 7 日第 1 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -编译原理语法分析试验报告一、试验内容利用 C 语言编写一个程序,对字符串进行语法分析,明白把握试验的原理及方法,要求该文法为LR( 0)文法;二、试验目的LR(K) 分析方法是1965 年 Kn

2、uth 提出的,括号中的K 表示向右查看输入串符号的 个数;对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR 分析器进行识别,而且这种方法仍具有分析速度快,能精确、准时地指出出错位置;它的主要缺点是对于一个有用语言文法的分析器的构造工作量相当大,K 愈大构造愈复杂,实现相当困难;LR 分析法是一种自底向上分析方法; 它的分析过程是一种规范归约过程, 规范归约是规范推导的逆过程; 规范推导是最右推导, 规范归约是其逆过程, 就是最左归约; LR 分析法的可归约串是当前句型的句柄,即最左直接短语;对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR 分析器进行识别,而且这种

3、方法仍具有分析速度快,能精确、准时地指出出错位置;本试验通过设计、调试一个简洁的的LR 分析器,实现对词法分析程序所供应的单词序列进行语法检查和结构分析,进一步把握常用的语法分析方法;三、试验功能通过定义的文法G, G 是一个 LR( 0)文法,输入源码,能够基本判别出该源码是否是正确的;假如是正确的就接收,反之,假如是错误的就显示错误;第 2 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -四、 试验步骤1类 ALGOLF的文法- - - ; -begin -;d -s;end -s; - begin 用小写

4、字母表示终结符,大写字母表示非终结符b:begind:ds:se:end P:B:S: H: T:就文法为 :1P-B5H-H;d2P-S6T-se3B-H;T7T-s;T4H-bd8S-bT第 3 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -2拓广后为 G,增加产生式P-p1P-P2 P-B3 P-S4 B-H;T5 H-bd6 H-H;d7 T-se8 T-s;T9 S-bT3. 项目集规范族:P- PP-PP- BP- SP-BP-SB- H;TB-H ;TB-H; TB-H;T H- bdH-b d

5、H-bdH- H;dH-H ;dH-H; dH-H;d T-seT-s eT-seT-s;TT-s;TT-s;TT-s;TS- bTS-bTS-bT第 4 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -4. LR( 0)的分析表( s 表示移进, r表示归约)状态0b S12dACTIONse;#P 1B 2GOTOS 3H 4T1acc2r2r2r2r2r2r23r3r3r3r3r3r34S55S7S86r4r4r4r4r4r47r6r6r6r6r6r68S9S109r7r7r7r7r7r710S81111

6、r8r8r8r8r8r812S14S81313r9r9r9r9r9r914r5r5r5r5r5r5第 5 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -6. 部分代码界面(为了便于客户体验)int menu()int n; printf(=n);printf(-欢迎使用 -n);printf(1.显示文法信息 n);printf(2.符号串判定 n);printf(3.退出n); printf(-n);printf(=n);printf(请挑选你要执行的内容:n); scanf(%d,&n);getchar(

7、); return n;在 main 程序中可以直接调用;void main()int t=1,n; char ch;while(t)n=menu();分析过程的实现void ActionTable(int sta, char symb,int col)/statu用于状态栈, sym用于符号栈if(sta = 1 & col = 5)/sta1 col5中存放 ACC,即表/示所输入的源码是该文法的语法;printf(t接收n);IsAccept = 1;/IsAccept为 void 函数,假如/源码判定胜利,就显示接收,/将 IsAccept赋值为 1,便利退出;第 6 页,共 10 页

8、 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -return;/ActionTable是 void 类型的if(actsta.stcol .= 0)/存放移进操作/假如进行源码判定时,要进行移进操作,就直接将进行相应的栈操作printf(t移进n); sta+sta_Index = actsta.stcol; symbol+mark_Index = symb;exp_top +;else if(actsta.recol .= 0)/存放归约操作printf(t归约n);Reduce(sta, symb, col);/Reduc

9、e为 void 函数,用来对进行归/约的项进行相应操作,使用栈来进行/处理;elseprintf(t错误n);getchar();/从 stdio流中读字符用使用到的头文件#include/标准输入输出函数scnaf,printf#include/关于字符数组的函数定义第 7 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -试验结果 ( 截图)第 8 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -五、实 验 总结通 过 这 次

10、第 9 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -LR(0) 分析器的试验,实现对词法分析程序所供应的单词序列进行语法检查和结构分析, 进一步把握了 LR 语法分析的方法; 对于 LR(0) 方法有了更深刻的明白,不蛋蛋只是纸上谈兵,试验的完成,也就是实践的过程; 虽然在这个实践的过程中遇到了很多的困难,但是在老师和同学的帮忙下,最终仍是将试验初步完成;完成的LR(0)分析 器只能对于一个特定的文法进行判定,完整的是要求能够对于任一一中 LR(0)文法都能够进行判定, 在这方面上仍需要对程序有进一步的明白才能够最终实现,通过后续的努力,终能够将LR( 0)分析器完整实现;第 10 页,共 10 页 - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁