logo资料库

电子科技大学计算机学院编译原理实验报告.doc

第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
资料共44页,剩余部分请下载后查看
计算机专业类课程 实 验 报 告 课程名称:编译原理 学 专 院:计算机科学与工程学院 业:计算机科学与技术专业 学生姓名:戴一伟 学 号: 指导教师:陈昆 日 期: 2017 年 5 月 14 日 电子科技大学计算机学院实验中心
电 子 科 技 大 学 实 验 报 告 实验一 一、实验名称:词法分析器的设计与实现 二、实验学时:4 三、实验内容和目的: (一)实验内容: 1.源语言:求 n!的极小语言 2.输入输出:源程序*.pas 文件作为输入,经过自己编程实现的词法分析器进行处理, 生成二元式,保存到*.dyd 文件中,如下图所示。 (二)实验目的: 通过设计词法分析器的实验,使同学们了解和掌握词法分析程序设计的原理及相应的程 序设计方法,同时提高编程能力。 四、实验原理: (一) 结合“数据结构”进行分析: 1. 二元式文件*.dyd (1) 二元式形式:
分析:由输出二元式形式可知,使用 printf 输出可以很方便达到要求: (2) 每行后加一 分析:对输入文件中的换行符“\n”,要采取相应的策略: (3) 文件结尾加 分析:对于文件末尾的“EOF”,要采取相应的策略: 2. 错误信息文件:*.err (1) 错误信息格式 分析:设置出错处理的函数,并且需要记录错误行号、错误性质: (2) 注意:进入每一阶段, 首先打开 .err, 如果无错误, 则 .err 为空。 电子科技大学计算机学院实验中心
(二) 词法分析的实现方法——利用状态转换 分析:根据状态转化图,编写读到不同的内容时的状态转化函数,是设计词 法分析器的核心。 (三) 对“输入输出”文件的分析——文件相关操作 因为需要读写文件,并生成错误文件,涉及许多文件相关操作,通过相关函 数函数实现功能: 五、实验器材(设备、元器件) (一) 操作系统:Windows 8 Professional (二) 开发工具:Visual Studio 2015 (三) 编程语言:C
六、实验步骤: (一) 启动 Visual Studio 2015,新建一个项目 LxicalAnalyzer (二) 编写 LxicalAnalyzer.h 文件,声明项目将要用到的自定义函数: (三) 编写 LxicalAnalyzer.cpp 文件,根据“状态转化图”、“单词符号与种别对照表” 实现 LxicalAnalyzer.h 中声明的函数(详细代码附在实验报告最后); (四) 编写 main.cpp 文件,完成编码; (五) 根据给出的测试程序,编写输入文件 test.pas (六) 运行写好的词法分析器程序,并结合输出文件 test.err、test.dyd 进行调试; (七) 完成实验。 七、实验数据及结果分析: (一) 输入文件 test.pas 电子科技大学计算机学院实验中心
(二) 执行词法分析器程序 (三) 检查输出文件 test.err 因为输入文件中测试程序没有错误,所以文件为空: (四) 检查输出文件 test.dyd 检查可知,输出文件内容为符合实验要求的二元式: (五) 修改输入文件,在输入文件中添加错误
(六) 再次执行词法分析器程序 (七) 重新检查输出文件 test.err 可见,本词法分析器成功实现检查多处词法错误: 八、实验结论、心得体会和改进建议: (一) 实验结论 通过编码与反复调试,成功完成了词法分析器的设计与实现,能够对给出文 法的测试程序进行正确的词法分析,按要求输出二元式的*.dyd 文件。同时,也 可以检测出所给源程序中的多处词法错误。 (二) 心得体会 1. 对于这种需要多次重复同一操作的实验,将相应的操作写成函数,可以方便 编码,减少错误和代码行数。 2. 第一次编码忽略了状态转化之后的回退工作,导致 bug 的出现,以后需要吸 取经验教训。 3. 尽量在第一次编写程序时,写出较多的提示信息和注释,便于发现 bug 后的 调试。 (三) 改进建议 上课使用的教材 P134 页“第六章 词法分析”中的内容对本实验的完成有很 大帮助,认真阅读后思路更加清晰。 *********为便于老师评阅报告,两次实验代码都添加底纹后放在在文档最后部分********* 电子科技大学计算机学院实验中心
电 子 科 技 大 学 实 验 报 告 实验二 一、实验名称:递归下降分析器的设计与实现 二、实验学时:4 三、实验内容和目的: (一)实验内容: 根据给定的方法,编写相应的递归下降的语法分析程序,实现对词法分析后的单词序列 的语法检查和程序结构的分析,生成相应的变量名表和过程名表,并将编译中语法检查出来 的错误写入相应的文件。 语法错分类: (1)缺少符号错; (2)符号匹配错; (3)符号无定义或重复定义。 (二)实验目的: 通过设计递归下降分析器的设计与实现实验,使同学们掌握自上而下的递归分析法的语 法分析原理和程序设计方法。 四、实验原理: (一)语法分析的定义和功能 语法分析是根据语法规则,将单词符号构成各类语法单位,并进行语法检查。 在本实验中,对源程序经过词法分析后转换成的单词流按方法规则进行判断,对能 构成正确句子的单词流,给出相应的语法树;对不能构成正确句子的单词流判断其语法 错误并做出相应处理。
分享到:
收藏