下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告实验名称:_____递归下降语法分析器____实验类型:________验证型实验_________指导教师:_________何中胜_____________专业班级:________09计二______________姓名:_________周健_______________学号:______09030231_____________电子邮件:____________________________实验地点:_______院士楼720_____________实验成绩:____________________________一、实验目的和要求通过设计、编制、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握常用的语法分析方法。通过本实验,应达到以下目标:1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。2、掌握词法分析的实现方法。3、上机调试编出的语法分析程序。二、实验过程(1)1、准备:阅读课本有关章节,确定算术表达式的文法。考虑好设计方案。设计出模块结构、测试数据,初步编制好程序。上机调试,发现错误,分析错误,在修改完善。、(3)分析对象分析算术表达式的BNF定义如下:〈算术表达式〉→〈项〉|〈算术表达式〉+〈项〉|〈算术表达式〉-〈项〉〈项〉→〈因式〉|〈项〉*〈因式〉|〈项〉/〈因式〉〈因式〉→〈变量〉│(〈算术表达式〉)〈变量〉→i用符号表示如下:E→T|E+T|E-TT→F|T*F|T/F→i│(E)递归下降分析程序实现思想简单易懂。程序结构和语法产生式有直接的对应关系。因为每个过程表示一个非终结符号的处理,添加语义加工工作比较方便。递归下降分析程序的实现思想是:识别程序由一组子程序组成。每个子程序对应于一个非终结符号。每一个子程序的功能是:选择正确的右部,扫描完相应的字。在右部中有非终结符号时,调用该非终结符号对应的子程序来完成。自上向下分析过程中,如果带回溯,则分析过程是穷举所有可能的推导,看是否能推导出待检查的符号串。分析速度慢。而无回溯的自上向下分析技术,当选择某非终结符的产生时,可根据输入串的当前符号以及各产生式右部首符号而进行,效率高,且不易出错。无回溯的自上向下分析技术可用的先决条件是:无左递归和无回溯。无左递归:既没有直接左递归,也没有间接左递归。无回溯:对于任一非终结符号U的产生式右部x1|x2|…|xn,其对应的字的首终结符号两两不相交。三试验结果四、讨论和分析本次试验分为5个大步骤:ZC过程:开始,然后打印“INPUTEXPRESSION”,输入字符串ST,执行E过程,然后判断SYM是否不等于#或者TZ是否等于1,如果是,打印“ERRORAGAIN”,给TZ赋值为0,跳回到开始步骤继续;如果不是则打印“RIGHTAGAIN”,回到开始步骤继续。E过程:开始,执行T过程,判断SYM是否等于“+”或“—”,如果不是,返回,如果是,执行ADVANCE,跳回到开始步骤。T过程:开始,执行F过程,判断SYM是否等于“*”或者“/”,如果不是,返回,如果是,执行ADVANCE,在跳回到开始过程。F过程:开始,判断SYM是否不等于“A”或者SYM是否小于Z,如果不是,执行ADVACE,然后执行返回,如果不是,再判断SYM是否不等于“(”,如果是,打印“ERROR”,TZ赋值1,返回;如果不是,执行ADVANCE,在执行E过程,接着继续判断SYM是否不等于“)”,如果是,打印"ERROR",TZ赋值1,如果不是,执行ADVANCE,返回。SYM:取字符串ST的第一个字符给SYM。ADVANCE:取字符串ST去除首字符后留下的字符串。本次试验主要是测试性试验,了解一下递归下降语法分析器的基本构成和结构等等。附录#include"stdio.h"#include"string.h" charsym;inttz=0; charst[50];intip=0; voidmyE(); voidmyT(); voidmyF(); voidmyAdvance(); voidinit(); voidmyE() { myT(); if(sym=='+'||sym=='-') { myAdvance(); myE(); } } voidmyT() { myF(); while(sym=='*'||sym=='/') { myAdvance(); myF(); } } voidmyF() {if(sym>='A'&&sym<='Z'||sym>='a'&&sym<='z')myAdvance(); else{ if(sym!='(') { printf("error\n"); tz=1; } else {myAdvance(); myE();} if(sym!=')') {printf("error\n"); tz=1;} else myAdvance(); } } voidmyAdvance() {if(ip<strlen(st)) {ip=ip+1; sym=st[ip]; }}voidinit() {ip=0; sym=st[ip];} voidmain() {inti; gets(st); for(i=0;st[i]!='\0';i++); st[i]='#'; init();myE(); if(sym!='#'||tz==1) {printf("error\n"); tz=0;}elseprintf("right\n"); }实验者自评通过本次对递归下降词法分析器的结构,过程有了更进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度物业管理系统技术升级与维护合同3篇
- 二零二五年度高端不锈钢门工程安装与维护服务合同3篇
- 二零二五版控制权争夺下的企业并购法律服务合同3篇
- 二零二五年范文合同失效通知模板与说明3篇
- 二零二五版企业订餐福利管理合同3篇
- 2025年PVC管材绿色生产供应链采购销售合同3篇
- 居民住宅改为商用合同(2篇)
- 二零二五年房屋租赁合同出租人租赁房屋租赁权租赁合同9篇
- 二零二五年度电子信息材料采购合同范本3篇
- 2025年度生物制药行业质量控制合同3篇
- 湖南省建设工程施工阶段监理服务费计费规则【实用文档】doc
- GB/T 6913-2008锅炉用水和冷却水分析方法磷酸盐的测定
- GB/T 18717.2-2002用于机械安全的人类工效学设计第2部分:人体局部进入机械的开口尺寸确定原则
- 教案:第三章 公共管理职能(《公共管理学》课程)
- 中国文化概论(第三版)全套课件
- 117-钢结构工程质量常见问题与管控措施
- SHS5230三星指纹锁中文说明书
- 诺和关怀俱乐部对外介绍
- 保定市县级地图PPT可编辑矢量行政区划(河北省)
- 新苏教版科学六年级下册全册教案(含反思)
- 供方注册指南-ZTE
评论
0/150
提交评论