《编译原理》课程教学大纲一课程说明1.课程基本情况课程名称:编译原理英文名称:Compile Principle课程编号:2413244开课专业:计算机科学与技术开课学期:第三学年第五学期学分/周学时:1课程类型:专业选修课2.课程性质(本课程在该专业的地位作用)本课程是计算机专业学生的一门重要专业基础课,本课程属于计算机科学与技术专业的一门重要的专业必修课。
通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。
各种语法分析技术和中间代码生成符号表的构造、代码优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。
它有一定的理论性,又有一定的实践性, 尤其是本课程的知识与计算机应用中很多领域有紧密联系与广泛应用。
了解与掌握本课程的基本内容将有利于学生提高专业素质和适应社会多方面需要的能力。
3.本课程的教学目的和任务培养学生掌握构造编译程序的基本原理与设计方法,为培养计算机语言与大型应用程序的开发人才打下良好的基础。
本课程坚持理论与实践教学并重的原则,理论上主要叙述语言和文法的形式定义、自动机理论、词法分析、语法和语义分析、优化和代码生成等环节的基本理论和方法,与此同时,通过上机实习构造简单语言的编译程序等编辑器使学生掌握开发应用程序的基本方法。
4.本课程与相关课程的关系、教材体系特点及具体要求前置课程:高等数学,数据结构,C程序设计要求: 通过本课程的学习, 学生应掌握形式语言理论与编译实现相关的基础概念, 了解与掌握编译程序构造的基本原理与技术, 从形式语言理论的角度, 进一步认识与理解程序设计语言及其与编译程序的联系。
做习题是理解课程中基本概念、培养思考能力和解题能力的重要方面, 要求学生认真做好习题,并注意解题规范化。
学生也应重视配合教学, 做好上机实习。
5.教学时数及课时分配二教材及主要参考书(1)推荐教材:《编译原理》吕映芝、张素琴、蒋维杜主编,清华大学出版社,1998年(2)参考书:[1] 《编译原理》胡伦骏、徐兰芳、刘建农编,电子工业出版社2002年[2] 《编译原理》(第二版)蒋立源、康慕宁主编,西北工业大学出版,2002年[3] 《编译原理习题精选》陈意云、张昱著,中国科技大学出版社,2002年[4] 《编译原理与实现》金成植编,高等教育出版社。
[5] 《编译原理习题与解析》伍春香著,清华大学出版社,2001年三教学方法和教学手段说明1)课堂教学:多媒体教学进行教学,使学生能够很快掌握课程的主要知识和解决问题的方法。
2)辅导和答疑:以习题课对课程中的重要概念和典型问题的解决方法进行总结和深入讨论,巩固和加深课堂内学到的知识。
采用电子邮件方式直接与教师联系进行答疑。
3)自学与练习:除读懂教科书中所讲内容外,还需大量做题。
其目的是要通过做题弄懂、加深对概念的理解,提高解决问题的能力。
为此,安排一定的实验上机学时。
四成绩考核办法考试类型:考查(闭卷)成绩为:平时成绩+期中成绩+期末成绩,其中平时成绩占20%,期中成绩占20%,期末成绩占60%。
五教学内容(一)、课堂讲授内容第一部分编译程序概述(2学时)一、教学目的了解编译程序概念,编译程序的结构,以及每一阶段任务。
二、教学重点编译程序的结构三、教学难点编译程序的结构,以及每一阶段任务四、讲授要求利用多媒体教学,了解编译程序概念,编译程序的结构,以及每一阶段任务。
五、讲授要点1、什么是编译程序2、编译过程概述3、编译程序的结构4、编译阶段的组合5、编译技术和软件工具六、实验及实践要求仔细阅读课本,掌握基本概念,通过作业掌握各种题目的做法。
第三部分文法与语言(3学时)一、教学目的熟练掌握形式语言中基本概念及知识。
二、教学重点与编译技术密切相关的一些术语和概念。
三、教学难点句型的分析四、讲授要求利用多媒体教学,熟练掌握形式语言中基本概念及知识。
五、讲授要点1、文法的直观概念2、符号和符号串3、文法与语言的形式定义4、文法的分类5、上下文无关文法及其语法树6、句型的分析7、有关文法实用中的一些说明六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第四部分词法分析(3学时)一、教学目的熟练掌握正规式与有穷自动机和正规文法与有穷自动机关系。
掌握词法分析程序的设计原理与构造方法。
二、教学重点正规式与有穷自动机和正规文法与有穷自动机转换。
三、教学难点不确定的有穷自动机转换为确定的有穷自动机及最小化。
四、讲授要求利用多媒体教学,熟练掌握正规式与有穷自动机和正规文法与有穷自动机关系。
掌握词法分析程序的设计原理与构造方法。
五、讲授要点1、词法分析程序的设计2、单词的描述工具3、有穷自动机4、正规式和有穷自动机的等价性5、正规文法和有穷自动机间的转换6、词法分析程序的自动构造工具六、实验及实践要求仔细阅读课本,掌握基本概念,通过作业掌握各种题目的做法,,特别是NFA 的确定化和DFA的最小化,以及FA、正规文法、正规式的转化。
第五部分自顶向下语法分析方法(1学时)一、教学目的熟练掌握确定的自顶向下分析方法、熟练掌握把某些非LL(1)文法等价变换成LL(1)文法。
二、教学重点确定的自顶向下分析方法三、教学难点预测分析方法的分析表的构造、消除某些文法中的左递归四、讲授要求利用多媒体教学,熟练掌握确定的自顶向下分析方法、熟练掌握把某些非LL(1)文法等价变换成LL(1)文法。
五、讲授要点1、确定的自顶向下分析思想2、LL(1)文法的判定3、某些非LL(1)文法到LL(1)文法的等价变换4、不确定的自顶向下分析思想5、确定的自顶向下分析方法六、实验及实践要求仔细阅读课本,掌握基本概念,通过作业掌握各种题目的做法,特别是LL (1)文法第六部分自底向上优先分析法(1学时)一、教学目的掌握简单优先分析法和熟练掌握算符优先分析法。
二、教学重点算符优先分析法的关系表的构造以及分析过程。
三、教学难点算符优先分析法的关系表的构造以及优先函数。
四、讲授要求利用多媒体教学,掌握简单优先分析法和熟练掌握算符优先分析法。
五、讲授要点1、自底向上优先分析法概述2、简单优先分析法3、算符优先分析法六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第七部分 LR分析法(2学时)一、教学目的熟练掌握LR(0)与LR(1)的分析方法以及掌握SLR(1)与LALR(1)。
二、教学重点LR(0)分析与LR(1)分析方法三、教学难点构造LR 分析法的分析表四、讲授要求利用多媒体教学,熟练掌握LR(0)与LR(1)的分析方法以及掌握SLR(1)与LALR(1)五、讲授要点1、LR分析法的概述2、LR(0)分析3、SLR(1)分析4、LR(1)分析5、LALR(1) 分析6、二义性文法在LR分析中的应用六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第八部分语法制导翻译和中间代码生成(2学时)一、教学目的了解属性文法、语法制导翻译法的基本思想;熟练掌握中间代码的四种形式以及各种语句翻译成四元式的语义过程。
二、教学重点中间代码的形式、布尔表达式的翻译与控制结构的翻译。
三、教学难点布尔表达式与控制结构的语义过程。
四、讲授要求利用多媒体教学,了解属性文法、语法制导翻译法的基本思想。
熟练掌握中间代码的四种形式以及各种语句翻译成四元式的语义过程。
五、讲授要点1、属性文法2、语法制导翻译的概述3、中间代码的形式4、简单赋值语句的翻译5、布尔表达式的翻译6、控制结构的翻译7、说明部分的翻译8、数组与结构的翻译六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第九部分符号表(1学时)一、教学目的掌握符号表的作用、内容和组织方法。
二、教学重点符号表的作用、内容和组织方法。
三、教学难点符号表中分程序结构层次的管理四、讲授要求利用多媒体教学,掌握符号表的作用、内容和组织方法。
符号表是编译程序中的主要数据结构,在学习时要结合数据结构掌握查找方法的基本思想。
五、讲授要点1、符号表的作用和地位2、符号的主要属性及作用3、符号表的组织4、符号表的管理六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第十部分目标程序运行时的存储组织(1学时)一、教学目的了解静态存储分配以及动态存储分配的概念、熟练掌握栈式存储分配方法、掌握堆式存储分配、临时变量的存储分配方法。
二、教学重点栈式存储分配的实现三、教学难点嵌套过程语言的栈式实现和分程序结构的存储管理四、讲授要求利用多媒体教学,了解静态存储分配以及动态存储分配的概念、熟练掌握栈式存储分配方法、掌握堆式存储分配、临时变量的存储分配方法。
五、讲授要点1、数据空间的三种不同使用方法和管理方法2、栈式存储分配的实现3、参数传递4、过程调用、过程进入和过程返回六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第十一部分代码优化(1学时)一、教学目的了解和掌握实施优化的过程,掌握提高代码质量的关键技术。
二、教学重点重点介绍几种优化技术、局部优化以及循环优化。
三、教学难点循环优化的过程四、讲授要求利用多媒体教学,了解和掌握实施优化的过程,掌握提高代码质量的关键技术。
五、讲授要点1、优化技术的简介2、局部优化3、控制流分析和循环优化4、数据流的分析与全局优化六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。
第十二部分代码生成(1学时)一、教学目的了解简单代码生成器,包括代码生成运算和寄存器的分配;了解代码生成器的自动生成技术。
二、教学重点一个简单的代码生成器三、教学难点待用信息链表法及代码生成算法四、讲授要求利用多媒体教学,了解简单代码生成器,包括代码生成运算和寄存器的分配;了解代码生成器的自动生成技术。
五、讲授要点1、代码的生成概述2、一个计算机模型3、一个简单的代码生成器4、代码生成研究现状六、实验及实践要求仔细阅读课本,掌握基本概念,通过典型例子掌握内容,通过作业掌握各种题目的做法。