




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告学生姓名: 学号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、 实验项目名称实验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年商业地产客户满意度提升策略报告
- 2025年虚拟偶像产业发展趋势与市场分析报告
- 文化遗产数字化展示与传播在数字博物馆建设中的应用策略报告
- 2025年广东省佛山市南海区新芳华学校八下英语期末调研模拟试题含答案
- 2025年医药企业CRO研发外包的合作模式与项目风险控制报告
- 准备培训课件的通知
- 新能源汽车生产基地产业竞争力评估与初步设计报告
- 爆破考试试题及答案
- 2025年金融业人工智能算法审计在审计效率提升中的实践报告
- 2024年河南洛阳文旅集团财务岗位招聘笔试真题
- (高清版)DB12∕T 804-2018 口腔综合治疗台用水微生物标准
- 2025年(四川)公需科目(心理健康与职业发展主题)题库及答案
- 健康中国战略下的体育产业发展方向
- 消防设施操作和维护保养规程
- 关于“地舒单抗”治疗骨质疏松的认识
- 吊装施工安全协议书范本
- 中医养生康复学
- GB/T 45150-2024老龄化社会认知症包容性社群框架
- 华师版 八年级数学下册 第二学期 期末综合测试卷(2025年春)
- 2022年全国森林、草原、湿地调查监测技术规程-附录
评论
0/150
提交评论