




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告学生姓名: 学号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、 实验项目名称实验1 词法分析程序的设计二、 实验目的掌握计算机语言的词法分析程序的开发方法。三、 实验基本原理编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。四、 主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境五、 实验步骤1、根据正规式,画出状态转换图;2、根据状态图,设计词法分析算法;3、 采用C或C+语言,设计函数scan( ),实现该算法;4、 编制测试程序(主函数main);5、调试程序:读入文本文件,检查输出结果。六、实验数据及处理结果输入数据:编辑一个文本文件program.txt,在文件中输入如下内容:if data+920x3f thendata=data+01;elsedata=data-01;正确结果: , -程序:#include #include #include #include #include #include #include #define NULL 0FILE *fp;char ch;char *keyword=then,do, else,if,int,while,main;char *operatornum=+,-,*,/,=,=,;,(,),;bool search(char searchstr,int wordtype)int i;switch (wordtype)case 1:for(i=0;i=6;i+)if(strcmp(keywordi,searchstr)=0)return(true); case 2:for(i=0;i=14;i+)if(strcmp(operatornumi,searchstr)=0)return(true);break;break;return(false);char letterprocess (char ch)/字母处理函数int i=-1;char letter20;while (isalnum(ch)!=0)letter+i=ch;ch=fgetc(fp);letteri+1=0;if (search(letter,1)printf(n,letter);elseprintf(n,letter);return(ch);char numberprocess(char ch)/数字处理程序int i=-1,j=-1;char num20;char num120;char ch11;if(ch=0)num+i=ch;ch=fgetc(fp);if(ch=x)num+i=ch;ch=fgetc(fp);while(isdigit(ch)!=0|(ch=a&ch=f)num+i=ch;num1+j=ch;ch=fgetc(fp);if(isalpha(ch)!=0)ch10=ch;ch11=0;while(isspace(ch)=0&(search(ch1,2)=0)num+i=ch;ch=fgetc(fp);ch10=ch; numi+1=0;printf(错误!非法标识符:%sn,num);goto u;num1j+1=0;printf(n,num1);else while (isdigit(ch)!=0)num+i=ch;num1+j=ch;ch=fgetc(fp);if(isalpha(ch)!=0)ch10=ch;ch11=0;while(isspace(ch)=0&(search(ch1,2)=0)num+i=ch;ch=fgetc(fp);ch10=ch; numj+1=0;printf(错误!非法标识符:%sn,num);goto u;num1j+1=0;printf(n,num1);elsewhile (isdigit(ch)!=0)num+i=ch;ch=fgetc(fp);if(isalpha(ch)!=0)ch10=ch;ch11=0;while(isspace(ch)=0&(search(ch1,2)=0) num+i=ch;ch=fgetc(fp);ch10=ch;numi+1=0;printf(错误!非法标识符:%sn,num);goto u;numi+1=0; printf(n,num);u: return(ch);char otherprocess(char ch)int i=-1;char other20;if (isspace(ch)!=0)ch=fgetc(fp);goto u;while (isspace(ch)=0)&(isalnum(ch)=0)other+i=ch;ch=fgetc(fp);otheri+1=0;if (search(other,2)printf(n,other);else printf(错误!非法字符:%sn,other);u:return (ch);void main ()char str,c;printf(*词法分析器*n);if (fp=fopen(program.txt,r)=NULL)printf(源程序无法打开!n);elsestr =fgetc(fp);while (str!=EOF)if (isalpha(str)!=0)str=letterprocess(str);elseif (isdigit(str)!=0)str=numberprocess(str);elsestr=otherprocess(str); ;printf(词法分析结束,谢谢使用!n);printf(点任意键退出!n);c=getch(); 结果截图:七、 思考讨论题或体会或对改进实验的建议1、词法分析能否采用空格来区分单词?答:不能,在词法分析中,处理不光有标识符还有连接符,而连接符和其他的标识符是可以连在一起出现的。如果用空格来区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年护理三基知识考试复习题库及答案
- 安丘市2025-2026学年八年级下学期语文月考模拟试卷
- 阿勒泰市2025-2026学年七年级下学期语文期末测试试卷
- 2025 年小升初石家庄市初一新生分班考试数学试卷(带答案解析)-(人教版)
- 2025 年小升初沧州市初一新生分班考试语文试卷(带答案解析)-(部编版)
- 北京2025年会计证《财经法规与职业道德》试题
- 社区网格实体化建设课件
- 安徽省合肥市经开区清华附中2024-2025学年八年级(下)期中物理试卷(含答案)
- 农村腌菜销售合同范本
- 瓷砖商品购销合同范本
- 幼儿发展评价手册使用培训
- 口腔门诊客服工作计划
- 出租可行性报告
- 电工入场安全教育试卷(含答案)
- 数字化牙科扫描技术-洞察及研究
- JG/T 269-2010建筑红外热像检测要求
- 医院晋升晋级管理制度
- T/CNFAGS 15-2024绿色合成氨分级标准(试行)
- 2025年4月自考00023高等数学(工本)试题及答案含评分标准
- 北海蓝莓加工项目可行性研究报告
- 学校病媒生物防制培训
评论
0/150
提交评论