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

更新时间:2024-06-22 23:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

实验名称:

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

实验目的:

本课程设计实验项目的目标是通过实际构造一个完整的编译器,加深对编译器实现原理的理解,了解完整编译系统的构造方法。

实验类型:

验证型、提高型

实验学时:

50学时

实验描述:

根据各难度的题目的说明,选择一个难度等级,将获得一份随机分配的该难度等级的文法。根据获取的文法实现编译器: 1. 难度等级:很简单 目标:完成编译器及解释执行程序,解释执行程序对编译器产生的PCODE能解释执行,产生运行结果

文法:PL/0文法(与教材上的文法略有差别) 优化:无

中间代码:无 目标码:PCODE 最高分:65

2. 难度等级:较简单

目标:完成编译器及解释执行程序,解释执行程序对编译器产生的PCODE能解释执行,产生运行结果 文法:C0文法 优化:无 中间代码:无 目标码:PCODE 最高分:70 3. 难度等级:适中

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

文法:扩充C0或扩充PL/0文法 优化:无 中间代码:无 目标码:PCODE 最高分:80

1

4. 难度等级:较难

目标:实现编译器,生成X86汇编 文法: C0文法 优化:无

中间代码:四元式 目标码:X86汇编 最高分:89 5. 难度等级:很难

目标:实现编译器,生成X86汇编或MIPS汇编 文法: C0文法

优化:基本块内部的公共子表达式删除 全局寄存器分配(着色算法)

基本的数据流分析(变量的活性分析,为全局寄存器分配准备)

中间代码:四元式

目标码:X86汇编或MIPS汇编 最高分:100

实验要求:

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

2. 采用递归子程序法进行语法分析,除了难度等级为“很难”的题目允许利用词法分析和语法分析的自动生成工具外,其他难度等级的所有代码要求手工编程实现 3. 可以有图形用户界面 4. 完成以下文档

1) 需求说明(应给出语法或语法图)

2) 详细设计(应给出程序结构,各类、方法(函数)的功能描述和调用依赖关系,符号表结构,运行栈结构,出错信息编号及描述等)

3) 操作说明(包括程序安装、环境配置;程序启动后,编译、运行、结果显示等操作的说明) 4) 测试报告(提供至少10个测试程序的源程序及测试结果(其中5个有错误的文件),如有扩充,还需另外提供5个测试程序)

5) 总结感想( 完成本实验项目后的感想及建议) 5. 用C/C++或Java语言实现 6. 开发环境(Win2K, WinXP) Eclipse 3.2,JDK1.5 Visual Studio 2003

7. 提交完整的项目/工程文件,在集成开发环境下可编译运行,提交能直接运行的程序包

8. 目录命名及组织

每份作业组织为如下三个文件夹: 源代码 可执行文件 文档

提交时打包为一个文件,按如下规则命名: 学号_姓名[_申优][_MIPS].rar(如36060501_×××_申优.rar 36060501_×××.rar 36060501_×××_MIPS.rar)

考核:

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

2

2. 将对每份作业的源程序进行编译,编译不通过不能得分;不能正常运行,不能得分 3. 每份作业将用自己提交的测试程序和老师准备的5个测试程序进行测试,根据通过的测试点给分,并能根据要求修改测试程序进行测试 4. 回答老师的现场提问 5. 申优的同学参加申优答辩

6. 若发现程序或文档雷同,按作弊处理

7. 文档所占比例20%,程序及运行状况所占比例80%

作业获取和提交

1. 访问教学辅助平台,以学号登录,获取和提交作业。

2. 每人最多能两次获取题目(不同难度各允许一次),以最后一次为准(不保留前一次的记录,不能返回到前一次获取的结果),必须按最后一次获取的题目完成作业。 3. 请在规定的时间内上网提交作业,逾期将关闭提交通道。在时间允许范围内可多次提交作业,只保留最后一次。

参考资料

1. 《编译原理及编译程序构造》第十四章 第十五章 附录A 附录B 2. 《编译原理课程设计》,王雷 刘志诚 周晶编著,机械工业出版社

3. Compilers: Principles, Techniques, and Tools. By Alfred V. AHO, Ravi SETHI and Jeffrey D. ULLMAN

中文版:编译原理,李建中,姜守旭译,机械工业出版社

4. Advanced Compiler Design and Implementation. By Steven S. Muchnick. 中文版:高级编译器设计与实现,赵克佳,沈志宇译,机械工业出版社

其他说明

1. 首次登录请修改密码,务必填写个人联系信息。

2. 直接生成机器码的可以获得加分。

3. 难度等级为“很难”的作业中,可以选择生成MIPS汇编,选择生成MIPS汇编码

的同学请在需求和提交作业的文件名中给予说明和标注。

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

实验指南:

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

文档模板:

模板一(附录一) 模板二(附录二)

3

(附录一)

《编译技术》课程设计

文 档

学号:____________________

姓名:____________________

年 月 日

4

一.需求说明

1.文法说明

【说明获取的文法,以及对文法的改写和扩充】

2.语法图

【画出每种语法成分的语法图】

3.P代码指令

【描述采用的P代码指令系统,对每条指令进行说明】

二.详细设计

1.程序结构

【从总体上描述程序的结构,文字或图示均可】

2.类/方法/函数功能

【描述各类/方法或函数的功能,以及关键算法】

3.调用依赖关系

【说明各类之间的关系,方法/函数之间的调用关系】

4.符号表结构

【图示和文字说明符号表的结构】

5.运行栈结构

5

【图示和文字说明运行栈的结构】

6.错误信息描述

【说明出错处理方案,以及错误信息的编号和含义】

三.操作说明

1.运行环境

【说明搭建运行环境的步骤】

2.操作步骤

【详细说明操作步骤或以图示说明】

四.测试报告

1.测试程序及测试结果

【给出提供的测试程序以及每个程序的测试结果】

2.测试结果分析

【说明测试程序对语法成分的覆盖情况】

五.总结感想

【说明在完成课程设计中的收获、认识和感想】

6

(附录二)

《编译技术》课程设计

文 档

学号:____________________

姓名:____________________

7

年 月 日

一.需求说明

【说明实验的要求及实现方案等】

二.详细设计

1.程序结构

【从总体上描述程序的结构,文字或图示均可】

2.类/方法/函数功能

【描述各类/方法或函数的功能,以及关键算法】

3.调用依赖关系

【说明各类之间的关系,方法/函数之间的调用关系】

三.操作说明

1.运行环境

【说明搭建运行环境的步骤】

2.操作步骤

【详细说明操作步骤或以图示说明】

四.测试报告

8

1.测试程序及测试结果

【给出提供的测试程序以及每个程序的测试结果】

2.测试结果分析

【说明测试程序对语法成分的覆盖情况】

五.总结感想

【说明在完成课程设计中的收获、认识和感想】

9

本文来源:https://www.bwwdw.com/article/02f3.html

Top