2022年实验三递归下降语法分析器定义 .pdf

上传人:Che****ry 文档编号:35743975 上传时间:2022-08-23 格式:PDF 页数:6 大小:476.61KB
返回 下载 相关 举报
2022年实验三递归下降语法分析器定义 .pdf_第1页
第1页 / 共6页
2022年实验三递归下降语法分析器定义 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年实验三递归下降语法分析器定义 .pdf》由会员分享,可在线阅读,更多相关《2022年实验三递归下降语法分析器定义 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、湖南农业大学东方科技学院学生实验报告姓名:刘亚南学号 200841903329 年级专业及班级08 级 计算机(3 )班成绩课程名称编译原理实验名称3递归下降分析法实验目的、要求了解语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。实验内容、原理算术表达式的文法可以是(可以根据需要适当改变): EE+E|E-E|E*E|E/E|(E)|i 根据递归下降分析法或预测分析法,对表达式进行语法分析,判断一个表达式是否正确。实验环境计算机 vc+ 软件实验步骤(1)准备: 1. 阅读课本有关章节,确定算术表达式的文法;( 设计出预测分析表);2. 考虑好设计

2、方案;3. 设计出模块结构、测试数据,初步编制好程序。(2)上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行探讨,以修改方案和代码。(3)改造后的文法:EE+T|E-T|T TT*F|T/F|F FFP|P Pc|id|(E) (4)程序代码:#include #include #include #include #include void error(); void terror(); void Scanner(); char sym = ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整

3、理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - int i=0; char strToken30= ; FILE *in; void E(); void E1(); void F(); void Retract(char str30) for(int j=0;j30;j+) strj=0; void Scanner() sym=fgetc(in); if(isspace(sym) while(1) if(isspace(sym) sym=fgetc(in); else break; if(isdigit(sym) while(1) if(isdigi

4、t(sym) strTokeni=sym; i+; sym=fgetc(in); else printf(%s,strToken); i=0; Retract(strToken); fseek(in,-2,1); sym=fgetc(in); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - else if(sym=+) printf(+); else if(sym=-) printf(-); else if(sym

5、=*) printf(*); else if(sym=/) printf(/); else if(sym=) printf(); else if(sym=() printf(); else if(sym=) printf(); void F() if(isdigit(sym) Scanner(); else if(sym=() Scanner(); E(); if(sym=) Scanner(); else error(); else terror(); void T1() if(sym=*|sym=/|sym=) Scanner(); F(); 名师资料总结 - - -精品资料欢迎下载 -

6、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - T1(); void T() F(); T1(); void E1() if(sym=+|sym=-) Scanner(); T(); E1(); void E() T(); E1(); void error() printf( This is the wrong phrase!n); exit(0); void terror() printf( This is the wrong phrase2!n); exit(0); v

7、oid main() if(in=fopen(input.txt, r)=NULL) printf(THE FILE DOESNT OPEN!); exit(0); Scanner(); E(); if(sym=#) printf(nsuccessn); else printf(fail); fclose(in); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 实验调试过程及测试结果程序输入 /输出示例:如参考 C语言的运算符

8、。输入如下表达式(以分号为结束)和输出结果:(a)10; 输出:正确此时程序运行结果如下图:(b)1+2; 输出:正确此时程序运行结果如下图:(c)(1+2)/3+4-(5+6/7); 输出:正确此时程序运行结果如下图:(d)(1-2)/3+4 输出:错误此时程序运行结果如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - (e)1+2-3+(*4/5) 输出:错误此时程序运行结果如下图:(f )(1+2)/3+4-(5+6/7)-23; 输出:正确此时程序运行结果如下图:(g)(1+2)/3+4-(5+6/7)-; 输出:正确此时程序运行结果如下图:总结通过该实验的操作,我了解了语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法;了解了也理解了递归下降分析法的基本原理, 在试验前听了老师的细心讲解, 试验起来觉得没有太大难度。指导教师签名:2010 年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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