- 17
- 0
- 约2.55万字
- 约 36页
- 2017-09-02 发布于浙江
- 举报
编译原理实验报告词法分析语法分析
计算机专业类课程
实验报告 课程名称:编译原理
学 院:计算机科学与工程
专 业:计算机科学与技术
学生姓名:林怡
学 号:2012060020023
指导教师:陈昆 日 期: 2015年6月5日 电 子 科 技 大 学
实 验 报 告
实验一
实验名称:词法分析器的设计与实现
实验学时:4
实验内容和目的:
实验内容:
求n!的极小语言的源程序作为词法分析的输入程序,根据给定的文法对其进行词法分析并将单词符号与种别组成的二元式按指定格式输出到out.dyd文件中,同时将词法错误输出到error.err文件中。
其中二元式文件out.dyd 有如下要求:
(1)二元式形式:
单词符号(种别
(2)每行后加上
“(((...(EOLN(24”
(3)文件结尾加上
“(((...(EOF(25”
出错文件error.err中错误信息格式如下:
***LINE:行号((错误性质
实验目的:
通过设计并实现一个词法分析器,了解和掌握词法分析程序设计的原理及相应的程序设计方法,同时提高编程能力。
实验原理:
1、编译程序要求对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序。像用自然语言书写的文章一样,源程序是由一系列的句子组成的,句子是由单词符号按一定的规则构成的,而单词符号又是由字符按一定规则构成,因此,源程序实际上是由满足程序语言规范的字符按照一定的规则组合起来构成的一个字符串。
2、词法分析的功能是从左到右逐个地扫描源程序字符串,按照词法规则识别出
单词符号作为输出,对识别过程中发现的词法错误,输出相关信息。
3、单词符号是程序语言最基本的语法符号,为便于语法分析,通常将单词符号分为五类(标识符,基本字,常数,运算符,界符),而本次实验中单词符号与其对应的种别如下图所示:
4、状态转换图是有限有向图,是设计词法分析器的有效工具。图中的节点代表状态,节点间的有向边代表状态之间的转换关系,有向边上标记的字符表示状态转换的条件。本实验中的状态转换图如下图所示:
5、本程序所设计主要方法及作用如下:
① int isletter(char c) 判别字符c是否为字母
② int isdigital(char c) 判别字符c是否为数字
③ int match_reserve(char *p) 匹配字符串p是否为保留字
④ void match_symbol(const char *p) 匹配字符串p是否为标识符
⑤ void match_double_operator(char *p) 匹配字符串p是否为双运算符
⑥ void match_single_operator(char *p) 匹配字符串p是否为单运算符
⑦ void outfile() 将词法分析所得的二元式按固定格式写入文件out.dyd
实验器材(设备、元器件)
C语言+windows7+CodeBlocks+gcc
实验步骤:
1、将源程序保存到in.pas文件中;
2、从in.pas文件中读取字符串保存到buf数组,若整个输入文件已读取完毕,程序结束;
3、每次从buf数组中读入一个字符,若已读到buf最后一个字符,返回第2步继续执行;
3-a 如果该字符是字母或数字将其连接到temp字符串尾部,buf索引index加1,判断buf[index]是否为0,若为0说明temp字符串为一完整单词,跳到第4步执行;若不为0,继续执行第3步;
3-b 如果读入的不是字母/数字,首先判断并匹配temp中是否已出现保留字/标识符,如果没有,通过预读buf中的下一个字符来进一步判断temp中存放的是单运算符还是双运算符或换行符,最终写入相应二元式,返回第3步继续执行;
4、判断temp字符串是否为保留字,若不是保留字,进一步判断它是标识符还是常量,最终生成相应二元式,返回第3步继续执行;
【注】 这里省略了对于非法字符的出错处理
实验数据及结果分析:
测试程序如图,在测试程序中故意添加了一些词法错误如:将保留字写成beg in,常数1kkk,符号 !=,用于检测本实验程序的查错能力;
程序运行完毕,得到out.dyd文件,内容如图所示:
报错文件error.err内容如图:
由上图可以看出,本词法分析程序,可以识别部分非法的常数以及字母表以外的非法字符,但对于将begin写成beg in这一类的词法错误,并未做处理,而是将其放到语法分析的部分来处理。
实验结论、心得体会和改进
您可能关注的文档
最近下载
- 2025至2030中国有机冷冻蔬菜业行业项目调研及市场前景预测评估报告.docx
- 光宝ISA-7X标准泛用型伺服系统技术手册.pdf
- 大型羊场及配套沼气建设项目可行性研究报告书.doc VIP
- 2022-2023学年八年级英语下学期期末考点大串讲(牛津译林版):八年级英语下学期期末考试02(宿迁卷).pdf VIP
- 高中英语必背3500单词表(完整版).pdf VIP
- 催收评分技术及其在个人信贷催收管理中的应用.pdf VIP
- 土木工程测量-岳建平第1章绪论资料.ppt VIP
- 电磁场仿真软件:CST Microwave Studio二次开发_(6).材料属性设置.docx VIP
- 浙江省金华市十校联考2025-2026学年第一学期期末质量检测高一英语试题含答案.pdf
- 电磁仿真软件:CST Microwave Studio二次开发_(8).高级脚本应用:电磁建模与求解.docx VIP
原创力文档

文档评论(0)