北航编译大作业要求

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“编译技术”是计算机软件学科的一门核心专业必修课程,是学生了解高级程序设计语言原理和编译相关技术的基础课,编译系统是学生接触到的第一个完整的软件系统,本课程在教学中具有重要地位。根据北航计算机学院的培养定位,要求学生既要掌握有关编译的经典基础理论,又要学会运用先进的软件开发技术构造实际编译系统的方法,因此这是一门理论和实践要求都很高的课程,也是学生在本科学习阶段培养动手能力的一个非常重要的环节。

课程划分为理论和实践(课程设计)两个部分,理论部分进行闭卷考试,实践部分要求学生独立完成课程设计题目,提交课程设计文档和程序源代码,并进行现场演示考核。通过理论部分的学习,让学生了解:1)高级程序设计语言原理和相关概念;2)编译程序的构造和相关技术。同时,通过本课程让学生掌握软件领域重要的程序(模型)等价转换技术;程序(模型)优化技术。实践部分是通过独立设计和开发一个小型编译系统,让学生:1)掌握编译程序的主要技术和算法;2)体验一个比较完整的软件系统的设计、开发、测试过程;3)结合软件工程课程,规范化文档,自己走过一个小瀑布模型。

理论部分的内容包括:

综述:讲解编译基本概念,编译过程和编译系统的结构

形式语言基础

根据编译系统的结构分章讲解,包括

词法分析(手工编写,自动生成技术--有穷自动机理论)

语法分析(两大类,四种方法):自顶向下分析方法(递归子程序法和LL分析法),自底向上分析方法(算符优先分析法和LR分析法)

语义分析和代码生成原理(属性文法和语法制导翻译)

符号表管理

运行时存储分配(静态分配和动态分配)

中间代码

语义分析和代码生成,包括原理和典型实例:说明语句、表达式语句、赋值语句、循环语句、函数说明和调用语句。

代码优化,包括局部优化技术、全局优化技术和面向特定微处理器体系结构的优化技术。

编译程序的生成技术和其它编译技术

主要介绍LEX、YACC、自编译等编译程序生成技术,以及目前最新的编译技术,如并行编译技术、面向对象编译技术和当前的研究热点。

实践部分

实践部分要求学生完成编译课程设计,设置了不同难度等级的题目,由学生自行选择难度等级,按要求实现一个完整的小型编译器。

实践项目要求:

∙每人独立完成一份作业

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

∙完成以下文档(word文档)

需求说明(应给出语法或语法图以及P代码指令系统)

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

操作说明(包括程序安装、环境配置;程序启动后,编译、运行、结果显示等操作的说明)

测试报告(提供至少10个测试程序的源程序及测试结果(其中5个有错误的文件),如有扩充,还需另外提供5个测试程序)

总结感想

∙用C/C++语言实现

相关文档
最新文档