北航编译大作业要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“编译技术”是计算机软件学科的一门核心专业必修课程,是学生了解高级程序设计语言原理和编译相关技术的基础课,编译系统是学生接触到的第一个完整的软件系统,本课程在教学中具有重要地位。根据北航计算机学院的培养定位,要求学生既要掌握有关编译的经典基础理论,又要学会运用先进的软件开发技术构造实际编译系统的方法,因此这是一门理论和实践要求都很高的课程,也是学生在本科学习阶段培养动手能力的一个非常重要的环节。
课程划分为理论和实践(课程设计)两个部分,理论部分进行闭卷考试,实践部分要求学生独立完成课程设计题目,提交课程设计文档和程序源代码,并进行现场演示考核。通过理论部分的学习,让学生了解:1)高级程序设计语言原理和相关概念;2)编译程序的构造和相关技术。同时,通过本课程让学生掌握软件领域重要的程序(模型)等价转换技术;程序(模型)优化技术。实践部分是通过独立设计和开发一个小型编译系统,让学生:1)掌握编译程序的主要技术和算法;2)体验一个比较完整的软件系统的设计、开发、测试过程;3)结合软件工程课程,规范化文档,自己走过一个小瀑布模型。
理论部分的内容包括:
综述:讲解编译基本概念,编译过程和编译系统的结构
形式语言基础
根据编译系统的结构分章讲解,包括
词法分析(手工编写,自动生成技术--有穷自动机理论)
语法分析(两大类,四种方法):自顶向下分析方法(递归子程序法和LL分析法),自底向上分析方法(算符优先分析法和LR分析法)
语义分析和代码生成原理(属性文法和语法制导翻译)
符号表管理
运行时存储分配(静态分配和动态分配)
中间代码
语义分析和代码生成,包括原理和典型实例:说明语句、表达式语句、赋值语句、循环语句、函数说明和调用语句。
代码优化,包括局部优化技术、全局优化技术和面向特定微处理器体系结构的优化技术。
编译程序的生成技术和其它编译技术
主要介绍LEX、YACC、自编译等编译程序生成技术,以及目前最新的编译技术,如并行编译技术、面向对象编译技术和当前的研究热点。
实践部分
实践部分要求学生完成编译课程设计,设置了不同难度等级的题目,由学生自行选择难度等级,按要求实现一个完整的小型编译器。
实践项目要求:
∙每人独立完成一份作业
∙采用递归子程序法进行语法分析,所有代码要求手工编程实现
∙完成以下文档(word文档)
需求说明(应给出语法或语法图以及P代码指令系统)
详细设计(应给出程序结构,各函数的功能描述和调用依赖关系,符号表结构,运行栈结构,出错信息编号及描述等)
操作说明(包括程序安装、环境配置;程序启动后,编译、运行、结果显示等操作的说明)
测试报告(提供至少10个测试程序的源程序及测试结果(其中5个有错误的文件),如有扩充,还需另外提供5个测试程序)
总结感想
∙用C/C++语言实现