词法分析报告器地构造南邮206编译原理实验一报告材料

词法分析报告器地构造南邮206编译原理实验一报告材料

ID:39177355

大小:280.00 KB

页数:13页

时间:2019-06-26

词法分析报告器地构造南邮206编译原理实验一报告材料_第1页
词法分析报告器地构造南邮206编译原理实验一报告材料_第2页
词法分析报告器地构造南邮206编译原理实验一报告材料_第3页
词法分析报告器地构造南邮206编译原理实验一报告材料_第4页
词法分析报告器地构造南邮206编译原理实验一报告材料_第5页
资源描述:

《词法分析报告器地构造南邮206编译原理实验一报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、标准文档实验报告(2015/2016学年第二学期)课程名称编译原理实验名称词法分析器的构造实验时间2016年4月29日指导单位计算机软件教学中心指导教师学生姓名wujun班级学号学院(系)计算机学院、软件学院专业计算机科学与技术实用文案标准文档实用文案标准文档实验报告实验名称词法分析器的构造指导教师实验类型设计实验学时4实验时间2016.4.29一、实验目的和要求1、实验目的:设计、编制、调试一个词法分析程序,对单词进行识别和编码,加深对词法分析原理的理解。2、实验要求:1)、允许用户自己输入源程序并保存为文件

2、;2)、系统能够输出经过预处理后的源程序(去掉注释、换行、空格等);3)、能够将该源程序中所有的单词根据其所属类型(整数、保留字、运算符、标识符等。定义的类C语言中的标识符只能以字母或下划线开头)进行归类显示,例如:识别保留字:if、int、for、while、do、return、break、continue等,其他的都识别为标识符;常数为无符号整形数;运算符包括:+、-、*、/、=、>、<、>=、<=、!=等;分隔符包括:,、;、{、}、(、)等;4)、实现文件的读取操作,而不是将文本以字符串形式预存于程序中

3、。文本内容为待分析的类C语言程序。实用文案标准文档二、实验环境(实验设备)硬件:计算机软件:VisualC++6.0一、实验原理及内容1、实验内容:设计并实现一个词法分析器,实现对指定位置的类C语言源程序文本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。例如下面为一段C语言源程序:main(){int a,b;a=10;b=a+20;}要求输出如下:(2,’main’)(5,’(’)(5,’)’)(5,’)’)(5,’)’)(5,’)’)实用文案标准文档(5,’{’)

4、(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、实验代码:实验代码:#include#include#include#include#include#includestru

5、ctChar{//创建一个结构用于存贮关键字chara[15];};typedefstructCharCH;//定义关键字CHkeyWord[67]={"auto","break","case","cout","cin","char","const","continue","default","do","double","else","enum","endl","extern","float","for","goto","if","main","include","int","long","register",

6、"return","short","signed","sizeof","static","string","struct","switch","typedef","union","unsigned","void","stdio","while","cin","cout","catch","calss","ctype","stdlib","fstream","export","iostream",实用文案标准文档"false","friend","inline","mutable","namespace","ne

7、w","operator","private","protected","public","static_cast","template","this","throw","true","try","typename","using","virtual","asm"};//检测是否为数字,是返回true,否则返回falseboolIsDigit(charA){if(A>='0'&&A<='9')returntrue;elsereturnfalse;}//检测是否为字符,是则返回true,否则返回falsebool

8、IsLetter(charch){if((ch>='A'&&ch<='Z')

9、

10、(ch>='a'&&ch<='z'))returntrue;returnfalse;}//检测是否为分隔符,是则返回true,否则返回falseboolIsSeparator(charch){if(ch=='('

11、

12、ch==')'

13、

14、ch=='{'

15、

16、ch=='}'

17、

18、ch==';'

19、

20、ch==','

21、

22、c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。