lr0分析器实验报告

lr0分析器实验报告

ID:35201614

大小:312.50 KB

页数:10页

时间:2019-03-21

lr0分析器实验报告_第1页
lr0分析器实验报告_第2页
lr0分析器实验报告_第3页
lr0分析器实验报告_第4页
lr0分析器实验报告_第5页
资源描述:

《lr0分析器实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、《编译原理》课程设计性实验报告课程题目:LR(0)分析法姓名:钟继文专业班级:计算机科学与技术(1)班指导老师:孙长圣老师学号:110920120019报告日期:2015年6月7日编译原理语法分析实验报告一、实验内容利用C语言编写一个程序,对字符串进行语法分析,了解掌握实验的原理及方法,要求该文法为LR(0)文法。二、实验目的LR(K)分析方法是1965年Knuth提出的,括号中的K表示向右查看输入串符号的个数。对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR分析器进行识别,而且这种方法还具有分析速度快,能准

2、确、及时地指出出错位置。它的主要缺点是对于一个实用语言文法的分析器的构造工作量相当大,K愈大构造愈复杂,实现相当困难。LR分析法是一种自底向上分析方法。它的分析过程是一种规范归约过程,规范归约是规范推导的逆过程。规范推导是最右推导,规范归约是其逆过程,则是最左归约。LR分析法的可归约串是当前句型的句柄,即最左直接短语。对于大多数用无二义性上下文无关文法描述的语言都可以用相应的LR分析器进行识别,而且这种方法还具有分析速度快,能准确、及时地指出出错位置。本实验通过设计、调试一个简单的的LR分析器,实现对词法分析程序所提供的单

3、词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。三、实验功能通过定义的文法G,G是一个LR(0)文法,输入源码,能够基本判别出该源码是否是正确的。如果是正确的则接收,反之,如果是错误的则显示错误。实验步骤1.类ALGOLF的文法->->->;->begin->;d->s

4、;end->s;->begin用小写字母表示终结符,大写字母表示非终结符b:begind:ds:se:endP:B:S:H:T:则文法为:1P->B5H->H;d2P->S6T->se3B->H;T7T->s;T4H->bd8S->bT1.拓广后为G’,增加产生式P’->p1P’->P

5、2P->B3P->S4B->H;T5H->bd6H->H;d7T->se8T->s;T9S->bT3.项目集规范族:P’->·PP’->P·P->·BP->B·P->·SP->S·B->·H;TB->H·;TB->H;·TB->H;T·H->·bdH->b·dH->bd·H->·H;dH->H·;dH->H;·dH->H;d·T->·seT->s·eT->se·T->·s;TT->s·;TT->s;·TT->s;T·S->·bTS->b·TS->bT·4.LR(0)的分析表(s表示移进,r表示归约)状态ACTIONGOTO

6、bdse;#PBSHT0S1212341acc2r2r2r2r2r2r23r3r3r3r3r3r34S55S7S86r4r4r4r4r4r47r6r6r6r6r6r68S9S109r7r7r7r7r7r710S81111r8r8r8r8r8r812S14S81313r9r9r9r9r9r914r5r5r5r5r5r56.部分代码n界面(为了便于客户体验)intmenu(){intn;printf("=======================");printf("-------欢迎使用--------");pri

7、ntf("1.显示文法信息");printf("2.符号串判定");printf("3.退出");printf("-----------------------");printf("=======================");printf("请选择你要执行的内容:");scanf("%d",&n);getchar();returnn;}在main程序中可以直接调用。voidmain(){intt=1,n;charch;while(t){n=menu();}n分析过程的实现voidAction

8、Table(intsta,charsymb,intcol){//statu用于状态栈,sym用于符号栈if(sta==1&&col==5)//sta[1]col[5]中存放ACC,即表//示所输入的源码是该文法的语法。{printf("t接收");IsAccept=1;//IsAccept为voi

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

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

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