全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与计算机学院 编译原理 实验报告年级 2005级 学号 2005430076 姓名 赵浩鑫 成绩 专业 网络工程 实验地点 主楼402 指导教师 何欣枫 实验项目 递归下降分析器的设计 实验日期 一、 实验目的 使用递归子程序法设计一个语法分析程序,理解自顶向下分析方法的原理,掌握手工编写 语法分析程序的方法。二、 实验原理 首先将上述文法改写成EBNF形式,根据递归下降分析算法基本思想编写程序。递归下降法的实现思想是对应文法中每个非终结符编写一个递归过程。每个过程的功能是识别由该终结符推出的串,当某终结符的产生式有多个候选时按LL(1)形式唯一地确定选择某个候选进行推导。三、 实验要求1、使用递归下降分析算法分析表达式文法:exp := exp addop term | termaddop := + | -term := term mulop factor | factormulop := * | /factor := (exp) | number其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法分析器来得到number的值。2、该词法分析器以子程序形式出现,当需要进行词法分析时进行调用;3、能够识别正确和错误的表达式;4、在进行语法分析的过程中,计算输入表达式的值。四、实验结果(程序)及分析1. 首先是建立数学表达式的文法EBNF。expression - term addop Term addop - + | -term - factor mulop factor mulop - * | /factor - num | ( expression )2.分析过程l 看第一条非终结产生式expression - term addop Term 先定义函数intexpression(),result值就是我们要处理的表达式的值。右边的产生式中,第一个是term,我们就直接调用term函数完成。然后是0到无限次的addopterm,那么用一个循环即可。文法中使用非终结符号addop,直接在代码以-代替addop。代码如下。int expression () int result = term (); /调用term()函数。 while (TOKEN = + | TOKEN = -) /TOKEN用来存放正在分析的字符 char tmp = TOKEN; get_token (); /自定义的取字符的函数 tmp = + ? result += term () : result -= term (); return result;l 看产生式term - factor mulop factor int term () int result = factor (); /调用函数factor() while (TOKEN = * | TOKEN = /) char tmp = TOKEN; get_token (); tmp = * ? result *= factor () : result /= factor (); return result;l 看产生式factor - num | ( expression )int factor () int result; if (TOKEN = () /看是不是左括号 get_token (); /如果是取下一个字符,并调用expression(),执行完后检查有没有配对的右括号,如果没有,是不合法的表达式 result = expression (); match (); else if(isdigit(TOKEN) /如果不是左括号看是不是数字,若为数字,调用number()分析出数值数据,如果不是数字,则为不合法的表达式 result = number (); else error=1; return error; r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洗衣液代加工合同范本
- 猪肉长期供货合同范本
- 私企合伙人合同协议书
- 瓷砖空鼓装修合同范本
- 生产部安全生产协议书
- 空调工程转让合同范本
- 生鲜公司劳动合同范本
- 银行安全工作笔记讲解
- 海洋经济考核方法
- 全州民营经济发展现状报告
- 2025至2030全球及中国花生行业项目调研及市场前景预测评估报告
- 2025年教师职称考试(语文)复习题及答案(小学)(吕梁)
- 小学消防安全课件演示
- 2026年南宁市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(培优a卷)
- 2025年英语专业专升本模拟试卷真题(含答案)
- 2025年江苏(统招专升本)英语考试试题及答案
- 2025年儿童营养与健康知识竞赛答案及解析
- 2025乌鲁木齐银行秋季招聘备考考试题库附答案解析
- 思维导图在护理工作应用
- 北师大版八年级上册数学 第5章 二元一次方程 问题解决策略:逐步确定 教案
- 开展集中整治群众身边不正之风和腐败问题工作总结汇报
评论
0/150
提交评论