ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:243.32KB ,
资源ID:17234624      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17234624.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理实验报告实验二编写递归下降语法分析程序Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理实验报告实验二编写递归下降语法分析程序Word下载.docx

1、 日期:2016年 4 月 1 日一、实验目的通过设计、编制、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握常用的语法分析方法。通过本实验,应达到以下目标:1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。2、掌握词法分析的实现方法。3、上机调试编出的语法分析程序。二、实验过程1、分析对象 分析算术表达式的 BNF 定义如下:算术表达式项|算术表达式项|算术表达式项项因式|项*因式|项因式因式变量(算术表达式)变量i用符号表示如下: ET|ET|E-T TF|T*F|TF Fi(E)递归下降分析程序实现思想简单易懂。程序结构

2、和语法产生式有直接的对应关系。因 为每个过程表示一个非终结符号的处理,添加语义加工工作比较方便。递归下降分析程序的实现思想是:识别程序由一组子程序组成。每个子程序对应于一 个非终结符号。每一个子程序的功能是:选择正确的右部,扫描完相应的字。在右部中有非终结符号 时,调用该非终结符号对应的子程序来完成。自上向下分析过程中,如果带回溯,则分析过程是穷举所有可能的推导,看是否能推 导出待检查的符号串。分析速度慢。而无回溯的自上向下分析技术,当选择某非终结符的 产生时,可根据输入串的当前符号以及各产生式右部首符号而进行,效率高,且不易出错。无回溯的自上向下分析技术可用的先决条件是:无左递归和无回溯。

3、无左递归:既没有直接左递归,也没有间接左递归。无回溯:对于任一非终结符号 U 的产生式右部 x1|x2|xn,其对应的字的首终结符号 两两不相交。2. 递归下降语法分析流程图实验分为五个模块,分别是:E( )函数,E1( )函数,T( )函数,T1( )函数,F( )函数。用递归下降算法分析上述算术表达式的框图,如下图所示。ZC过程为总控程序。图1-1 ZC过程图1-2 E过程图1-3 T过程图1-4 F过程图1-5 函数过程SYM图1-6 函数过程Advance3、实验结果1.测试数据测试数据时输入要测试的串并以#结束数据共分为2组,分别如下:第一组数据i+i*i#第二组数据I*#2.测试结

4、果测试结果如下图所示:图1-7 测试结果1图1-8 测试结果24、讨论与分析本次试验分为5个大步骤:ZC过程:开始,然后打印“INPUT EXPRESSION”,输入字符串ST,执行E过程,然后判断SYM是否不等于#或者TZ是否等于1,如果是,打印“ERROR AGAIN”,给TZ赋值为0,跳回到开始步骤继续;如果不是则打印“RIGHT AGAIN”,回到开始步骤继续。E过程:开始,执行T过程,判断SYM是否等于“+”或“”,如果不是,返回,如果是,执行ADVANCE,跳回到开始步骤。T过程:开始,执行F过程,判断SYM是否等于“*”或者“/”,如果不是,返回,如果是,执行ADVANCE,在跳

5、回到开始过程。F过程:开始,判断SYM是否不等于“A”或者SYM是否小于Z,如果不是,执行ADVACE,然后执行返回,如果不是,再判断SYM是否不等于“(”,如果是,打印“ERROR”,TZ赋值1,返回;如果不是,执行ADVANCE,在执行E过程,接着继续判断SYM是否不等于“)”,如果是,打印ERROR,TZ赋值1,如果不是,执行ADVANCE,返回。SYM:取字符串ST的第一个字符给SYM。ADVANCE:取字符串ST去除首字符后留下的字符串。5、附录:关键代码部分如下:(E()函数和E1()函数构成E过程,T()函数和T1()函数构成T过程,F()函数构成F过程)/*E()函数*/voi

6、d E() if(x=0) output1(i); printf(E-TE1); output(i+1); T(); E1(); /*E1()函数*/void E1() if(si=+) output1(i); printf(E1-+TE1 output(i+1); advance(); T(); E1(); else if(si=-TE1# output1(i-1); output(i); else/*T()函数*/void T() if(x=0) if(si!=T-FT1 F(); T1();/*T1()函数*/void T1()*T1-*FT1/FT1/*F()函数*/void F()i

7、F-i( output1(i); printf(E) output(i+1); advance(); E(); if(x!=1) if(si=) output1(i); printf( output(i+1); advance(); else x=1; else if(si= x=1; x=1;六、实验者自评通过本次实验,我对递归下降词法分析器的结构,过程有了更进一步的了解,通过学习书本和试验原理书上的内容,对它的工作原理,具体实行步骤有了进一步的掌握。这次实验让我了解到如何设计、编制并调试递归下降语法分析程序,加深对递归下降语法分析原理的理解;熟悉了构造递归下降语法分析程序的手工方式的相关原理,根据识别语言单词的状态转换图,使用某种高级语言(例如C语言)直接编写此法分析程序。由于本次试验是测试性试验,所以要求输出的结果是成功与否,输入一个句型,进过分析,判断它是否合法,主要内容在于其判断过程中。本次试验不光提高了自己的编程能力,同时提高了对递归下降的了解。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1