已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理 课程设计性实验报告课程题目: LR(0)分析法姓 名: 钟继文 专业班级: 计算机科学与技术(1)班指导老师: 孙长圣老师学 号: 110920120019报告日期: 2015年6月7日编译原理语法分析实验报告1、 实验内容 利用C语言编写一个程序,对字符串进行语法分析,了解掌握实验的原理及方法,要求该文法为LR(0)文法。2、 实验目的 LR(K)分析方法是1965年Knuth提出的,括号中的K表示向右查看输入串符号的个数。对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR分析器进行识别,而且这种方法还具有分析速度快,能准确、及时地指出出错位置。它的主要缺点是对于一个实用语言文法的分析器的构造工作量相当大,K愈大构造愈复杂,实现相当困难。LR分析法是一种自底向上分析方法。它的分析过程是一种规范归约过程,规范归约是规范推导的逆过程。规范推导是最右推导,规范归约是其逆过程,则是最左归约。 LR分析法的可归约串是当前句型的句柄,即最左直接短语。对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR分析器进行识别,而且这种方法还具有分析速度快,能准确、及时地指出出错位置。本实验通过设计、调试一个简单的的LR分析器,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。3、 实验功能 通过定义的文法G,G是一个LR(0)文法,输入源码,能够基本判别出该源码是否是正确的。如果是正确的则接收,反之,如果是错误的则显示错误。 4、 实验步骤1 类ALGOLF的文法 - - - ; -begin -;d -s;end -s; - begin 用小写字母表示终结符,大写字母表示非终结符b:begin d:d s:s e:endP:B:S:H:T:则文法为:1 P-B 5 H-H;d 2 P-S 6 T-se 3 B-H;T 7 T-s;T 4 H-bd 8 S-bT2 拓广后为G,增加产生式 P-p1 P-P 2 P-B3 P-S4 B-H;T5 H-bd6 H-H;d7 T-se8 T-s;T9 S-bT3.项目集规范族: P-P P-P P-B P-B P-S P-S B-H;T B-H;T B-H;T B-H;T H-bd H-bd H-bd H-H;d H-H;d H-H;d H-H;d T-se T-se T-se T-s;T T-s;T T-s;T T-s;T S-bT S-bT S-bT 4.LR(0)的分析表(s表示移进,r表示归约)状态ACTIONGOTObdse;#PBSHT0S1212341acc2r2r2r2r2r2r23r3r3r3r3r3r34S55S7S86r4r4r4r4r4r47r6r6r6r6r6r68S9S109r7r7r7r7r7r710S81111r8r8r8r8r8r812S14S81313r9r9r9r9r9r914r5r5r5r5r5r56.部分代码n 界面(为了便于客户体验) 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(); return n;在main程序中可以直接调用。void main() int t=1,n;char ch; while(t) n=menu(); n 分析过程的实现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,方便退出。 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); /Reduce为void函数,用来对进行归 /约的项进行相应操作,使用栈来进行 /处理。 else printf(t错误n); getchar(); /从stdio流中读字符用 n 使用到的头文件#include /标准输入输出函数 scnaf,printf#include /关于字符数组的函数定义 n 实验结果(截图)5、 实验总结 通过这次LR(0)分析器的实验,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握了LR语法分析的方法。对于LR(0)方法有了更深刻的了解,不蛋蛋只是纸上谈兵,实验的完成,也就是实践的过程。虽然在这个实践的过程中遇到了许多的困难,但是在老师和同学的帮助下,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗保险的智能化管理与挑战
- 灌肠液体温度调节方法
- 个人课程设计小结
- 孙波课程设计
- 儿科护理管理与实践
- 课程设计族谱
- 阿童木视觉培训课件
- 传染病护理策略与应对措施
- 《泥玩具》标准教案 新人美版四年级上册美术
- 阿波波课件教学课件
- 员工管理规章制度实施细则
- 社会心理学(西安交通大学)知到章节答案智慧树2023年
- 《安井食品价值链成本控制研究案例(论文)9000字》
- 贵州大型图书馆工程监理大纲鲁班奖
- GB/T 33084-2016大型合金结构钢锻件技术条件
- 【公开课课件】大班科学垃圾找家
- 第15课《故乡》说课课件(共19张ppt) 部编版语文九年级上册
- 李嘉诚推举之文盔甲骑士
- 山茶油知识普及课件
- (完整版)新版新概念英语第一册课文PDF
- 《群落生态学》PPT课件(完整版)
评论
0/150
提交评论