版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 报 告(2015 / 2016 学年 第 二 学期)课程名称编译原理实验名称词法分析器的构造实验时间2016年4月29日指导单位计算机软件教学中心指导教师学生姓名wujun班级学号学院(系)计算机学院、软件学院专 业计算机科学与技术实 验 报 告实验名称词法分析器的构造指导教师实验类型设计实验学时4实验时间2016.4.29一、 实验目的和要求1、实验目的:设计、编制、调试一个词法分析程序,对单词进行识别和编码,加深对词法分析原理的理解。2、实验要求:1)、允许用户自己输入源程序并保存为文件;2)、系统能够输出经过预处理后的源程序(去掉注释、换行、空格等);3)、能够将该源程序中所有的
2、单词根据其所属类型(整数、保留字、运算符、标识符等。定义的类C语言中的标识符只能以字母或下划线开头)进行归类显示,例如:识别保留字:if、int、for、while、do、return、break、continue等,其他的都识别为标识符;常数为无符号整形数;运算符包括:+、-、*、/、=、=、=、!=等;分隔符包括:,、;、(、)等;4)、实现文件的读取操作,而不是将文本以字符串形式预存于程序中。文本内容为待分析的类C语言程序。二、实验环境(实验设备) 硬件:计算机 软件:Visual C +6.0二、 实验原理及内容 1、实验内容:设计并实现一个词法分析器,实现对指定位置的类C语言源程序文
3、本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。例如下面为一段C语言源程序: main() int a,b; a = 10; b = a + 20; 要求输出如下: (2,main) (5,() (5,)(5,) (5,)(5,)(5, )(1,int)(2,a)(5,,)(2,b)(5,;)(2,a)(4,=)(3,10)(5,;)(2,b)(4,=)(2,a)(4,+)(3,20)(5,;)(5,) 2、实验原理状态转换图 3、 实验代码:实验代码:#include #include #include #include #include#incl
4、udestruct Char /创建一个结构用于存贮关键字char a15;typedef struct Char CH;/定义关键字CH keyWord67=auto,break,case,cout,cin,char,const,continue,default, do,double,else,enum,endl,extern,float,for,goto,if,main, include,int,long,register,return,short,signed,sizeof,static, string,struct,switch,typedef,union,unsigned,void,
5、stdio,while, cin,cout,catch,calss,ctype,stdlib,fstream,export,iostream, false,friend,inline,mutable,namespace,new,operator,private, protected,public,static_cast,template,this,throw,true,try, typename,using,virtual,asm;/检测是否为数字,是返回true,否则返回falsebool IsDigit(char A) if(A=0 & A=A&ch=a&ch=z)return true;
6、return false;/检测是否为分隔符,是则返回true,否则返回falsebool IsSeparator(char ch) if(ch =(|ch=)|ch =|ch =|ch=;|ch=,|ch=.|ch=:|ch=|ch=|ch=|ch=|ch=#|ch=_)return true;return false;/检测是否为关键字,是则返回true,否则返回falsebool IsKeyWord(char *a) int i = 0;for(i; i 67; i+)if (strcmp(a,keyWordi.a) = 0)return true;return false;/预处理去掉
7、注释、换行、空格等void Scanner(char s,char a)int i = 0,j = 0,k = strlen(s);for (i; i k; i +)if (si = / & si+1 =/)doi+;while(si != n);i-;else if (si = / & si+1 = *)doi+;while(si != / | si-1 != *);continue;else if (si = t | si = n | si = ?)aj+ = ;else aj+ = si;coutn系统经过预处理后的输出(去掉注释和换行):endl;coutann;cout系统经过预处理
8、后的输出(去掉注释、换行、空格等):endl;for (i = 0;i strlen(a); i+)if(ai = )continue;elsecoutai;coutendlendlendl;void Handle(char s) /词法分析char ch;for (int j = 0; j strlen(s); j+)char word20 = 0;int i = 0;ch = sj;if (ch = )continue;else if (IsLetter(ch)dowordi+ = ch;ch = s+j;while(IsLetter(ch)| IsDigit(ch)|ch=_);j-;w
9、ordi = 0;if(IsKeyWord(word)cout(1,word)endl;elsecout(2,word)endl;else if(IsDigit(ch)dowordi+ = ch;ch = s+j;while(IsDigit(ch);j-;wordi = 0;cout(3,word)endl;else if(IsSeparator(ch)word0 = ch;cout(5,word)|word0=|word0=&|word0=|)if(sj+1=word0 | sj+1=)word1 = s+j;cout(4,word)endl;elsecout(4,word)endl;els
10、e if(word0=|word0=*|word0=/|word0=!|word0=%|word0=)if (sj+1 = =)word1 = s+j;cout(4,word)endl;else cout(4,word)endl;else if (word0 = )if (sj+1 = n |sj+1 = t |sj+1=|sj+1=0)word1 = s+j;cout(4,word)endl;else cout(4,word)endl;elsecout(无法识别字符,word)endl;coutn;int main()int i;char b = 32,ch;FILE *fp;doi = 0
11、; char s10000;char a10000 = 0;fp=fopen(code.txt,rb+);if(fp=NULL)coutCan not create fileendl;exit(0);fseek(fp,0,2);coutPlease input you code(end with two?):endl;doch = getchar();si+ = ch;if(ch = n | ch= t )for (int j =0; j 4;j+)fputc(b,fp);fputc(ch,fp);while(si-1 != ? | si-2 != ?);si = 0;Scanner(s,a);cout词法分析如下:endl;Handle(a);fclose(fp);while(true);return 0;4、 实验测试和截图(1) 、测试一截图输入代码: 输出结果: (2)测试二截图输入代码: 输出结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 在本实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《材料成形设计综合实验》实验教学大纲
- 经济贸易毕业论文:中国OFDI发展史
- 玉溪师范学院《女性社会工作》2023-2024学年第一学期期末试卷
- 2024年磷铁项目评估分析报告
- 《机械零件的三坐标检测》课程框架
- 《开发和利用资源促进园本课程建设》课题方案
- 采购合同诉讼费收费标准
- 爆破监理延期合同
- 糖尿病新生儿护理课件
- 07 C简谐运动的描述 中档版2025新课改-高中物理-选修第1册(21讲)
- 2024年员工向公司借款合同标准版本(六篇)
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 泰康保险在线测评真题
- 小学语文阅读校本课程设计方案
- 初中道法教学经验交流会发言稿范文
- DB3301-T 1139-2024 地理标志产品 千岛湖鲢鳙
- 2024-2030年中国陶瓷珠市场发展趋势及投资可行性价值评估报告
- 高中生物-第1节 种群的特征教学设计学情分析教材分析课后反思
- 7.比较不同的土壤课件教科版科学四年级下册
- 2024小学数学义务教育新课程标准(2022版)必考题库附含答案
- 《基础会计》教学课件-整套教程电子讲义
评论
0/150
提交评论