欢迎来到天天文库
浏览记录
ID:30365226
大小:20.67 KB
页数:15页
时间:2018-12-29
《编译原理语法分析递归下降子程序实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划编译原理语法分析递归下降子程序实验报告 课程名称编译原理 设计题目递归下降语法分析 一、设计目的 通过设计、编制、调试一个具体的语法分析程序,加深对 语法分析原理的理解,加深对语法及语义分析原理的理解,并实现对文法的判断,是算符优先文法的对其进行FirstVT集及LastVT集的分析,并对输入的字符串进行规约输出规约结果成功或失败。 二、设计内容及步骤 内容:在C++中编写程序代码实现语法分析功能,调试得到相应文法的判断结果:是算符优先
2、或不是。若是,则输出各非终结符的FirstVT与LastVT集的结果,还可进行字符串的规约,输出详细的规约步骤,程序自动判别规约成功与失败。 步骤:1.看书,找资料,了解语法分析器的工作过程与原理 2.分析题目,列出基本的设计思路 1定义栈,进栈,出栈函数○目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 2栈为空时的处理○ 3构造函数判断文法是否是算符文法,算符
3、优先文法○ 4构造FirstVT和LastVT函数对文法的非终结符进行分析○ 5是算符优先文法时,构造函数对其可以进行输入待规约○ 串,输出规约结果 ○6构造主函数,对过程进行分析 3.上机实践编码,将设计的思路转换成C++语言编码,编译运 行 4.测试,输入不同的文法,观察运行结果 详细的算法描述 详细设计伪代码如下: 首先要声明变量,然后定义各个函数 Initstack(charstack&s) {//定义栈 =newcharLode[20]; =-1;} 2.voidpush(charstack&s,charLodew)
4、{//字符进栈 ++;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 [].E=; [].e=; } 3.voidpop(charstack&s,charLode&w) {//字符出栈 =[].E;三、 =[].e; ; } 4.intIsEmpty(charstacks) {//判断栈是否为空 if(==-1) return1; elser
5、eturn0; } IsLetter(charch) {//判断是否为非终结符 if(ch>='A'&&chxxxx 指导教师姓名:xxxxx 完成时间:XX年3月28日 一、实验目的目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 通过本实验,了解递归下降预测分析的原理和过程以及可能存在的回溯问题,探讨解决方法,为预测分析表方法的学习奠定基础。分析递归下降
6、子程序的优缺点。 二、实验内容及要求 1.针对算术表达式文法:E→TE’ E’→+TE’
7、ε T→FT’ T’→*FT’
8、ε F→(E)
9、i 为其编写递归下降子程序,判定某个算术表达式是否正确:如j+k*m,j*k+m输入:其输入数据应该为词法分析器输出的记号形式:i+i*i,i*i+i输出:分析结果:算术表达式结构正确或结构错误。 三、实验程序设计说明 1.实验方案设计 各个函数之间的调用关系如下图所示: 2.程序源代码 源代码如下: #include #include #include #include目的-通过该培训员工可
10、对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 chara[10]; intlookahead=0; voidE1(); voidT(); voidT1(); voidF(); voidE() { printf("E->TE'"); T(); E1(); } voidE1() { if(a[lookahead]=='+') { printf("E'->+T
11、E'"); lookahead+
此文档下载收益归作者所有