《编译技术》课程设计大纲及指导书

《编译技术》课程设计大纲及指导书 实验名称:

根据给定的文法完成一个小型编译器。 实验目的:

本课程设计实验项目的目标是通过实际构造一个完整的编译器,加深对编译器实现原理的理解,了解完整编译系统的构造方法。矚慫润厲钐瘗睞枥庑赖賃軔。 实验类型: 验证型、提高型 实验学时: 50学时 实验描述:

根据各难度的题目的说明,选择一个难度等级,将获得一份随机分配的该难度等级的文法。根据获取的文法实现编译器:聞創沟燴鐺險爱氇谴净祸測。 难度等级:低

目标:完成编译器及解释执行程序,解释执行程序对编译器产生的PCODE能解释执行,产生运行结果

文法:PL/0文法(与教材上的文法略有差别) 优化:无 中间代码:无 目标码:PCODE 最高分:65 难度等级:中

目标:完成编译器及解释执行程序,解释执行程序对编译器产生的PCODE能解释执行,产生运行结果

文法:扩充C0文法 优化:无 中间代码:无 目标码:PCODE 最高分:85 难度等级:高

目标:实现编译器,生成X86汇编或MIPS汇编 文法:扩充C0文法(无实型)

优化:基本块内部的公共子表达式删除(DAG图); 全局寄存器分配(引用计数或着色算法);

数据流分析(通过活跃变量分析,或利用定义-使用链建网等方法建立冲突图);残骛楼諍锩瀨濟溆塹籟婭骒。 其它优化自选;

代码生成时合理利用临时寄存器(临时寄存器池),并能生成较高质量的目标代码; 中间代码:四元式

目标码:32位X86汇编或MIPS汇编(任选一) 最高分:100 实验要求:

1. 每人独立完成一份作业

2. 采用递归子程序法进行语法分析,所有代码要求手工编程实现

1 / 4

3. 可以有图形用户界面

4. 完成一份文档,包括以下内容:

1) 需求说明:包括文法及其分析说明、目标代码说明、优化方案说明(高)

2) 详细设计:包括程序结构、类、方法/函数的功能描述和调用依赖关系、关键算法、符号表管理方案、存储分配方案、解释执行程序结构(低中) 、解释执行过程(低中)、四元式设计(高)、优化算法设计(高) 、出错处理方案酽锕极額閉镇桧猪訣锥顧荭。 3) 操作说明:包括程序安装、环境配置;程序启动后,编译、运行、结果显示等操作的说明

4) 测试报告:包括至少10个测试程序的源程序及测试结果(无需截屏)(其中5个是有错误的文件,如有扩充,还需另外提供5个测试程序,扩充后的语言必须包含原来的语言)、测试结果分析彈贸摄尔霁毙攬砖卤庑诒尔。 5) 总结感想:完成本实验项目后的感想及建议 5. 用C/C++语言实现 6. 开发环境

Visual Studio或CodeBlocks

7. 提交完整的项目/工程文件,在集成开发环境下可编译运行 8. 目录命名及组织

阶段成果以”学号_姓名_任务说明”命名提交的文档; 最终成果组织为如下三个文件夹: 源代码 文档 测试程序

提交时打包为一个zip文件,按如下规则命名: 学号_姓名[_MIPS][_申优].zip(如12061001_×××_申优.zip ,12061001_×××.zip,12061001_×××_MIPS_申优.zip)謀荞抟箧飆鐸怼类蒋薔點鉍。 考核:

1. 检查文档内容是否齐全、正确。

2. 将对每份作业的源程序进行编译,编译不通过不能得分;不能正常运行,不能得分。 3. 每份作业将用自己提交的测试程序和老师准备的5个测试程序进行测试,根据通过的测试点给分,并能根据要求修改测试程序进行测试。厦礴恳蹒骈時盡继價骚卺癩。 4. 回答老师的现场提问。

5. 申优的同学交一篇文章,以指导如何完成课程设计为主要内容,着重说明在课程设计中遇到的各个困难点及所采用的解决方案,要求内容具体,阐述清楚,题目和内容组织自定。注意,文章与前面要求提交的技术文档不同。提交作业的同时提交文章。茕桢广鳓鯡选块网羈泪镀齐。 6. 若发现程序或文档雷同,按作弊处理。

7. 文档所占比例20%,程序及运行状况所占比例80%。 作业获取和提交

1. 访问教学辅助平台,以学号登录,获取和提交作业。 2. 每人最多能三次获取题目(同一难度最多允许两次),以最后一次为准(不保留前一次的记录,不能返回到前一次获取的结果),必须按最后一次获取的题目完成作业。

3. 请在规定的时间内上网提交作业,逾期将关闭提交通道。在时间允许范围内可多次提交作业,只保留最后一次。鹅娅尽損鹌惨歷茏鴛賴縈诘。 参考资料

1. 《编译原理及编译程序构造》第十四章第十五章附录A 附录B

2. Compilers: Principles, Techniques, and Tools. By Alfred V. AHO, Ravi SETHI and Jeffrey

2 / 4

D. ULLMAN籟丛妈羥为贍偾蛏练淨槠挞。 3.中文版:编译原理,李建中,姜守旭译,机械工业出版社

编译原理,赵建华,郑滔,戴新宇译,机械工业出版社

4. Advanced Compiler Design and Implementation. By Steven S. Muchnick.預頌圣鉉儐歲龈讶骅籴買闥。 5.中文版:高级编译器设计与实现,赵克佳,沈志宇译,机械工业出版社 其他说明

1. 首次登录请修改密码,务必填写个人联系信息。 2. 直接生成机器码的可以获得加分。

3. 其他优化,例如复制传播、循环强度削弱等,可以自行选作,成功完成都有加分。 4. 只有难度为“高”的作业才能申优。 实验指南:

1. 由于要采用递归子程序法进行语法分析,对不满足条件的文法要进行等价改写 2. 对于扩充的语法成分的语义处理可参考教材第十章和PASCAL-S源代码 文档模板: 见附录 (附录)

《编译技术》课程设计文 档学号:____________________ 姓名:____________________ 年 月 日 一.需求说明 1.文法说明

【说明获取的文法、对文法的改写和扩充,对文法的解读】 2.目标代码说明

【说明生成的目标代码】 3. 优化方案*

【说明需要完成的优化方案及其要求】 二.详细设计

【应包括但不限于以下内容】 1.程序结构

【从总体上描述程序的结构,文字或图示均可】 2.类/方法/函数功能

【描述各类/方法或函数的功能,以及关键算法】 3.调用依赖关系

【说明各类之间的关系,方法/函数之间的调用关系】 4.符号表管理方案

【说明符号表的数据结构、管理算法】 5.存储分配方案

【说明运行时的存储组织及管理方案,运行栈结构*】 6. 解释执行程序*

【说明解释执行程序的数据结构,关键算法,及解释执行过程】 7. 四元式设计*

【对采用的四元式进行详细说明】

3 / 4

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4