《编译原理》实验与课程设计任务书
2017级 计算机科学与技术学院各专业
一、实验概述
题目:XX语言编译器设计与实现(请为自己的编译器命名)
1.项目内容
自定义一个语言的文法规则,也可以采用C语言(或C++语言或C#语言或JAVA语言)部分关键语法规则。构造一个高级语言的编译程序甚至集成开发环境(IDE)。
如果定义面向对象的语言,推荐选用教材中的面向对象语言decaf。
2. 任务总体要求
收集与阅读相关文献资料,确定采用的技术线路,设计系统实现方案,完成系统实现;提交标准格式打印的《编译原理实验报告》和包括《编译原理实验报告》、编译器源程序、编译器目标程序、README和测试模拟数据文件之光盘。实验报告封面和报告内容目录采用统一格式,各小节具体划分自己根据实际情况确定。
3. 源语言的定义
源语言要求至少包含的语言成分如下:
l 数据类型至少包括char类型、int类型和float类型,字符串作为可选项;
l 基本运算至少包括算术运算、比较运算、自增自减运算和复合赋值运算;
l 控制语句至少包括if语句、while语句和break、continue语句(不要求goto语句),另外for、switch语句作为可选项;
l 多维数组。另外结构作为可选项;
l 语言支持行注释与块注释,不要求支持编译预处理命令和多文件程序。
二、实验内容及要求
1. 实验一:词法语法分析器的设计与实现
建议使用词法语法生成工具如:LEX/FLEX ,YACC/BISON等专业工具完成。要求:(1)以二元组(单词种类码,自身值)序列的形式显示单词序列(2)显示抽象语法树。
注:要求显示的2个功能仅适用于实验一,完成实验检查后去掉这两个显示。可通过条件编译的方式或自定义某种设置的方式打开和关闭。
2. 实验二:符号表管和语义检查
设计符号表数据结构和关键管理功能。动态展现符号表变化过程。无论语法分析使用工具还是自己设计,都必须对符号表进行设计和管理;完成相关属性计算并进行静态语义检查。同时能完成多种语义错误的检查(最低要求15中以上的静态语义错误)。
注:要求显示符号表的功能仅适合程序调试和实验检查使用,可通过条件编译的方式或自定义某种设置的方式打开和关闭。
3. 实验三:中间代码生成和优化
定义中间代码的形式,生成中间代码并显示。能用DAG进行局部优化中间代码。
注:要求显示中间代码的功能仅适合程序调试和实验检查使用,可通过条件编译的方式或自定义某种设置的方式打开和关闭。
4. 实验四:目标代码生成
在前三个实验的基础上实现目标代码生成。也可以使用工具如LLVM来生成目标代码,这个要求自学LLVM教程查阅LLVM文档,(http://llvm.org/docs/tutorial/index.html)。
为了方便完成全部阶段的实验任务,在后续阶段中可适当做些限制,比如目标代码生成,可只考虑支持整型,这个在实验报告中说明清楚即可。
目标代码阶段的指令集可以选择X86或Mips,强烈推荐自己在组成原理课程上实现CPU的指令集,最终编译成机器码在自己的CPU上运行。
三、评分标准
参照下列完成情况进行评定分数。
要求完成全部四个实验并完成实验报告,四个实验和实验报告对应课程成绩的权重分别为20%、20%、20%、20%(其中优化5%)、20%。
特别提示:
每完成一个实验,准备好测试用例及时在课堂上给老师检查。最后课程成绩的评定和各个实验的完成时间、完成质量挂钩。为了提高课堂上的检查效率,希望课下多花些时间完成实验任务。
为了保存阶段成果,每个实验完成检查后固定版本号保存,为实验报告的撰写保留现场。每个实验检查时只能包括本实验的内容。例如,如果检查实验一时发现项目里有实验二甚至实验三的内容,将作为抄袭拷贝的依据。
四、实验报告内容
实验报告要充分展示你完成各阶段任务采用的技术手段,有关算法思想的描述,主要包括如下几个部分。
(1) 语言的定义,以及有关语言特点的文字描述。
(2)词法分析、语法分析。
(3)语义分析。
(4)中间代码的生成。
(5)目标代码的生成。
(6) 总结,这部分主要描述在实现过程中,遇到了一些什么技术问题,如何解决以及自己工作的亮点的等等,属于技术层面的总结。
(7) 参考文献
有关报告的文字、段落设置、表格和插图规范,参考校毕业设计论文规范要求(和数据结构等课程要求一致)。报告中不需要打印源代码,源代码只需要提交电子档。报告封面统一规定如下。
课 程 实 验 报 告
课程名称: 编 译 原 理 实 验
专业班级:
学 号:
姓 名:
指导教师:
报告日期: 2020年 X月 X 日
计算机科学与技术学院
1概述
2 XX语言定义
3实验一 词法语法分析器
4实验二 符号表管理与语义计算
5实验三 中间代码生成与优化
6实验四 目标代码生成
7总结
7.1 实验完成情况
明确说明自己对实验的完成情况,包括基本内容和可选内容,可选内容作为加分项依据。
7.2 实验感想
7.3 展望