《编译技术》课程教学大纲
《编译技术》课程教学大纲
英文名称:Compiler Technology
课程类型:学科基础课
学时/学分:56/3.5
适用专业:计算机科学与技术
一、课程性质、目的和任务
编译技术是计算机科学与技术专业重要的学科基础课之一,目的是使学生掌握编译程序的相关理论知识;理解编译程序构造的一般原理;了解编译程序的基本设计方法和主要实现技术。其任务是让学生掌握编译程序的相关概念和一般原理;掌握词法分析和语法分析的常用分析方法;理解编译程序翻译高级语言的原理和翻译过程,把学生培养成为知识面宽、动手能力强的适应社会发展和需要的高级应用型人才。
二、教学基本要求
1.编译程序概述
了解语言处理程序的含义及种类;理解编译程序的工作原理;掌握编译程序的相关概念及各组成部分的功能。
2.词法分析
了解词法分析器的任务;理解有限自动机的理论;掌握正规式的定义和状态转换图的表示方法。
3.语法分析
了解语言和文法的知识;理解上下文无关文法的定义和产生式的含义;掌握自上而下和自下而上两种分析方法。
4.语义分析概述
了解符号表的操作及完善过程;理解语义分析的概念和静态语义分析的内容;掌握正下而上语法制导翻译的语义分析方法。
5.运行时存储空间的组织和管理
了解动态存储分配策略;理解参数传递的种类和方法;掌握过程的定义方法、名字的作用域及其引用规则。
6.中间代码生成
了解分支语句和控制语句的中间代码表示及翻译方法;理解赋值语句和布尔表达式的中间代码表示及翻译方法;掌握后缀表示,语法树和三地址代码的中间表示方法。
7.目标代码生成
了解指令的选择、寄存器的分配方法和目标机器的指令系统;理解指令代价的计算方法和流图的概念及表示方法;掌握目标程序的种类和特点、基本块的定义及表示方法。
三、课程内容
1.编译程序概述
1.1编译程序的概念
1.2编译程序的组成
重点:翻译程序和编译程序的概念
难点:词法分析程序和语法分析程序的分析方法,
2.词法分析
2.1词法记号及属性
2.2词法记号的描述与识别
2.3有限自动机
重点:词法记号和词法单元等相关概念,NFA和DFA的构成及表示方法
难点:NFA到DFA的转换方法
3.语法分析
3.1上下文无关文法
3.2语言和文法
3.3自上而下分析
3.4 自下而上分析
3.5 LR分析器
重点:终结符、非终结符和推导的含义,非递归预测分析方法,用栈实现移进—归约分析,LR 分析器的工作原理;
难点:模式的含义和产生式的表示,文法左递归的消除方法,LL(1)文法,LR分析方法。4.语义分析
4.1 语义分析概述
4.2 符号表
重点:自下而上语法制导翻译的语义分析的原理,符号表的概念及内容;
难点:自下而上语法制导翻译的语义分析方法,符号表的操作及完善过程。
5.运行时存储空间的组织和管理
5.1 局部存储分配策略
5.2 全局存储分配策略
5.3 非局部名字的访问
5.4 参数传递
重点:过程的定义和局部数据的存储安排,静态分配的含义及分配方法,参数的值调用方法;
难点:名字的作用域,动态分配,参数的引用调用方法。
6.中间代码生成
6.1 中间代码的种类
6.2声明语句的翻译
6.3赋值语句的翻译
6.4布尔表达式及控制语句的翻译
重点:后缀表示和三地址代码,赋值语句的文法,布尔表达式的中间代码翻译;
难点:翻译时变量地址的计算方法,赋值语句的翻译方法,控制语句的翻译方法。
7.目标代码生成
7.1目标代码生成器设计中的的问题
7.2 目标机器
7.3基本块和流图
重点:目标代码和种类和特点,指令系统,基本块和流图的含义和划分方法;
难点:指令选择和寄存器的分配方法,指令代价的计算。
四、实验(上机)内容及要求
实验题目:词法分析程序的设计
实验目的:通过完成词法分析程序,了解词法分析的过程,加深对词法分析原理的理解。
实验内容及要求:用C语言编写一个词法分析程序,使其完成词法分析的功能。学生可以通过上网等方式查阅词法分析程序的相关资料,进一步理解词法分析程序的工作原理和分析过程。
源程序进行词法分析后,将形成内部输出形式。
实验步骤:1、设计主要数据结构。
2、设计程序结构和算法。
3、编码实现
4、程序调试和实例测试。
五、教学环节学时分配
六、选用教材及参考教材
1.教材
编译原理.陈意云,张昱.高等教育出版社,2003.
2.参考教材
编译程序构造原理和实现技术.金成植.高等教育出版社,2000.
七、说明
1.修订大纲的指导思想
教学大纲必须体现课程建设的指导思想,是组织教学过程及安排教学任务的基本依据。因此,按照教育部《普通高等学校计算机基础教育教学基本要求(本科)》,在遵循国家教育部有关文件精神的基础上,对大纲进行了修订。新的教学大纲注重突出整体优化的原则,提高学生的科学素养,将实践能力和创新精神的培养融为一体,使其符合基本的教学规律和社会、经济、科学技术发展的要求,实现我们的培养目标。
2.本课程与其它课程的联系
先行课:高级程序设计语言(C / PASCAL)、汇编语言、数据结构
后续课:软件工程
3.教学方式与教学方法的具体改革措施
本课程以课堂讲授为主,结合上机实践,注意培养学生的自学能力与动手实践能力,提高程序设计水平。实践环节建议在C语言环境下,学生能通过上网查阅等方式,查找有关词法分析的相关资料,编写出相应程序,然后进行程序的调试,实现词法分析和语法分析的功能。
4.在教学过程中,课堂讲授多采用CAI辅助教学形式和启发式的教学方式,从调动学生自身学习的积极性、引导学生主动思考问题、强调知识的连贯性等方面入手,进而使学生在完成相关内容学习的同时,还可提高学生计算机专业素质,培养学生的抽象思维能力。