词法分析器的构造 南邮2016 编译原理实验一报告_第1页
词法分析器的构造 南邮2016 编译原理实验一报告_第2页
词法分析器的构造 南邮2016 编译原理实验一报告_第3页
词法分析器的构造 南邮2016 编译原理实验一报告_第4页
词法分析器的构造 南邮2016 编译原理实验一报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实际报告(2015/2016学年第二学期)课程名称编译原理实验名称词汇分析器的构建实验时间2016年4月29天瞄准器计算机软件教学中心教师学生姓名吴军类数学院(系)计算机学院,软件学院专业贸易计算机科学和技术实际报告实验名称词汇分析器的构建教师实验类型设计实验时间4实验时间2016.4.29一、实验的目的和要求1.实验目的:设计、编译和调试一个词法分析程序来识别和编码单词,加深对词法分析原理的理解。2.实验要求:1)允许用户自己输入源程序并将其保存为文件;2),系统可以输出预处理后的源程序(删除注释、换行符、空格等。);3)源程序中的所有字都可以根据其类型(整数、保留字、运算符、标识符等)进行分类。)。定义的C类语言中的标识符只能以字母或下划线开头)被分类和显示,例如,识别保留字:if、int、for、while、do、return、break、continue等。其他都被识别为标识符;常数是无符号整形数;运算符包括:-、*、/、=、=、=、=、=等。分隔符包括:、(、)等。4)读取文件,而不是在程序中预先存储字符串形式的文本。文本内容是要分析的类C语言程序。二、实验环境(实验设备)硬件:计算机软件:可视化C 6.0二、实验原理和内容1.实验内容:设计并实现了一个词法分析器,用于在指定位置读取类C源程序的文本文件,对源程序中的所有单词进行分类,指出它们的类型,并实现简单的词法分析操作。例如,下面是一个C语言源程序:main()int a,b;a=10b=a20;所需输出为:如下所示(2,主)(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.实验代码:实验代码:#包括#包括#包括#包括#包括#包括结构字符 /创建存储关键字的结构充电a15;类型定义结构字符通道;/定义关键字CH关键字67= 自动,中断,案例, cout , cin ,字符,常量,继续,默认,do”,“double”,“else”,“enum”,“endl”,“extern”,“float”,“for”,“goto”,“if”,“main”,包括, int , long , register , return , short , signed , sizeof , static ,字符串,结构,开关, typedef , union , unsigned , void , stdio , while ,cin , cout , catch , calss , ctype , stdlib , fstream , export , iostream ,false , friend , inline , mutable , namespace , new , operator , private ,受保护,公共,静态转换,模板,此,抛出,真,尝试,typename , using , virtual , ASM ;/检查是否为数字,返回真,否则返回假bool IsDigit(char A)如果(A=0 A=9)返回真;其他返回false/检查是否是字符,如果是,返回真,否则返回假bool IsLetter(char ch)if(ch=Ach=Z) | (ch=ach=z)返回真;返回false/检查它是否是分隔符,如果是,返回true,否则返回falsebool分割器(char ch)if(ch=(| | ch=)| | ch= | | ch= | | ch=;|ch=,|ch=。|ch=: | | ch= | | ch= | | ch=| | ch=| | ch=# | | ch=_)返回真;返回false/检查是否是关键字,如果是,返回true,否则返回falsebool IsKeyWord(char *a)int I=0;对于(I;i 67(I)if (strcmp(a,keyWordi)。a)=0)返回真;返回false/预处理去掉注释、换行、空格等空的扫描器(字符s,字符a)int i=0,j=0,k=strlen(s);对于;我知道。i )if (si=/si 1=/)做我;同时!= n);我。否则如果(第I=/第I 1=*)做我;同时!=/| si-1!=*);继续;否则如果(sI= t | | sI= n | | sI=?)aj=;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论