编译原理实验报告(词法分析语法分析)

编译原理实验报告(词法分析语法分析)

ID:43869164

大小:167.02 KB

页数:36页

时间:2019-10-16

编译原理实验报告(词法分析语法分析)_第1页
编译原理实验报告(词法分析语法分析)_第2页
编译原理实验报告(词法分析语法分析)_第3页
编译原理实验报告(词法分析语法分析)_第4页
编译原理实验报告(词法分析语法分析)_第5页
资源描述:

《编译原理实验报告(词法分析语法分析)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、计算机专业类课程实验报告课程名称:编译原理学院:计算机科学与工程业:计算机科学与技术学生姓名:林怡学号:2012060020023指导教师:陈昆日期:2015年6月5日电孑科技丈学实验报告实验一一、实验名称:词法分析器的设计与实现二、实验学时:4三、实验内容和目的:实验内容:求n!的极小语言的源程序作为词法分析的输入程序,根据给定的文法对其进行词法分析并将单词符号与种别组成的二元式按指定格式输出到out.dyd文件中,同吋将词法错误输出到error.err文件屮。其中二元式文件out.dyd有如下要求:(1)二元式形式:单词符号u种别长度为16•个空於长度为2(2)每

2、行后加上■W..5OLNS0⑶文件结尾加上“uw...uEOFu25"出错文件error,err中错误信息格式如下:***LINE:行号uu错误性质实验目的:通过设计并实现一个词法分析器,了解和掌握词法分析程序设计的原理及相应的程序设计方法,同吋提高编程能力。四、实验原理:1、编译程序耍求对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序。像用口然语言书写的文章一样,源程序是由一系列的句子组成的,句子是由单词符号按一定的规则构成的,而单词符号又是由字符按一定规则构成,因此,源程序实际上是由满足程序语言

3、规范的字符按照一定的规则组合起来构成的一个字符串。2、词法分析的功能是从左到右逐个地扫描源程序字符串,按照词法规则识别岀单词符号作为输出,对识别过程中发现的词法错误,输出相关信息。3、单词符号是程序语言最基本的语法符号,为便于语法分析,通常将单词符号分为五类(标识符,基木字,常数,运算符,界符),而木次实验屮单词符号与其对应的种别如下图所示:单词符号与种别对照表单词符号种别单词符号种别单词符号种别begin1eud2integer3if4then5else6fiinction7read8write9标iU符10常数11=12••1314•15.・•=1617■18*1

4、9•^―•20(21)7?tartar•234、状态转换图是有限有向图,是设计词法分析器的有效工具。图中的节点代表状态,节点间的有向边代表状态之间的转换关系,有向边上标记的字符表示状态转换的条件。本实验中的状态转换图如下图所示:5、本程序所设计主要方法及作用如下:①intisletter(charc)判别字符c是否为字母②intisdigital(charc)判别字符c是否为数字③intmatch_reserve(char*p)匹配字符串p是否为保留字④voidmatch_symbol(constchar*p)匹配字符串p是否为标识符①voidmatch_double

5、_operator(char*p)匹配字符串p是否为双运算符②voidmatch_single_operator(char*p)匹配字符串p是否为单运算符③voidoutfileO将词法分析所得的二元式按固定格式写入文件out.dyd五、实验器材(设备、元器件)C语言+windows7+CodeBlocks+gcc六、实验步骤:1、将源程序保存到in.pas文件中;2、从in.pas文件中读取字符串保存到buf数组,若整个输入文件已读取完毕,程序结束;3、每次从buf数组屮读入-•个字符,若已读到buf最后一个字符,返冋第2步继续执行;3-a如果该字符是字母或数字将其

6、连接到temp字符串尾部,buf索引index加1,判断buflindex]是否为0,若为0说明temp字符串为一完整单词,跳到第4步执行;若不为0,继续执行第3步;3-b如果读入的不是字母/数字,首先判断并匹temp中是否已岀现保留字/标识符,如果没有,通过预读buf中的下一个字符来进一步判断temp屮存放的是单运算符还是双运算符或换行符,最终写入相应二元式,返冋第3步继续执行;4、判断temp字符串是否为保留字,若不是保留字,进一步判断它是标识符述是常量,最终生成相应二元式,返回第3步继续执行;【注】这里省略了对于非法字符的出错处理七、实验数据及结果分析:1、测试

7、程序如图,在测试程序中故意添加了一些词法错误如:将保留字写成begim常数lkkk,符号匸,用于检测本实验程序的查错能力;2、程序运行完毕,得到out.dyd文件,内容如图所示:►不抱磋盅[C:)►ProgramFiles►CodeBlocks►LexicalAnalysis►工具(T)蛰助(H)

8、out.dyd-记事本刻录新建文件表文件(F)编辑(E)格式(O)童看(V)帮助(H)名称binWobj「error.errh]function.h,tin.pasKbLexicalAnalysis.cbp__LexicalAnalysis.depend,

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

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

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