电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

递归下降语法分析器实验报告VIP免费

递归下降语法分析器实验报告_第1页
1/9
递归下降语法分析器实验报告_第2页
2/9
递归下降语法分析器实验报告_第3页
3/9
编译原理实验报告 题 目 : 递 归 下 降 语 法 分 析 器 学 院 计 算 机 科 学 与 技 术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁 剑 指 导 教 师 xx 20xx 年 xx 月 xx 日 递归下降语法分析器 装 订 线 一、实验目的 了解语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。 二、实验原理 算术表达式的文法可以是(可以根据需要适当改变): E→E+E|E-E|E*E|E/E|(E)|i 根据递归下降分析法或预测分析法 ,对表达式进行语法分析 ,判断一个表达式是否正确 。 三、实验步骤 (1) 准备:1. 阅读课本有关章节,确定算术表达式的文法;(设计出预测分析表);2. 考虑好设计方案;3. 设计出模块结构 、测试数据,初步编制好程序。 (2) 上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行探讨,以修改方案和代码 。 (3)改造后的文法:E→ E+T|E-T|T T→ T*F|T/F|F F→ F^|P P→ c |id| (E) 四、实验环境 计算机 VC++软件 五、实验程序 #include #include #include #include #include void error(); void terror(); void Scanner(); char sym=' '; int i=0; char strToken[30]={""}; FILE *in; void E(); void E1(); void F(); void Retract(char str[30]){ for(int j=0;j<30;j++){ str[j]=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)){ strToken[i]=sym; i++; sym=fgetc(in); } else{ printf("%s",strToken); i=0; Retract(strToken); fseek(in,-2,1); sym=fgetc(in); break; } } } else{ if(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 te...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

递归下降语法分析器实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部