




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告学生姓名: 学号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、 实验项目名称实验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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6509-2025聚己内酰胺(PA6)切片和纤维中己内酰胺及低聚物含量的测定
- 2025海南保亭黎族苗族自治县市场监督管理局公益性岗位人员招聘1人模拟试卷及答案详解(夺冠)
- 2025年度黑龙江省气象部门高校毕业生招聘4人(第三批次气象类)考前自测高频考点模拟试题及答案详解(新)
- 2025广东广州市中山大学孙逸仙纪念医院康复医学科医教研岗位和医技岗位招聘2人模拟试卷及答案详解(历年真题)
- 2025福建厦门市集美实验学校非在编教师招聘1人模拟试卷完整参考答案详解
- 2025河南开封国禹运营管理有限公司招聘园区转运中心人员10人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025合同履行期间的保证期间与证期间的长短及起算点
- 冬季防疫知识培训总结课件
- 2025湖南红花园投资开发有限公司招聘10人模拟试卷及完整答案详解1套
- 2025湖北咸宁市通城县事业单位高层次和急需紧缺人才引进48人考前自测高频考点模拟试题(含答案详解)
- 2015海湾消防JB-QB-GST200 火灾报警控制器(联动型)安装使用说明书
- 2022年全国森林、草原、湿地调查监测技术规程-附录
- 专题20概率统计(解答题)(解析版) - 大数据之十年高考真题(2014-2025)与优 质模拟题(新高考卷与全国理科卷)
- 2024年度江西省高校教师资格证之高等教育心理学题库与答案
- 朝花夕拾-无常解析
- 《人工智能基础第2版》全套教学课件
- 365天艾斯宾浩记忆表格(打印版-背专业课)
- 《名著阅读 艾青诗选》核心素养课件1(第3课时)
- DB14-T 2779-2023 营造林工程监理规范
- 污水处理厂污泥处理处置投标方案
- 手机媒体概论(自考14237)复习必备题库(含真题、典型题)
评论
0/150
提交评论