递归下降语法分析器实验报告_第1页
递归下降语法分析器实验报告_第2页
递归下降语法分析器实验报告_第3页
递归下降语法分析器实验报告_第4页
递归下降语法分析器实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、装订线 编译原理实验报告 题目: 递归下降语法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁剑 指导教师 xx 20xx年xx月xx日递归下降语法分析器一、实验目的 了解语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。二、实验原理 算术表达式的文法可以是(可以根据需要适当改变):EE+E|E-E|E*E|E/E|(E)|i 根据递归下降分析法或预测分析法 ,对表达式进行语法分析 ,判断一个表达式是否正确 。三、实验步骤(1) 准备:1. 阅读课本有关章节,确定算术表达式的文法

2、;(设计出预测分析表);2. 考虑好设计方案;3. 设计出模块结构 、测试数据,初步编制好程序。(2) 上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行探讨,以修改方案和代码 。(3)改造后的文法:EE+T|E-T|TTT*F|T/F|FFF|PPc |id| (E)四、实验环境计算机 VC+软件五、实验程序#include#include #include#include#includevoid error();void terror();void Scanner();char sym= ;int i=0;char strToken30=;FILE *in;void

3、 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 (isdigit(sym)strTokeni=sym;i+;sym=fgetc(in);elseprintf(%s,strToken);i=0;Retract(strToken);fseek(in,-2,1);sy

4、m=fgetc(in);break;elseif(sym=+)printf(+);else if(sym=-)printf(-);else if(sym=*)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(

5、sym=*|sym=/|sym=)Scanner();F();T1();void T()F();T1();void E1()if (sym=+|sym=-)Scanner();T();E1();void E()T();E1();void error()printf(nThis is a wrong phrase!n);exit(0);void terror()printf(nthis is a wrong parase2!n);exit(0);int main()if(in=fopen(input.txt,r)=NULL)printf(File cant open.);exit(0);Scan

6、ner();E();if (sym!=#)printf(nSuccess.);elseprintf(nFail.);fclose(in);return 0;六、实验结果及分析程序输入/输出示例 : 如参考 C 语言的运算符。输入如下表达式 (以分号为结束)和输出结果 :(a) 10;输出:正确 此时程序运行结果如下图:(b) 1+2;输出:正确 此时程序运行结果如下图:(c) (1+2) / 3+4- (5+6/7);输出:正确 此时程序运行结果如下图:(d) ( (1-2) /3+4;输出:错误 此时程序运行结果如下图:(e) 1+2-3+(*;输出:错误此时程序运行结果如下图:(f) (1+2) / 3+4- (5+6/7) -23;输出:正确此时程序运行结果如下图:(g) (1+2) / 3+4- (5+6/7) -;输出:错误此时程序运行结果如下图:总结:通过该实验的操作 ,我了解了语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论