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

    聊城大学编译原理实验二语法分析器.doc

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

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

    聊城大学编译原理实验二语法分析器.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流聊城大学编译原理实验二语法分析器LIAOCHENG UNIVERSITY计算机学院实验报告【 2016 2017 学年第2学期】【一、基本信息】【实验课程】编译原理【设课形式】独立 非独立 Ö 【课程学分】4【实验项目】实验二语法分析器的设计【项目类型】基础 综合 Ö 设计 研究创新 其它 【项目学时】4【学生姓名】【学 号】【系别专业】软件开发【实验班组】级 班 组 台【同组学生】 【实验室名】综合实验楼【实验日期】【报告日期】【二、实验教师对报告的最终评价及处理意见】实验成绩: (涂改无效) 指导教师签名: 年 月 日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案.精品文档.【三、实验预习】实验目的和要求:1. 掌握自上而下语法分析的基本思想;2. 掌握利用预测分析法进行语法分析的原理和过程;3. 熟悉文法的机内表示;4. 掌握语法分析器的设计与调试,提高编程能力、动手能力以及独立分析问题、解决问题的能力和综合运用所学知识的能力。实验内容和原理或涉及的知识点(综合性实验):1. 输入任意文法,改写文法使其成为LL(1)文法。 Ø2. 构造文法的预测分析表;3. 设计堆栈和预测分析表的机内表示;4. 设计并书写语法分析程序;5. 调试并运行语法分析程序;6. 实验结果分析l 分析程序中文法存储所采用的数据结构l 分析结果并写出自己的心得体会提示: 对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。 实验条件(实验设备、软件、材料等):1. 装有Codeblocks的电脑一台。2. 实验环境:WINDOWS下,工具为Turbo C2.0或Visual C 6.0。实验考核方式:1. 提交实验报告2. 演示程序和答辩(抽查)实验预习实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格):实验预习成绩(涂改无效)合格不合格【四、实验过程、数据和实验结果记录】实验方法、步骤、操作过程的记录描述或程序代码。实验过程中输入/输出数据、程序运行结果的记录。(可加附页)1. 输入任意文法,改写文法使其成为LL(1)文法。 答: 输入文法GE: E T|EAT T F|TMF F( E ) | i A+| -M* | /(1) 改写文法。对形如:UUx|y的产生式(其中x,y V+ ,y不以U开头),引入一个新的非终结符U后,可以等价地改写成为: UyU Ux U| 显然改写后,U和U都不是左递归的非终结符。因此文法GE按上述方法消去左递归后可等价地写成: ETP PAT P | TFW| W MFW| F( E ) | i M* | /2. 构造文法的预测分析表;i+-+/()#EE->TEE->TEEE->ATEE->ATEE->E->TT->FTT->FTTT->T->T->MFTT->MFTT->T->FF->iF->(E)AA->+A->MM->*M->/3. 设计堆栈和预测分析表的机内表示;堆栈表示: 预测分析表的机内表示:4. 设计并书写语法分析程序;语法分析程序代码:#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;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");void print1() int j; for(j=0;j<b;j+) printf(" "); for(j=b;j<=l;j+) printf("%c",Bj); printf("ttt");void main() int m,n,k=0,flag=0,finish=0; char ch,x; type cha; 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' printf("步骤tt分析栈 tt剩余字符 tt所用产生式 n"); do x=Atop-; 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(x=ch) print(); print1(); printf("%c匹配n",ch); ch=B+b; flag=0; else print(); print1(); printf("%c出错n",ch); exit(1); 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-; else print(); print1(); printf("%c出错n",x); exit(1); while(finish=0);5. 调试并运行语法分析程序;运行结果:输入i+(i*i)#运行结果如图一输入(i+i)*i#运行结果如图二记录成绩(涂改无效)合格不合格【五、实验结果分析】6. 实验结果分析通过本次实验加深对预测分析LL(1)分析法的理解,能撑握编写LL(1)分析程序对任意输入的符号串进行分析。

    注意事项

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

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




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

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

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

    收起
    展开