《编译原理》教学大纲
《编译原理》课程教学大纲

《编译原理》课程教学大纲Compiler Principles课程编号:130301006学时:48学分:3适用对象:软件工程.计算机科学与技术.网络工程.物联网工程.医学信息工程.数字媒体技术(理科)先修课程:高级语言程序设计.数据结构.离散数学一、课程的性质和任务根据培养方案中课程体系与培养要求的对应关系矩阵,该课程可以支撑毕业要求第1.2.3条的达成。
《编译原理》课程是计算机科学与技术专业学生的一门重要专业必修课,它在计算机系统软件中占有十分重要的地位。
它既有很强的理论性,又有一定的实践性,尤其是该课程所涉及的知识内容与计算机科学技术中的其他众多学科联系紧密,并在很多领域有着广泛的应用,其基本原理与技术对软件开发有很好的启发和指导作用。
学习和掌握好本课程的基本原理与技术,将有利于提高学生的专业素质.培养学生进行系统分析和软件设计的能力。
本课程主要学习编译程序的设计与实现的一般原理.基本方法和主要实现技术。
二、教学目的与要求本课程的教学目的是介绍程序设计语言编译程序构造的基本原理和设计方法,通过本课程的学习,学生应该能够正确理解什么是编译程序,了解编译程序工作的基本过程及其各阶段的基本任务,熟悉编译程序总体框架,掌握编译程序构造的一般原理.基本设计方法和主要实现技术,巩固《高级语言程序设计》.《数据结构》.《离散数学》等基础知识,能将编译程序中的概念和技术应用于一般的软件设计之中,能够独立完成小型编译程序。
三、教学内容第一章:概述1.基本内容:编译程序的基本概念,编译过程,编译程序的结构,编译程序和程序设计环境,编译程序的生成过程和构造工具2.教学基本要求:正确了解什么是编译程序,了解编译程序工作的基本过程几个阶段的基本任务,熟悉编译程序总框。
3.教学重点难点:编译过程和编译程序的结构。
4.教学建议:注重介绍课程特点.在人才培养中的作用,学生在学习中要注意的问题,使学生掌握基本的概念和系统总体结构以激发学习兴趣。
编译原理理论教学大纲

《编译原理》教学大纲课程编号:课程名称:编译原理/Compiler Principles学时/学分:56/3.5(含实验 8学时)先修课程:高级程序设计语言、汇编语言、离散数学、数据结构、计算机组成原理适用专业:计算机科学与技术、软件工程开课单位:计算机科学与技术学院计算机科学系、计算机技术系一、本课程的性质与任务本课程是计算机类专业的一门必修的重要核心专业基础课。
随着计算机技术的迅猛发展,计算机已深入到人类社会的各个领域。
编译系统是现代计算机系统的基本组成之一,编译程序构造的基本原理和技术不仅应用于编译程序的设计,也广泛应用于一般软件的设计和实现。
通过本课程的学习,旨在使学生掌握编译的基本理论、原理和技术,并对编译程序有较为具体的认识。
使学生能运用所学过的基本知识、着手开发系统程序,为今后的工作(技术和理论研究)打下基础。
具体为:(1)编译程序基本结构及构造的基本原理和技术;(2)文法、形式语言及自动机的基本概念和在编译程序构造中的应用;(3)典型的几种语法分析方法的基本原理和实现方法;(4)属性文法和语法制导方法在语义分析中的应用和中间代码生成方法;(5)存储分配的基本思想和实现方法;(6)代码优化及代码生成的方法;二、本课程的教学内容,基本要求及学时分配(一)教学内容1.编译原理概论翻译程序、编译程序、解释程序,编译系统在计算机系统中的作用,编译系统的组成及各部分完成的任务。
2.文法和语言符号串、符号串集合及其运算、推导与归约,句型与句子;文法和语言的形式定义;文法的类型,语法树及其二义性;短语、简单短语和句柄;句型的分析。
3.词法分析词法分析程序与语法分析程序的接口方式和输出;正规式与正规集;确定的有穷自动机(DFA),不确定的有穷自动机(NFA);NFA→DFA的转换,确定有穷自动机的化简;正规式与有穷自动机的等价性及转换,正规文法与有穷自动机的等价性及转换;自动机用于词法分析4.自顶向下语法分析方法确定的自顶向下分析思想;自顶向下语法分析方法原理与思想;自顶向下语法分析方法的关键;FIRST、FOLLOW、SELECT三种集合的定义与构造,LL(1)文法的判别,预测分析法5.自底向上语法分析方法自底向上分析的一般过程自底向上语法分析方法原理与思想;自底向上语法分析方法的关键;简单优先分析方法:优先关系;简单优先文法的定义;简单优先关系矩阵的构造,简单优先分析方法的实现;LR分析方法:可归前缀、活前缀和LR项目,识别活前缀的有限自动机构造方法,LR(0)项目集规范族的构造,LR(0)分析表的构造,SLR(1)分析表的构造6.属性文法和语法制导翻译属性文法;语法制导翻译概念;文法与属性文法的关系基于属性文法的处理方法;属性计算的基本思想;翻译模式及其实现思想;属性文法和语法制导方法在语义分析中的应用7.语义分析和中间代码生成语义分析概念,明确语义分析在编译过程所处的阶段和作用。
《编译原理》理论教学大纲

