欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    LL(1)语法分析实验报告(共7页).doc

    • 资源ID:14101339       资源大小:58KB        全文页数:7页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    LL(1)语法分析实验报告(共7页).doc

    精选优质文档-倾情为你奉上实 验 报 告姓名:孙岩学号:班级:惠普开发142学校:青岛科技大学Mail: 电话:教师:宮生文实验报告:实验名称:LL(1)语法分析实验目的和要求编制一个能识别由词法分析给出的单词符号序列是否是给定文法的正确句子(程序),输出对输入符号串的分析过程。实验内容和步骤:一、实验内容对于这个实验,总共用了三个函数,即主函数、输出分析栈函数、输出剩余串函数。在主函数中,还要构造预测分析表。二、实验步骤1、基于实验的内容,构造程序所需的模块2、根据已建构的模块,写出各个模块的相应程序代码3、在主函数中调用模块来完成所要得到的效果在本程序中,首先使用了结构体类型定义来定义产生式,用字符串数组存放分析栈、剩余串、终结符和非终结符,用二维数组存放预测分析表,利用指针对栈中数据进行读取。在本程序中,总共用了三个函数,即主函数、输出分析栈函数、输出剩余串函数。在主函数中,还要构造预测分析表,对输入的字符串进行分析,调用另外两个函数。实验代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<dos.h>char A20;/*分析栈*/char B20;/*剩余串*/char v120='i','+','*','(',')','#'/*终结符 */char v220='E','G','T','S','F'/*非终结符 */int j=0,b=0,top=0,l;/*L为输入串长度 */typedef struct type/*产生式类型定义 */char origin;/*大写字符 */char array5;/*产生式右边字符 */int length;/*字符个数 */type;type e,t,g,g1,s,s1,f,f1;/*结构体变量 */type C1010;/*预测分析表 */void print()/*输出分析栈 */int a;/*指针*/for(a=0;a<=top+1;a+)printf("%c",Aa);printf("tt");/*print*/void print1()/*输出剩余串*/int j;for(j=0;j<b;j+)/*输出对齐符*/printf(" ");for(j=b;j<=l;j+)printf("%c",Bj);printf("ttt");/*print1*/void main()int m,n,k=0,flag=0,finish=0;char ch,x;type cha;/*用来接受Cmn*/*把文法产生式赋值结构体*/e.origin='E'strcpy(e.array,"TG");e.length=2;t.origin='T'strcpy(t.array,"FS");t.length=2;g.origin='G'strcpy(g.array,"+TG");g.length=3;g1.origin='G'g1.array0=''g1.length=1; s.origin='S'strcpy(s.array,"*FS");s.length=3;s1.origin='S's1.array0=''s1.length=1;f.origin='F'strcpy(f.array,"(E)");f.length=3;f1.origin='F'f1.array0='i'f1.length=1;for(m=0;m<=4;m+)/*初始化分析表*/for(n=0;n<=5;n+)Cmn.origin='N'/*全部赋为空*/ /*填充分析表*/ C00=e;C03=e; C11=g;C14=g1;C15=g1; C20=t;C23=t; C31=s1;C32=s;C34=C35=s1; C40=f1;C43=f; printf("提示:本程序只能对由'i','+','*','(',')'构成的以'#'结束的字符串进行分析,n"); printf("请输入要分析的字符串:"); do/*读入分析串*/ scanf("%c",&ch); if (ch!='i') &&(ch!='+') &&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!='#') printf("输入串中有非法字符n"); exit(1); Bj=ch; j+; while(ch!='#'); l=j;/*分析串长度*/ ch=B0;/*当前分析字符*/ Atop='#' A+top='E'/*'#','E'进栈*/ printf("步骤tt分析栈 tt剩余字符 tt所用产生式 n"); do x=Atop-;/*x为当前栈顶字符*/ printf("%d",k+); printf("tt"); for(j=0;j<=5;j+)/*判断是否为终结符*/ if(x=v1j) flag=1; break; if(flag=1)/*如果是终结符*/ if(x='#') finish=1;/*结束标记*/ printf("acc!n");/*接受 */ getchar(); getchar(); exit(1); /*if*/ if(x=ch) print(); print1(); printf("%c匹配n",ch); ch=B+b;/*下一个输入字符*/ flag=0;/*恢复标记*/ /*if*/ else/*出错处理*/ print(); print1(); printf("%c出错n",ch);/*输出出错终结符*/ exit(1); /*else*/ /*if*/ else/*非终结符处理*/ for(j=0;j<=4;j+)if(x=v2j)m=j;/*行号*/break; for(j=0;j<=5;j+)if(ch=v1j)n=j;/*列号*/break; cha=Cmn; if(cha.origin!='N')/*判断是否为空*/ print();print1();printf("%c-",cha.origin);/*输出产生式*/for(j=0;j<cha.length;j+) printf("%c",cha.arrayj);printf("n");for(j=(cha.length-1);j>=0;j-)/*产生式逆序入栈*/A+top=cha.arrayj;if(Atop='')/*为空则不进栈*/top-;/*if*/else/*出错处理*/print();print1();printf("%c出错n",x);/*输出出错非终结符*/exit(1);/*else*/*else*/ while(finish=0);/*main*/三、实验过程记录:实验截图:当输入内容不匹配或输入内容非法时要退出程序,此时若不关闭已经打开的文件可能导致文件内容受到破坏;解决方法是给error()函数设置一个文件指针变量参数FILE* fp,在退出程序之前通过fp关闭文件四、实验总结:通过本次实验我锻炼了自己的上机操作能力及编程能力,并对理论知识有了进一步的了解。老师提供的LL(1)分析法的流程图给了我很大的帮助,使得本实验基本思路变得很清晰,用较为简单的算法就能实现,程序的难点是产生式结构体的构造、分析表的构造、解决实验中遇到的问题也花费了一部分时间,我增长了处理关于文件错误的能力专心-专注-专业

    注意事项

    本文(LL(1)语法分析实验报告(共7页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开