




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学实验报告学生名称:父亲学号: 2222222222222指导教师:陈昆实验地点:科研楼A-506实验时间: 2017-04-28一、实验项目名称:字句分析器的设计与实现二、实验学时: 4学时三、实验原理1 .编译器要求分析和合成用高级语言写的源程序,生成目标程序。 字句解析是第一次解析源程序,实现字句解析的程序是字句解析程序或字句解析器,也称为扫描仪。2 .词法分析的功能是从左到右逐个扫描源程序的字符串,根据词法规则识别和输出单词符号,并针对在识别过程中发现的词法错误输出相关错误信息。3 .识别的单词采用某种中间表现形式,通常一个单词用一个二项式表示:(单词类别,单词的属性)。4
2、.状态迁移图简称迁移图,是有限有向图,是设计词法分析器的有效工具。四、实验目的通过这个实验,学生们自己设计字句分析器,使学生们能更好地掌握字句分析程序的设计原理和相应的程序设计方法,在对编译该课程也能更深入地理解的同时,也能训练编程能力。5、实验内容实现n! 的极小语言词法分析程序,作为输出返回二项式。六、实验器材(设备、零件)1 .操作系统: windows XP2 .开发工具: VS2013七、实验程序(在VS2013中创建工程(2)制作输入输出、初始化、错误处理等函数(3)制作对应的单词符号和种类对照表,根据状态迁移图制作对应的处理函数(4)执行代码进行调试(5)制作测试所需的输入文件。
3、 pas文件(6)生成dyd文件。8 .实验数据和结果分析编码完成后,将测试程序放置在debug文件夹中,如下图所示如果代码成功运行,则生成与调试文件夹相对应的exe,在cmd上运行时,调试文件夹生成后缀为dyd和err的文件,dyd如下图所示打开由于没有错误,对应的test1.err文件为空对源程序进行词法分析,如果错误信息和行数错误,可以生成二项式文件。九、实验结论词法分析器的功能是,从左到右逐个扫描源程序的字符串,根据词法规则识别和输出单词符号,针对在识别过程中发现的词法错误,输出相关的错误信息。十、总结和体会通过这次实验,词法分析程序的设计在锻炼自己的编程能力的同时,加深了对词法分析器
4、的理解、把握和编译这一课的理解,提高了自己的本领,在编码过程中也遇到了很多问题。 例如,如何解决发生的文件的后端定位等,我的编码能力在这次实验中取得了一定的提高。十一、本实验过程、方法和手段的改进建议首先理解字句分析器的功能和输入输出形式,熟练地掌握状态迁移图。报告分数:指导教师签名:实验的参考源代码如下所示#include#include#include#define MAX_COUNT 2048#define ILLEGAL_CHAR_ERR 1#define UNKNOWN_OPERATOR_ERR 2char getnbc ()举止char ch;ch=getchar ();while
5、 (1)举止if (ch=r | ch=t | ch=)举止ch=getchar ();以下else举止break;以下以下返回信道;以下布尔莱特(char character )举止if (字符=ar acter=z )| (字符=ar acter=z ) )返回真;else返回假;以下布尔数字(char character )举止if (字符=0字符=9)返回真;else返回假;以下void retract(char character )举止ungetc (字符,stdin )角色=空值;以下int reserve(char* token )举止if (strcmp (令牌, begin
6、)=0)返回1;else if (strcmp (令牌,结束 )=0)返回2;else if (strcmp (令牌, integer)=0)返回3;else if (strcmp (令牌, if)=0)返回4;else if (strcmp ( then )=0)返回5;else if (strcmp (令牌, else)=0)返回6;else if (strcmp (令牌, function)=0)返回7;else if (strcmp (令牌, read)=0)返回8;else if (strcmp (令牌, write)=0)返回9;else返回0;以下int symbol ()举止返
7、回10;以下int constant ()举止返回11;以下void输出(const char * token,int kindNum )举止打印( s- n ,令牌,kindNum );以下bool error(int lineNum,int errNum )举止char* errInfo;交换机(错误)举止case ILLEGAL_CHAR_ERR:errInfo=非字母字符;break;case UNKNOWN_OPERATOR_ERR:errInfo=未知运算符;break;默认:errInfo=未知错误;以下PS (PS, *line:%d%sn ,lineNum,errInfo)=
8、0)返回真;else返回假;以下bool LexAnalyze ()举止静态线性=1;char character;char token17=;character=getnbc ();交换机(字符)。举止case n:输出( eoln ,24 );线性数;break;case EOF:输出( eof ,25 );返回假;case a:case b:case c:case d:case e:case f:case g:case h:case i:case j:case k:case l:case m:case n:case o:case p:case q:case r:case s:case t
9、:case u:case v:case w:case x:case y:case z:case A:case B:case C:case D:case E:case F:case G:case H:case I:case J:case K:case L:case M:case N:case O:case P:case Q:case R:case S:case T:case U:case V:case W:case X:case Y:case Z:while (letter (character )| digit (character ) )举止char s2= character ;strca
10、t (令牌,s )character=getchar ();以下retract (字符)int num;num=reserve(token )PS (PS!=0)输出(令牌,数字)else举止PPS;val=symbol ();输出(令牌,val )以下break;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:while (数字(字符) )举止char s2= character ;strcat (令牌,s )character=getchar ();以下retract (字符)PPS;val=con
11、stant ();输出(令牌,val )break;case=:输出(=,12 );break;case :character=getchar ();if (字符=)输出( ,13 );else if (字符=)输出(=, 14 );else举止retract (字符)output ( , 15 )以下break;case :character=getchar ();if (字符=)输出(=, 16 );else举止retract (字符)输出( ,17 );以下break;case -:输出(-,18 );break;case *:输出( * ,19 );break;case :charac
12、ter=getchar ();if (字符=)输出( 3360= 20 );elseerror(lineNum,2) /输出“未知运算符”错误break;case (: )输出( (,21 );break;case ):output ( )、22;break;case :output (; ),23 )break;default:error(lineNum,1 )以下返回真;以下void getPath(char* in,char* out )举止char* namename=strrchr(in, );PS (名字!=NULL )strncpy (输出,输入,输入)-strlen (名称) 1;elsestrcpy (输出, );以下void getFilename(char* in,char* out )举止char* fullName;char *扩展;全名=strrchr (in, );扩展=strrchr (in,);PS (全名!=NULL )strncpy(out,fullName 1,strlen (full name )-1-strlen (extension ) );elsestrncpy (输出,输入,输入)-strlen (扩展);以下bool ini
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生在线学习平台
- 江苏省安全文明施工措施费
- 项目进度汇报及协调通知
- 跨部门协作会议纪要与行动计划
- 高效会议管理技巧与实践指南
- 台风应急预案演练方案
- 项目预算控制表模板(财务部门)
- 可持续发展战略实践分享
- 电子交易系统操作指南
- 办公室职员健康促进措施
- 【精选】方剂学解表剂练习题
- 《人卫版第九版内科学心力衰竭》课件PPT
- 中药热盐包热熨讲稿
- 目视检测VT报告
- 四川省中小流域暴雨洪水计算
- 水泥熟料岩相分析
- 杂诗十二首其二陶渊明
- 第五届大广赛获奖作品
- 《广告摄影》课件第五讲 食品广告拍摄与后期制作
- (三起点)pep人教版五年级英语下学期Unit2单元课件全套
- Brother-TC-S2A机器操作资料课件
评论
0/150
提交评论