《编译原理》理论教学大纲(2001年制订,2004年修订)课程编号:英文名:Compiling Principle课程类别:专业主干课前置课:程序设计基础、数据结构、汇编语言、离散数学后置课:无学分:4学分课时:72课时(其中理论教学54课时,实验教学18课时)主讲教师:苏杭丽等选定教材:吕映之,张素琴,蒋维杜.编译原理.北京:清华大学出版社, 2001年.课程概述:本课程是计算机科学与技术专业的专业主干课程,介绍了程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术方法和一些自动构造工具,如:语言基础知识、词法分析、语法分析、有限自动机理论、形式语言的识别、语义检查、运行时的存储管理、代码优化和代码生成以及整个编译程序的构造过程。
教学目的:掌握编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具,巩固《程序设计语言》、《数据结构》、《汇编语言》、《离散数学》等基础知识,能将编译程序中的概念和技术应用于一般的软件设计之中,能够独立完成小型编译程序。
教学方法:理论讲课与上机实验结合。
首先从剖析一个简单的编译程序(PL/0)入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予必要的介绍;对于广泛使用的语法分析和语义分析技术,如递归子程序法、算符优先分析、LR分析及语法指导翻译等进行了详细讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑等给予描述。
此外,还介绍了编译原理的构造工具。
“编译原理”是一门对实践性要求较高的课程,教学中设置了实验课,强化对理论的理解。
各章教学要求及教学要点第一章编译程序概论课时分配:2课时教学要求:了解什么是编译程序;了解编译过程。
教学内容:第一节什么是编译程序一、编译程序的基本知识第二节编译过程概述一、词法分析阶段二、语法分析三、语义分析阶段四、中间代码生成五、代码优化六、目标代码生成第三节编译程序的结构一、编译程序的6个基本过程二、编译程序的两个管理功能第四节编译阶段的组合一、编译的前端二、编译的后端第五节编译技术和软件工具一、语言的结构化编辑器二、语言的调试工具三、语言的测试工具四、高级语言之间的转换工具五、并行编译技术思考题:1.编译程序的工作过程包括哪几个基本阶段?2.介绍词法分析的概念。
《编译原理及实践教程(第3版)》教学大纲

