《编译原理词法分析器的构造》由会员分享,可在线阅读,更多相关《编译原理词法分析器的构造(11页珍藏版)》请在人人文库网上搜索。
1、实 验 报 告(2014 / 2015 学年 第 一 学期)课程名称编译原理实验名称词法分析器的构造实验时间2015年4月10日指导单位南京邮电大学指导教师蒋凌云学生姓名孙雪禄班级学号B学院(系)计算机学院、软件学院专 业软件工程(服务外包)实 验 报 告实验名称词法分析器的构造指导教师蒋凌云实验类型上机实验实验学时4实验时间2015.4.10一、 实验目的和要求设计、编制、调试一个词法分析程序,对单词进行识别和编码,加深对词法分析原理的理解。二、实验环境(实验设备)Microsoft Visual Stdio 2010二、 实验原理及内容1、实验内容:设计并实现一个词法分析器,实现对指定位置。
2、的类C语言源程序文本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。例如下面为一段C语言源程序:main()int a,b;a = 10;b = a + 20;要求输出如下(可以自行分类,分类原则请在报告中说明)(1,main)(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、实验要求:(1)、允许用户自己输入源程序并保存为文件(2)、系统能够输出经过预处理后的源程序(去掉注释、换行、空格等)(3)、能够将。
3、该源程序中所有的单词根据其所属类型(整数、保留字、运算符、标识符等。定义的类C语言中的标识符只能以字母或下划线开头)进行归类显示,例如:识别保留字:if、int、for、while、do、return、break、continue等,其他的都识别为标识符;常数为无符号整形数;运算符包括:+、-、*、/、=、=、,:=字母|字母|数字031字母非数字或字母字母或数字数字数字非数字+-*/=:=数字|数字:=+|-|*|=:=,|;|(|)|保留字是一种特殊的标识符,不独立写出其文法031字母非数字或字母字母或数字数字数字非数字+-*/=a&A=A&A=0&A#include #include u。
4、sing namespace std;bool LETTER(char A) if(A=a&A=A&A=0&A=A&A=a&A|CHAR=CHAR;return 0;测试结果:文件存储在code.txt文件中四、实验小结(包括问题和解决方法、心得体会、意见与建议等)这次实验让我们更加了解词法分析程序的原理,熟悉了书上词法分析程序构建的步骤,也强化了我们的编程能力,比如说文件读写操作。在我的程序中,思考了很久也没能实现”=”和”!=”的词法分析。拿”=”举例来说,CHAR读了”之后,进行判断如果是”=”就输出“(4,=)”。但是如果接下来的字符不是”=”,就需要判断这个CHAE字符是否为字母、数字、分隔符、其他运算符,这样就会和之前的判断进入一个死循环(因为在保留字判断的时候也要多读一个字符,判断为否定后要比较这个字符是否为数字,分隔符,运算符)。总的来说就是我不能将文件指针前移,导致这里写不出来,这是这次实验中的瑕疵。 五、指导教师评语成 绩批阅人日 期。