




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理课 程 设 计院 系 专 业 年 级 11级 学 号 姓 名 2014年 05月实验一 简单的词法分析器设计一、设计内容 熟悉并实现一个简单的词法分析器二、设计目的 了解高级语言单词的分类,了解如何识别单词规则,掌握状态图到识别程序的编程。源程序中,存在许多编辑用的符号,他们对程序逻辑功能无任何影响。例如:回车,换行,多余空白符,注释行等。在词法分析之前,首先要先剔除掉这些符号,使得词法分析更为简单。三、实验步骤1.将每个单词符号进行不同类别的划分。单词符号可以划分成5中。 (1)标识符:用户自己定义的名字,常量名,变量名和过程名。(2)常数:各种类型的常数。(3) 保留字(关键字):如if、begin、then、while、do等。(4) 运算符:如+、-、*、=等。(5)界符:如逗号、分号、括号等。2.将所有合法的单词符号转化为便于计算机处理的二元组形式:(单词分类号,单词自身值);以图形化界面显示出来。3.可选择性地将结果保存到文件中。四、概要设计1待分析的简单语言的词法(1)关键字:while do relop letter id number所有关键字都是小写。(2)运算符和界符:: = + * / = = = ; ( ) #(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: 如课本P20例2.6空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 2词法分析器的结构源程序输入缓冲区预处理子程序扫描缓冲区1扫描缓冲区2词法分析子程序调用数据返回单词图6.1 词法分析器的结构 3部分单词的正规式与状态转换图图6.2部分单词的状态转换图 4功能模块表6.2 词法分析器的C#程序过程或函数功能表过程或函数名简要功能说明void scaner()分析源程序得到单个单词并大致区分其类型,并生成二元组void main( )输入源程序五、详细设计1流程图开始输入C语言源程序初始化source逐个遍历字符,并去除空格符State 为0进入switch分支循环判断根据state的值选择适当的处理调用相关函数输出处理结果开始 图7.1程序总体流程图六、编程调试1.源代码#includestdio.h#includestring.h#includeiostream.hchar prog100,token20;char ch;int syn,p,m=0,n,row,sum=0;char *rwtab6=while,do,relop,letter,id,number; void scaner()for(n=0;n=a&ch=A&ch=0&ch=a&ch=A&ch=Z)tokenm+=ch;ch=progp+;tokenm+=0;p-;syn=10;for(n=0;n=0&ch=0&ch32767)syn=-1;else switch(ch)case)syn=21;tokenm+=ch;else if(ch=)syn=22;tokenm+=ch;elsesyn=23;p-;break;case:m=0;tokenm+=ch;ch=progp+;if(ch=)syn=24;tokenm+=ch;elsesyn=20;p-;break;case:m=0;tokenm+=ch;ch=progp+;if(ch=)syn=18;tokenm+=ch;elsesyn=17;p-;break;case*:syn=13;token0=ch;break;case/:syn=14;token0=ch;break;case+:syn=15;token0=ch;break;case-:syn=16;token0=ch;break;case=:syn=25;token0=ch;break;case;:syn=26;token0=ch;break;case(:syn=27;token0=ch;break;case):syn=28;token0=ch;break;case#:syn=0;token0=ch;break;casen:syn=-2;break;default: syn=-1;break;void main()p=0;row=1;cout请输入字符串(字符#是字符串输入结束标志):endl;docin.get(ch);progp+=ch;while(ch!=#);cout字符串输出结果为:endl;p=0;doscaner();switch(syn)case 11: cout(syn,sum)endl; break; case -1: coutError in row row!endl; break;case -2: row=row+;break; default: cout(syn,token)endl;break;while (syn!=0);2.调试七、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南湘潭市雨湖区招聘教师80人模拟试卷含答案详解
- 2025年潍坊职业学院高层次高技能人才引进(招聘)(10人)模拟试卷及一套完整答案详解
- 2025贵州黔南州瓮安县卫生健康局招聘公益性岗位人员2人模拟试卷带答案详解
- 2025广东广州市黄埔区老人院招聘5人考前自测高频考点模拟试题及答案详解(有一套)
- 2025广东阳江市阳春市统计局招聘编外人员1人模拟试卷附答案详解(典型题)
- 2025年四川省成都市青白江区七所“两自一包”公办学校招聘教师(152人)模拟试卷及完整答案详解1套
- 2025年合肥庐阳科技创新集团有限公司招聘6人考前自测高频考点模拟试题含答案详解
- 2025湖南邵阳公安局警务辅助人员招聘126人模拟试卷有完整答案详解
- 2025北京市第十九中学招聘考前自测高频考点模拟试题及答案详解(新)
- 2025湖北正源电力集团有限公司招聘146人(第三批)模拟试卷及答案详解一套
- T-CAV 016-2025 T-CAS 1049-2025 二代测序法在灭活疫苗候选株筛选应用的技术要求
- 造林工技师、高级技师参考题及答案
- 艾滋病的诊断和鉴别诊断
- 云鹤电商公司管理制度
- 新生儿臀部护理与纸尿裤使用指南
- 教育行业电销话术
- 2025-2030全球及中国汽车后桥转向系统行业市场现状供需分析及投资评估规划分析研究报告
- 租房安全协议合同书
- 智能书架解决方案
- 五金厂生产管理方案
- 江苏省南京师范大学附属中学2023-2024学年高二上学期期初测试数学试题
评论
0/150
提交评论