《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。
本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。
让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。
二课程目标(一)课程具体目标1. 掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3 掌握计算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。
)2. 能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析;(毕业要求4.1 能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。
)3. 理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。
(毕业要求1.4 能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。
)(二)课程目标与毕业要求的关系本课程目标主要支撑的毕业要求指标点如表1所示。
除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5(选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。
表1 本课程对专业毕业要求指标点的支撑(三)教学内容安排总体思路本课程的教学内容,以课程具体目标为总体指导进行制定。
通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种高级语言编译程序构造的一般原理和基本方法,如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。
编译原理教学大纲(3).docx

编译原理教学大纲Principles And Techniques Of Compilers课程性质:专业课必修开课学期:5学分数:4修订年月:2007年7月张巍修订一、课程的性质和目的《编译原理》是计算机类专业的主干课程Z-O 本课程讲述高级程序设计语言的编 译程序构造的基本原理和实现技术,是计算机软件的核心技术之一。
通过本课程的学习, 学生应掌握文法和形式语言基础知识,具有分析和实现编译程序的初步能力,加深对程 序设计语言原理的理解,并且提高中、人型程序的分析和开发能力。
二、课程教学内容及学时分配总学时:64,英中授课:56,实验:8O第1章绪论(2学时)主要内容:编译程序;解释程序;编译程序的组成;编译程序的构造。
重点:掌握编译程序的基木概念;了解通用程序设计语言的主要特征;了解编译 器在计算机系统中的地位和作用;了解编译器的某本工作原理;了解编译器各个阶段的 工作与任务;理解对编译程序性能的基本耍求;了解编译器的编写工具。
第2章 文法和形式语言基础 (8学时)课程代码:242013 适用专业:计算机类 总学时数:64 编写年月:2004.7 执笔者:昊伟民编写主耍内容:符号串;文法和语言的形式定义;文法的分类;语法树和二义性;文法的限制和变换。
垂点:文法和形式语言的皋本概念,尤其是上下文无关文法与上下文无关语言。
第3章词法分析(6学时)主耍内容:词法分析程序的任务;词法分析程序的设计;止则文法、止则表达式和有限自动机;词法分析程序;PL/O词法分析的设计与实现。
重点:了解词法分析器的作用和基本丁作方式,理解构词规则与词法分析的关系, 掌握利用状态转换图构造词法分析器的基本方法。
第4章自顶向F语法分析(6学时)主要内容:递归了程序分析法;LL(1)分析法。
重点:LL(1)文法的相关技术方法,递归下降分析器构造方法和LL(1)分析表构造方法。
第5章自底向上语法分析(3养时)主要内容:白底向上方法概述,简单优先分析法,算符优先文法的定义,算符优先关系表的构造,算符优先分析算法,算符优先分析法的局限性重点:算符文法的形式;构造单优先分析表和算符优先关系分析表;句型的句柄和最左索短语。
编译原理教学大纲(认证--姚6.11)

《编译原理》教学大纲课程编号:ZH36068课程名称:编译原理英文名称: Compile Principle学分/学时: 51学时/3学分课程性质:必修适用专业:计算机科学技术、软件工程、计算机网络、信息安全、多媒体技术先修课程:高级程序设计语言、汇编语言、数据结构、操作系统、离散数学开课单位:计算机科学与技术学院一、课程的教学目标与任务编译原理是计算机科学与技术专业与教育技术学专业的一门专业基础课,是本科学生的必修课程。
编译技术是计算机科学中发展得最迅速、最成熟的一个分支,它集中体现了计算机发展的成果与精华。
编译器的原理和技术具有十分普遍的意义,在计算机科学技术的发展历史中发挥了巨大作用,是开发计算机应用系统不可缺少的重要工具。
在每一个计算机科学技术工作者的职业生涯中,编译器的这些原理和技术都要反复用到。
对软件工程来说,编译器是一个很好的实例,它集需求分析、概要设计、详细设计、基于事件驱动的编程等。
除此以外,编译技术在软件安全、程序理解和软件逆向工程等方面也有着广泛的应用。
所以编译原理是计算机相关专业学生一门重要的课程。
通过本课程的学习,使学生能够全面了解编译系统的结构、工作流程,系统掌握编译程序各组成部分的设计原理和实现技术,既掌握编译理论和方法方面的基本知识,也获得设计、实现、分析和维护编译程序等方面的初步能力。
学生能从《编译原理》课程的学习中学到许多新的软件设计方法,掌握一些软件设计的理论、方法、技术和技巧,具备计算机应用系统开发的实际技能,从而胜任软件开发与维护的工作。
二、课程具体内容及基本要求第一章编译程序概论 ( 3学时)基本内容包括:(1)编译程序在计算机科学中的地位和作用;(2)编译技术的发展历史;(3)编译程序和解释程序的基本概念;(4)编译程序的实现方法;(5)编译程序的逻辑结构和组织形式。
1.基本要求(1)理解翻译程序、汇编程序、编译程序和解释程序的含义;(2)了解编译程序各阶段的任务以及各部分的基本功能;(3)明确编写编译程序所需要具备的条件。
《编译原理》实验教学大纲
兰州大学信息科学与工程学院《编译原理》实验教学大纲一.课程基本信息:课 程 名 称:编译原理课 程 编 号:课 程 总 学 时: 72课 程 总 学 分:4实 验 学 时:36实 验 学 分:1适用专业及年级:计算机科学与技术课 程 负 责 人: 徐德启开放实验项目数:6大 纲 主 撰 人: 张兰慧 郭志华开设实验项目数:6二、实验教学目标与基本要求<<编译原理>>是理论与实践并重的课程。
这门实验课要总合运用一、二年级所学的多门课程的内容。
实验目标与要求;1.通过实验要学会用BNF范式定义一个简单的程序设计语言。
2.设计编译中使用的表格、设计词法分析后单词的等长形式、设计中间代码的形式。
3.学会用高级程序设计语言设计词法分析器、语法分析器、中间代码产生器和优化器。
4.用这个简单的程序设计语言书写一段程序,得到最后目标代码。
三、实验课程内容和学时分配序 号 实验项目名称实 验 内 容学时所用主要仪器及台套数所在实验室1 用C或者C++ 语言设1.确定编译中使用的表格、词计一个词法分析器 法分析器的输出形式、标识符与关键字的区分方法。
2.把词法分析器设计成一个独立的过程。
微机,每人一台。
实验楼A区405、4072 用C或者C++ 语言设计一个语法分析器。
1.语法分析分别由递归子程序法和预测分析法实现2.把语法分析器设计成一个独立的过程。
微机,每人一台。
实验楼A区405、4073 用C或者C++ 语言设计类型检查器1.类型检查分别由预测分析器和分析栈上的分析器两种方法实现2.把类型检查器设计成一个独立的过程。
微机,每人一台。
实验楼A区405、4074 用C或者C++ 语言设计一个中间代码产生器1.确定中间代码的形式,使中间代码不依赖于任何具体的计算机。
2.把中间代码产生器设计成一个独立的程序。
微机,每人一台。
实验楼A区405、4075 用C或者C++ 语言语言设计一个代码优化器1.对中间代码执行2.编写一段源程序对其进行优化。
《编译原理》课程教学大纲
《编译原理》课程教学大纲一、课程基本信息注:1.课程类别:选填“通识核心课/通识拓展课/通修课/学科基础课/专业主干课/专业选修课/专业实践/ 素质拓展”2.课程性质:选填“选修/必修”3.授课语言:选填“中文/双语/全英文或其他语种”二、课程目标2 .学生学习预期成果:描述学生在学完本节内容后应获得的知识、能力或素养水平(下同).教学方式:包括讲授、讨论、案例、演示等,但不限于所列,根据课程实际需要列举实践(实验或实习)教学I2.实验类型:选填”验证性/综合性/设计性”;实习类型:选填“认识实习/生产实习/毕业实习”五、课程评价(一)考核内容、考核方式与课程目标对应关系注:1.课程目标在考核方式及占比:主要根据课程目标自行设计和制定多元化考核方式,表中所列仅为参考(红色数据可删除)。
但所列考核方式必须覆盖全体学生,可根据当学期具体教学情况酌情调整。
2.各考核方式占总成绩权重:根据课程实际情况对各考核方式占总成绩的权重予以赋值。
(二)考核方式评分标准1.课程作业评分标准2.注:考核方式和课程目标在考核方式中占比应与“(一)考核内容、考核方式与课程目标对应关系” 一致。
所列考核环节,除了笔试类均须依次给出评分标准,格式同上。
笔试类课程考核评分标准可以在本课程大纲里进行说明,也可以通过提交“试卷分析表”予以说明。
五、参考书目及学习资料1.[美]安佩尔,现代编译原理:c语言描述,人民邮电出版社,2006.劳顿著,冯博琴等译,编译原理及实践,机械工业出版社,20042.[美]Kenneth C. Louden,编译原理与实践,机械工业出版社,2002注:1 .支撑毕业要求指标点:选填项。
需要进行专业认证,有毕业要求指标点可参照的课程必填,无明确毕业要求指标点可参照的可不填。
三、理论教学内容类、NFA 到DFA 的转.掌握状态转换. Lex 工具的使用4 .理解单词符号 的识别:超前搜索 5.掌握正那么表达 式与正那么定义6 .掌握确定有限 自动机(DFA)7 .掌握非确定有 限自动机(NFA) 8.掌握正那么文法 与有限自动机的 等价性9 .掌握正那么式与 有限自动机的等 价性 10 .掌握确定有 限自动机的化简 11 . 了解 Lex 工 具的使用方法子程序 换、识别DFA图及实现第四章语法分析-自上而下分析1.属性文法第六章 语义分 析、语 法制导 翻译及 中间代 码生成 2 .翻译模式.语义处理 3 .语法制导翻译.中间代码 4 .简单赋值语句的翻译.数组的翻译5 .布尔表达式和控制结构的翻译1 . 了解基于属性文法的处理方法.理解属性的依 赖图和属性计算 方法2 . 了解S-属性文法的自下而上计 算. 了解L.属性文 法和自顶向下翻 译3 .理解自顶向下翻译及常见语言的翻译及中间代 码表示. 了解递归下降 翻译器的设计理 解符号栈的使用 与语法树的表示4 .理解后缀式、图表示法、三地址 代码的中间代码 表示方法.掌握四元式的 表示方法5 .理解说明语句的翻译方法.理解赋值语 句的翻译6 .理解简单算 术表达式及赋值 语句.理解数组元 素的引用7 .掌握控制结讲授、 讨论、 案例、习题课程目标 1, 2素养:科学素质构中的布尔式翻译14.理解简单控制语句的翻译注:1.思政融入点:至少写3条,简述该课程教学中将思政教育内容与专业教育内容有机融合的知识点(下同)。
教学大纲_编译原理 张淑艳
郑州大学软件学院《编译原理》课程标准制定人:张淑艳课程代码: 773033课程名称(中文 / 英文):编译原理 / Compiler Principle学时(实验学时)/ 学分:周5学时 / 4学分课程性质:专业必修先修课程:程序设计、计算机组成原理、数据结构、操作系统后续课程:无适用专业:选用教材:书名:程序设计语言编译原理作者:陈火旺,刘春林,谭庆平等编著出版社:国防工业出版社出版日期: 2007一、教学目的与任务通过对该课程的学习,使学生能够了解编译程序构造的一般原理、基本设计方法和主要实现技术。
使学生掌握编译程序的五个逻辑阶段:在词法分析中,深入理解正规表达式与有限自动机的理论和不确定的有限自动机转化为确定有限自动机的方法;在语法分析中,理解上下文无关方法的概念,掌握自上而下分析和自下而上分析的方法,深入理解消除左递归、消除回溯、提取左因子的方法和LL(1)分析法;在语义分析和中间代码生成中,掌握属性文法和语法制导翻译的基本思想、中间代码的格式和语句翻译的方法;在优化和目标代码生成中,了解其基本方法。
除此之外,还需对符号表管理以及运行时存储空间组织的管理方法加以了解。
二、教学方法与特色在学习编译原理之前,首先要求学生对一些源语言(如C或Java)和目标机器有所了解。
在教学过程有,其方法和特色有:(1)在介绍语言实现技术的同时,强调一些相关的理论知识,如形式语言和自动机理论、语法制导的定义和属性方法、类型论等。
(2)在介绍编译器各逻辑阶段的实现时,强调形式化描述技术。
(3)强调对编译原理和技术的宏观理解和把握,而不把读者的注意力分散到一些枝节的算法上。
(4)在教学过程中,不偏向于某种源语言或是目标机器。
(5)鼓励学生在学习过程中用所学的知识去分析和解决实际问题,激发学生学习编译原理和技术的积极性。
三、教学内容与要求第1章引论1、课程性质与任务2、编译过程概述3、编译程序的结构第2章高级语言及其语言描述1、程序语言的定义2、高级语言的分类3、语句与控制结构4、上下文无关文法5、语法分析树与二义性第3章词法分析1、词法分析器的要求2、词法分析器的设计3、正规表达式4、有限自动机5、词法分析器的自动产生第4章语法分析—自上而下分析1、语法分析器的功能2、自上而下分析面临的问题3、LL(1)分析法4、递归下降分析程序构造5、预测分析程序6、LL(1)分析中的错误处理第5章语法分析—自下而上分析1、自下而上分析基本问题2、算符优先分析3、语法分析器的自动产生工具第6章属性文法和语法制导翻译1、属性文法2、基于属性文法的处理方法3、S-属性文法的自下而上计算4、L-属性文法和自顶而下翻译5、自上而下计算第7章语义分析和中间代码生成1、中间语言2、说明语句3、赋值语句的翻译4、Bool表达式的翻译5、控制语句的翻译6、过程调用的处理7、类型检查第8章符号表1、符号表的组织与作用2、整理与查找3、名字的作用与范围4、符号表的内容四、教学安排及方式本课程总学时96学时,课堂总学时64学时,实践总学时32学时。
编译原理教学大纲
编译原理教学大纲《计算机编译原理》课程大纲一、适用对象本课程适用于计算机科学与技术以及相关专业的网络教育、成人教育学生。
二、课程性质本课程是计算机科学与技术专业学生的专业基础课。
编译原理课程是计算机专业的一门主干课程。
课程介绍程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。
首先从剖析一个简单的编译程序PL/0入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予介绍;对于广泛使用的语法分析和语义分析技术,如递归子程序法、算符优先分析、LR 分析及语法制导翻译等进行了详细的讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑给予了描述;对编译程序的构造工具进行介绍;同时对面向对象语言的编译程序和构造进行介绍。
前序课程:高级程序语言、离散数学、数据结构、计算机组成原理。
三、教学目的通过本课程的学习,使学生掌握设计和实现程序设计语言的最基本的理论和技术,掌握编译程序工作原理和构造方法。
同时,能够达到去鉴赏、评价和实现某种程序设计语言。
主要有如下教学目的:(1)对编译过程从整体上有一个较清晰的了解,掌握高级语言程序的编译过程。
(2)掌握文法、自动机、正规式等编译基本理论知识。
(3)掌握确定的自顶向下的语法分析方法和自底向上的算符优先分析及LR 分析方法。
(4)掌握语法制导翻译的语义分析方法,掌握中间代码的优化和目标代码的生成。
(5)理解符号表和目标程序运行时的存储组织。
(6)了解面向对象语言编译程序的原理和构造。
四、教材及学时安排教材:张素琴、吕映芝、蒋维杜、戴桂兰,编译原理(第2版),清华大学出版社,2005年2月,ISBN :[1**********]97五、教学要求第1章引论教学要求:编译程序是现代计算机系统的基本组成部分之一。
通过本章的学习,理解编译程序的概念和任务,掌握高级程序设计语言编译过程的各阶段及编译程序的结构,了解编译技术、编译软件工具和程序设计语言范型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》教学大纲Compiler Principles一、课程性质《编译原理》是高等工科院校“计算机科学与技术”、“软件工程”、“信息安全”等专业的一门重要的必修专业基础课。
所含内容涉及学科抽象、理论、设计三个形态。
在学习编译原理所涉及的知识的同时,掌握问题求解的典型思路和方法,帮助学生从系统层面重新认识程序和算法。
二、课程目标本课程的教学目标是:通过学习该课程,使学生了解形式语言基本概念和术语、掌握词法分析、语法分析、语义分析及中间代码生成、代码优化、符号表管理、存储组织和分配及代码优化的基本原理和实现方法。
通过学习编译程序的构造原理和技术,将有助于深刻理解和正确使用程序设计语言。
除此以外,编译原理课程介绍的一些原理、方法和算法并不局限于编译器的构造,也广泛地应用于其他软件的设计与开发。
本课程具有思想素质、知识技能以及能力培养三个层面的通用课程目标:(一)思想、素质教育目标目标1.1 在教学过程中,激发学生自豪感与爱国情怀,鼓励学生通过努力学习掌握先进科学技术,服务国家,回馈社会。
目标1.2 在教学过程中,通过课程内容与中国传统文化思想相结合,提升学生的学习兴趣、人文关怀和道德情操,真正做到“传道、授业和解惑”。
(二)知识教学目标目标2.1 使学生理解编译系统的工作流程和编译器各功能模块的设计原理,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题。
目标2.2 使学生掌握词法分析器、语法分析器开发方法,能够编写词法分析程序和语法分析程序。
(三)能力教学目标目标3.1使学生理解编译系统的工作流程和编译器各功能模块的设计原理,培养学生抽象思维和逻辑思维能力,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题的特征。
目标3.2 使学生掌握设计、编制、分析和维护编译程序的方法和技术,能够应用这些基本方法和技术分析和解决软件开发中的实际问题,使学生具有系统能力,能站在系统的全局去看问题、分析问题和解决问题。
目标3.3使学生掌握词法分析器、语法分析器开发方法,学习构造编译器的各种工具的使用方法,培养学生软件开发能力,具备开发系统软件的能力。
三、课程教学内容及基本要求编译原理课程主要包含如下的教学内容:编译系统各组成部分的主要功能;编译系统的工作流程;编译器各功能模块的设计原理和实现技术;构造编译器的各种工具的使用方法。
在本课程中,词法分析、语法分析、中间代码生成是核心内容,课程以形式化和半形式化的技术来统领这些内容;并以文法与自动机理论为基础,以语法制导翻译技术为模式进行处理;将编译技术方面出现的新方法、新工具及时引入教学环节中。
上述教学内容既涉及一些艰深的理论知识,又有大量的具体处理细节。
因此,在教学内容的组织上,必须以编译系统的逻辑结构为主线来划分各个教学环节,坚持理论和实际并重,理论与实际紧密相结合的原则,让学生懂得编译的基本原理并具有设计、编制、调试和维护简单编译程序的能力,培养学生软件开发能力、抽象思维和逻辑思维能力,从而为今后从事应用软件和系统软件的开发打下一定的理论和实践基础。
(一)课程教学内容及知识模块顺序1. 知识单元一:概述(2学时)(1)知识点一:程序设计语言及翻译程序(2)知识点二:编译过程简述(3)知识点三:编译程序的生成教学基本要求:了解程序设计语言及翻译程序的发展历史,以及翻译程序的分类,初步理解编译的主要组成部件以及编译过程。
2. 知识单元二:语言基本知识(5学时)(1)知识点一:形式语言基本概念和术语(2)知识点二:语法分析初步(3)知识点三:文法分类教学基本要求:掌握形式语言基本概念和术语,初步理解语法分析过程,重点掌握巴科斯范式及其在编译领域中的应用。
3. 知识单元三:词法分析(16学时)(1)知识点一:词法分析概述(2)知识点二:词法分析程序设计和实现(3)知识点三:正规表达式和有穷自动机(4)知识点四:词法分析程序自动生成教学基本要求:掌握词法分析程序设计、正规表达式和有穷自动机的概念、基本原理和方法,重点掌握如何由正规文法构造有穷自动机,如何由正规文法构造正规表达式,如何由正规表达式构造DFA。
4. 知识单元四:语法分析(16学时)(1)知识点一:语法分析概述(2)知识点二:自顶向下语法分析(3)知识点三:自底向上语法分析(4)知识点四:语法分析自动生成工具教学基本要求:掌握自顶向下语法分析、自底向上语法分析的基本原理和方法,了解语法分析自动生成工具,重点掌握递归子程序法、LL(1)分析法、简单优先分析法、算符优先分析法、LR(K)分析法。
5. 知识单元五:语义分析及中间代码生成(8学时)(1)知识点一:语法制导翻译概述(2)知识点二:中间语言(3)知识点三:自底向上语法制导翻译教学基本要求:掌握语法制导翻译技术,包括中间语言和自底向上语法制导翻译基本原理和方法,重点掌握如何在语法制导下,将源语言编写的语句经过语义分析,转化为由中间语言(尤其是四元式)表示的中间代码。
6. 知识单元六:符号表的组织和管理(4学时)(1)知识点一:符号表的组织(2)知识点二:符号表的构造和查找(3)知识点三:分程序结构语言的符号表(4)知识点四:非分程序结构语言的符号表教学基本要求:本章主要掌握符号表的组织形式和符号表的构造与查找,包括顺序法、折半法和散列表法,重点针对分程序结构语言和非分程序结构语言的符号表的组织和工作原理进行讨论。
7. 知识单元七:存储组织和分配(4学时)(1)知识点一:存储组织概述(2)知识点二:静态存储分配(3)知识点三:动态存储分配教学基本要求:本章主要通过递归调用、固定数组和可变数组等案例,掌握静态存储分配以及动态栈式存储分配和动态堆式存储分配之间的区别。
8. 知识单元八:代码优化(5学时)(1)知识点一:代码优化概述(2)知识点二:局部优化(3)知识点三:循环优化(4)知识点四:利用DAG进行优化(5)知识点五:数据流分析及全局优化教学基本要求:本章主要掌握局部优化、循环优化和有向无环图优化(DAG 优化)的概念和技术原理。
其中,DAG 优化是本章的难点和重点,阐述了其基本块 DAG 的表示、DAG 的构造和如何利用构造好的 DAG 进行优化。
了解如何通过数据流分析(即在整个程序范围内对程序中的全部变量的定值和引用关系进行分析)实现 DAG 基础上的全局优化。
9. 知识单元九:目标代码生成(4学时)(1)知识点一:计算机模型概述(2)知识点二:简单代码生成程序(3)知识点三:寄存器分配(4)知识点四:由DAG生成目标代码(5)知识点五:窥孔优化教学基本要求:本章要求掌握如何将中间代码四元式变换为目标代码,了解在一个基本块范围内如何充分利用寄存器;掌握如何基于 DAG 产生优化目标代码以及如何利用窥孔优化实现进一步的目标代码优化。
(二)课程的重点、难点及解决办法课程的重点:讲述语言基本知识(包括形式语言基本概念和术语、语法分析初步、文法分类)、词法分析(包括词法分析概述、词法分析程序设计、正规表达式和有穷自动机)、语法分析(包括自顶向下语法分析、自底向上语法分析)、语法制导翻译技术(包括中间语言、自底向上语法制导翻译、属性文法与属性翻译)、代码优化和目标代码生成(包括DAG优化和窥孔优化)。
课程的难点:状态转换图、有穷自动机、LL分析法和LR分析法、利用DAG进行优化和生成目标代码等。
解决的办法:由于算法形式化描述,学生不易理解,可通过实例来讲述帮助学生有效、快速的理解。
重点难点讲授时,要充分利用多媒体课件辅助课堂教学,并通过计算机的一些动态显示技术来弥补传统课堂教学的不足。
同时,借助网络教学系统增大教学信息量并扩充理解课堂教学内容的渠道。
另外,通过课程QQ 群或微信群及时和学生互动,作为课堂教学的补充。
四、实验实践环节及基本要求1.实验实践教学环节在本课程中的作用及要求(实验教学大纲单独编写)。
编译原理是一门理论性和实践性都比较强的课程。
进行上机实验的目的是使学生通过完成上机实验题目加深对课堂教学内容的理解,同时培养学生实际动手能力。
2.实验项目(具体要求见实验教学大纲)实验一:词法分析器的构造(4学时)实验二:语法分析器的构造(4学时)六、对学生能力培养的要求通过课程学习,使学生掌握编译程序的基本构造和实现的基本原理,掌握编译过程各阶段所采用的主要算法、方法和技术,理解高级程序语言编译系统运行的基本原理,具有一定的自学能力和信息获取能力,具有计算机思维能力,能够分析、编制和调试简单编译程序,能站在系统的全局去看问题、分析问题和解决问题。
为学生学习后续课程以及解决生活、工作中遇到的相关问题提供技术和应用能力的支撑。
七、课程学时分配总学时64,其中讲课56学时,上机8学时。
课程主要内容和学时分配见课程学时分配表。
课程学时分配表八、建议教材和教学参考资料1.教材编译技术原理及方法.人邮,2022.2.主要参考书九、课程考核本课程采用闭卷考试方式,总评成绩由平时成绩和期末成绩组成:(1) 期末考试卷面成绩占总评成绩的70%;(2) 平时成绩占总评的30%,平时成绩评价内容可包含如下内容:作业:依据教学大纲规定的课程目标,设定相关的课程作业,并严格按照作业完成对课程目标的达成度进行准确评价,可分为A+、A、A-、B+、B、B-、C+、C、C-、D十个等级或给出具体分数;课内实验:依据大纲规定的实验目标和实验报告内容中包含的实验过程、分析和解决问题的思想过程、实验结果及其分析与评价、实验心得等内容进行打分,分A+、A、A-、B+、B、B-、C+、C、C-、D 十个等级或给出具体分数;随堂测验:按照提交答案的准确程度进行评价,可分为A+、A、A-、B+、B、B-、C+、C、C-、D十个等级或给出具体分数;课堂分组讨论或课外学习小组活动:主讲老师在课堂上根据教学内容提出问题,并分组进行讨论,形成小组讨论的结论,依据结论的准确性进行小组考核,可分A+、A、A-、B+、B、B-、C+、C、C-、D 十个等级或给出具体分数;其他:可根据学生考勤、纪律、学习态度等其他因素进行合理评价。
执笔人:审核人:教学院长:。