《编译原理及实践教程(第3版)》教学大纲
- 格式:docx
- 大小:37.10 KB
- 文档页数:10
编译原理第三版教学设计前言编译原理是计算机科学重要的基础课程之一,是计算机工程师必须掌握的一门课程。
本文将结合教学实践经验,介绍编译原理第三版的教学设计。
教材本教材选用了《编译原理(第三版)》(龙书)作为教材。
龙书详细地介绍了编译原理的相关知识,且内容涉及面广,是一本非常好的教材。
同时,我们也结合了其他教材和资料,为学生提供更多补充资料。
教学目标本课程的教学目标是让学生:•了解编译原理的基本概念和理论基础;•掌握编译过程中的词法分析、语法分析、语义分析、中间代码生成、目标代码生成等重要内容;•熟练掌握使用 C/C++ 语言的编译器开发工具链;•能够独立地设计并实现一个简单的编译器。
教学内容本课程的教学内容主要包括以下几个方面:1. 基础知识•概念和原理:编译器的作用及编译原理的基本概念;•自动机:DFA、NFA、NFA to DFA 的转换;•正则表达式和有限状态自动机;•上下文无关文法(CFG)和上下文无关语言;•语法分析:自上而下的递归下降语法分析器和自下而上的 LR 分析器;•语义分析和中间代码生成。
2. 工具链•Flex 和 Bison 的使用:生成 C 语言的词法分析器和语法分析器;•LLVM 工具链的使用:生成目标代码和执行程序;•GDB 调试工具的使用:程序调试。
3. 编译器实现•实现一个简单的编译器,包括词法分析器、语法分析器、语义分析器、中间代码生成、目标代码生成等模块。
教学方法我们采用了以下教学方法:1. 讲解法通过讲解法,向学生介绍编译原理的相关知识。
讲解后,我们会提供一些例子和实验来帮助学生理解。
2. 阅读法编译原理是一门深度理论课程,阅读法能够帮助学生更加深入地理解编译原理的相关知识。
我们会引导学生阅读相关教材和论文,同时也会向学生推荐一些相关资料。
3. 实践法实践法是本课程的核心方法之一。
我们会为学生提供一些练习、实验和编程作业,以确保学生能够具备实际的编译器开发能力。
《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。
本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。
让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。
二课程目标(一)课程具体目标1. 掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3 掌握计算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。
)2. 能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析;(毕业要求4.1 能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。
)3. 理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。
(毕业要求1.4 能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。
)(二)课程目标与毕业要求的关系本课程目标主要支撑的毕业要求指标点如表1所示。
除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5(选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。
表1 本课程对专业毕业要求指标点的支撑(三)教学内容安排总体思路本课程的教学内容,以课程具体目标为总体指导进行制定。
通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种高级语言编译程序构造的一般原理和基本方法,如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。
编译原理一、课程说明课程编号:390114X10课程名称(中/英文):编译原理/Compiler Principles课程类别:学科基础课学时/学分:48/3先修课程:C语言程序设计、数据结构、离散数学适用专业:软件工程教材、教学参考书:[1] 程序设计语言编译原理,陈火旺,北京:国防工业出版社,2003[2] Compilers: Principles Techniques, and Tools,Alfred V A, Ravi S, Ulman J D, Addison-Wesley Publishing Company,2003[3] 编译原理(第3版)/“十二五”普通高等教育本科国家级规划教材,陈意云,张昱编,北京:高等教育出版社,2013二、课程设置的目的意义本课程是软件工程专业一门重要的专业基础课程,它与操作系统构成了程序员与计算机之间的接口,是一个优秀的程序员所必须了解的背景知识。
编译系统是计算机系统软件的重要组成部分,其基本原理和实现技术在软件工程、软件自动化、程序分析等领域都有广泛的应用。
本课程的教学目的在于系统地向学生讲述编译程序的结构及其各组成部分的设计原理与实现技术,使学生掌握编译程序的基本原理、方法和实现技术,更好的理解程序语言的内部机制、理解计算机软硬件系统的基本架构与工作原理,培养学生设计、实现和分析简单编译软件的能力,并能在思维素质方面得到拓展提高,进一步理解计算机学科中解决问题的思路方法。
课程主要讲授:自动机与形式语言基础;词法分析;语法分析;语法制翻译与中间代码生成;中间代码优化等。
在课程教学实践中,注重“理论与实践相结合及创新能力”的培养,使学生既获得专业能力的训练又能了解软件系统的基本结构,掌握软件开发基本方法和技术。
通过实验课程使学生掌握编译领域的基本方法并运用所学方法完成编译器的开发。
三、课程的基本要求通过本课程的学习,学生应掌握高级程序设计语言的编译原理和基本技术、具体设计实现编译程序的基本技能,特别对形式语言和自动机、程序自动生成、语法制导翻译、数据流分析、控制结构分析及优化技术等基本原理和技术等基本原理和技术有较深入的了解。
编译原理教学大纲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养时)主要内容:白底向上方法概述,简单优先分析法,算符优先文法的定义,算符优先关系表的构造,算符优先分析算法,算符优先分析法的局限性重点:算符文法的形式;构造单优先分析表和算符优先关系分析表;句型的句柄和最左索短语。
《编译原理》教学大纲大纲说明课程代码: 3225003总学时: 64 学时(讲课 48 学时,实验16 学时)总学分: 4课程类别:学科基础课适用专业 : 计算机科学与技术(专业)预修要求: C 语言程序设计、 C++ 程序设计、数据结构课程的性质、任务及地位:《编译原理》是计算机科学与技术专业的一门重要基础课。
通过对该课程的学习,使学生掌握编译过程中的相关原理和编译技术,让学生能初步进行编译程序的开发和维护,同时促进提高学生开发软件的能力。
教学目的与基本要求:本课程的目的,通过向学生讲述编译系统的结构、工作流程及编译程序各部分的设计原理和实现技术,使学生既掌握编译技术理论的基础与基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。
本课程理论性较强。
因授课对象为工科学生,所以在强调编译系统的构造原理和实现方法的同时,为培养学生的实际工作能力,通过上机实践进一步加深学生对课堂教学内容的理解。
目的是要使学生牢固掌握相关的基本理论和基本方法,并能初步利用上述理论和方法解决简单实际问题。
教学方法和教学手段的建议:在教学方法上,贯彻理论联系实际、“精讲、多练”的原则,进行案例式、启发式的教学,对于一些实际性较强的问题要多采用课堂讨论等方式,以提高学生的思辨能力和学习的主动性;引导学生读书、理解、体悟、运用相结合;提高学生的学习兴趣与热情,培养与发挥学生的提出、分析及解决问题的能力。
教学手段:运用多媒体教学手段 +黑板 +上机实验的手段。
采取课堂讲授、课堂讨论、课后练习与自学等形式。
大纲的使用说明:大纲对课程性质、目的等作简单说明,同时列出各章节要学习的知识点、重点、难点,便于教学时教授重点的安排和学生自学安排。
大纲正文第一章引论学时: 4 学时(讲课 4 学时,实验 0 学时)了解编译的概念;理解编译程序的各组成部分及功能。
本章讲授要点:介绍程序设计语言与编译程序间的关系,主要内容包括:各级程序设计语言的定义、源程序的执行、编译程序的构造、编译程序的分类、形式语言理论与编译实现技术的联系。
第3讲语法树和文法的二义性0.本节教学内容:1)回顾第2讲的内容,为本讲打下基础2)教材第2章2.33)教材第2章2.44)教材第2章2.5一.本节教学要求:用语法树来观察句子的构成,表示句子的层次关系。
然而一个句子不一定只对应于一棵语法树,也就是说文法可能存在二义性。
以及文法的分类和Sample 语言的简介。
二.教学方式及学时分配:采用教师讲授+学生提问+学生练习的方式总共2学时,主要分配在第2.3节上,提问及总结以前的内容大约20分钟三.教学重点:●语法树●文法的二义性四.教学难点:●文法的二义性五.教学过程中的注意事项:1.本节内容概念相对较多,采取先提出问题,再解决问题的授课方式,让学生抓住知识要点。
3.以讲解+课堂练习的方式,巩固学生对具体实现方法和步骤的练习。
六.学习方法:1.一定要抓住老师上课时提出的问题,从而掌握知识要点;然后反复练习掌握基本概念和基本方法。
3.从本节开始难度增大,多练习,在完成作业的过程中加深对抽象理论的理解。
七.教学内容1.复习2.语法分析树语法分析树就是用一张图来表示一个句型的推导,简称语法树,有助于理解一个句子语法结构的层次。
在语法树生长过程中的任意时刻,所有那些没有后代的端末结点从左到右排列起来构成一个句型。
例如,对文法(2.1),E→E+E | E*E | (E) | -E | i表达式(i+i)*i的最左推导的语法树(包括推导过程)如下错误!未找到引用源。
所示。
虽然是最左推导的语法树,但在第4层,到底是左边的E先推导出i,还是右边的E先推导出i,从语法树上反映不出来。
因此一棵语法树表示了一个句型很多可能的不同推导过程,包括最左推导和最右推导。
一棵语法树是这些不同推导过程的共性抽象,它不能表示非终结符替代顺序的选择。
如果只考虑最左推导(或最右推导),则可以消除推导过程中产生式应用顺序的不一致性。
每棵分析树都有一个与之对应的唯一的最左推导和唯一的最右推导。
第4讲词法分析概述0.本节教学内容:1)回顾上一章的内容,为本章打下基础2)教材第3章3.13)教材第3章3.2一.本节教学要求:掌握词法分析器的任务和功能,理解词法分析器的设计,为实验部分词法分析器的手工生成打下基础。
二.教学方式及学时分配:采用教师讲授+学生提问的方式总共2学时,主要分配在第3.2节上,提问及总结以前的内容大约20分钟三.教学重点:●词法分析器的任务和功能●词法分析器的设计●状态转换图四.教学难点:●词法分析器的设计●状态转换图五.教学过程中的注意事项:1.首先介绍词法分析的功能、输入、输出接口,让学生对语法分析的地位和如何编写有一个整体的把握,这样学生做实验才容易上手。
2.以讲解+课堂练习的方式,巩固学生对具体实现方法和步骤的练习。
六.学习方法:1.从整体上把握词法分析器与周围各部分的关系,为理解和实验作准备。
2.从本节起实验开始,具有一定的难度,要调整学习方法,课上认真理解,课下多动手实践。
七.教学内容1.复习2.词法分析器的功能词法分析的主要任务是从左至右逐个字符地对源程序进行扫描,将字符拼接成单词,每当识别出一个单词,就产生其种别码,把作为字符串的源程序改造成单词符号串的中间形式,提交给语法分析程序使用。
它是编译器中唯一与源程序打交道的部分,主要工作有:(1)按规则识别单词,输出单词本身及其种别码。
这是词法分析的主要任务;(2)滤掉源程序中的无用成分,如注释、空格、回车换行等。
这些部分只是有助于源程序的阅读,对生成代码无用;(3)调用出错处理器,识别并定位错误。
词法错误是源程序中的常见错误,如出现非法字符、违反构词规则的单词等;(4)调用符号管理器,将识别出来的单词及其属性进行管理。
有些源语言支持宏预处理功能,也可以在词法分析程序中完成。
3.单词的类型程序设计语言可以根据单词在语言中的作用将单词大致分为5类:(1)关键字:这类单词在特定语言中有固定的意义,如begin、end、while 等,它们是字母的固定串。
第20讲语义分析和中间代码生成0.本节教学内容:1)回顾编译程序的组成部分,了解本节内容所处的位置2)属性文法和语法制导的翻译的基本概念3)语义分析与处理的方法4)中间代码的表示形式一.本节教学要求:1属性文法和语法制导的翻译的基本概念2语义分析与处理的方法3中间代码的表示形式二.教学方式及学时分配:采用教师讲授+提问+学生练习的方式总共2学时,提问及总结以前的内容大约20分钟三.教学重点:1.语义分析和中间代码生成在编译器中的位置及其功能2.属性的定义及属性的计算3.中间代码的表示形式4.自底向上语法语法制导翻译的特点四.教学难点:1.自底向上语法语法制导翻译的特点五.教学过程中的注意事项:1.注重学生知识的前后联系,复习编译程序的结构很又必要2.语法制导的翻译是在语法分析的基础上,当分析出一个语法单位后进行翻译,根据语法分析的方法,有自底向上和自顶向下两种方法。
3.理解中间代码的形式是本节学习的一个重点,必须掌握。
六.学习方法:1.理解翻译的文本转化特性是学习编译程序的一个关键,本节转换的目标文本是中间代码。
七.教学内容2.本次教学内容小节:1.语义分析和中间代码生成在编译器中的位置及其功能2.属性文法和语法制导的翻译的基本概念3.中间代码的表示形式4.自底向上语法语法制导翻译的特点八.本章参考资料:1.《编译原理》第6章,吕映芝编,清华大学出版社2. 编译原理实验指导书, 例题中间代码部分3. 编译原理——习题与解析第6章伍春香编,清华大学出版社4. 编译原理课程辅导与习题解析第4章,胡元义编,人民邮电出版社九.本节作业:复习教材第六章第1,2节,第七章的第一节。
第16讲自下而上语法分析方法0.本节教学内容:1)回顾上一节的内容,为本节打下基础2)算符优先关系表的生成算法3)算符优先分析方法一.本节教学要求:1. 掌握算符优先分析方法2.掌握算符优先关系表的构造算法二.教学方式及学时分配:采用教师讲授+提问+学生练习的方式总共2学时,提问及总结以前的内容大约20分钟三.教学重点:1.算符优先分析方法及其基本概念四.教学难点:1.算符优先分析中最左素短语的概念五.教学过程中的注意事项:1.算符优先关系表的构造要使用FirstVT,LastVT集合,因此必须在课前重新复习FirstVT,LastVT集的定义和计算方法,目的是为了讲解算符优先分析表的构造算法。
2.本节内容中总控程序的工作过程的理解是关键,一定要讲清楚总控程序的工作过程,以及何时进行归约,如何进行归约。
3.在讲解算符优先分析时要和规范归约过程进行比较,最左素短语与句柄之间的差别,也就是何时进行归约构成了算法之间的主要差别。
六.学习方法:1.从整体上把握算符优先分析总控程序的工作过程以及何时进行归约,为理解和计算作准备。
七.教学内容FirstVT,LastVT集的概念和计算方法2.构造优先关系表如果每个非终结符的FIRSTVT和LASTVT集均已知,则可根据定义构造优先关系表。
–构造思路:•(1) 若产生式是形如:P→…ab…或 P→…aQb…的形式,则有a == b•(2)若产生式右部是...aR...的形式,则对于每个b∈FirstVT(R)都有a 《 b• (3)若产生式右部有...Rb的形式,则对于每个a∈LastVT(R)集,都有a 》 b优先关系表构造算法for 每个形如P X1X2…X n的产生式 dofor i =1 to n-1 dobeginif Xi和Xi+1都是终结符 thenXi = Xi+1if i<= n-2, Xi和Xi+2是终结符, 但Xi+1为非终结符 thenXi = Xi+2 if Xi为终结符, Xi+1为非终结符 thenfor FirstVT中的每个元素a doXi < a ;if Xi为非终结符, Xi+1为终结符 then for LastVT中的每个元素a doa > Xi+1 ;end;练习给定文法G[S]:S -> a | (T)T -> T,S | S 的FirstVT和LastVT集,构造优先关系表。
《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。
本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。
让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。
二课程目标(一)课程具体目标1. 掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3 掌握计算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。
)2. 能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析;(毕业要求4.1 能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。
)3. 理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。
(毕业要求1.4 能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。
)(二)课程目标与毕业要求的关系本课程目标主要支撑的毕业要求指标点如表1所示。
除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5(选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。
表1 本课程对专业毕业要求指标点的支撑(三)教学内容安排总体思路本课程的教学内容,以课程具体目标为总体指导进行制定。
通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种高级语言编译程序构造的一般原理和基本方法,如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。
为达成课程具体目标,教学内容中除安排课内讲授知识外,还包括课程作业和课内实验,旨在巩固课堂传授知识点,使学生在面对计算机复杂工程问题时,能将编译技术合理运用于该类工程的设计实现之中,进行解决方案的分析和改进,并进行合理的需求分析、功能分析和验证。
本课程的教学内容不仅完全覆盖课程拟达成的具体目标,同时,根据计算机科学与技术专业人才培养总体目标,以及课程所面向学生特点,课程内容还涉及计算机体系结构、汇编语言、项目管理等内容,旨在培养知识交叉应用、沟通交流等综合工程能力。
三教学内容及基本要求(一)编译程序的基本概念(4学时)主要内容:(重点覆盖课程目标1)⑴程序设计语言及翻译程序。
⑵编译系统。
⑶编译过程和编译程序的结构。
⑷编译程序的构造方法。
⑸认识高级语言:结构、构成成分和语言规范。
⑹编译程序的发展。
1. 基本要求⑴了解编译技术的发展,编译程序的构造方法。
⑵掌握高级语言程序编译系统,编译过程,程序设计语言的结构和规范。
⑶掌握编译过程和编译程序的结构。
2. 重点、难点重点:高级语言的编译过程。
难点:编译程序的结构,高级语言的编译过程。
3. 作业及课外学习要求作业:了解有关高级语言的编译系统,认识给定高级语言代码的编译过程及结果。
(二)词法分析(8学时)(重点覆盖课程目标1,3)主要内容:⑴词法分析概述。
⑵高级语言中的单词。
⑶单词的识别。
⑷词法分析器的设计。
⑸正则表达式与有穷自动机。
⑹词法分析器的自动生成工具。
1. 基本要求⑴了解词法分析器自动生成工具。
⑵了解高级语言中单词的种类。
⑶掌握利用状态转换图识别单词的方法。
⑷掌握利用正则表达式进行单词识别的原理和方法。
2. 重点、难点重点:状态转换图,有穷自动机。
难点:正则式转NFA,NFA转DFA,DFA最小化。
3. 作业及课外学习要求作业:画状态转换图,将自然语言转换为正则表达式,正则式到确定的最小化DFA的转换。
课外学习要求:上网查阅资料,多种不同的词法分析自动生成器的使用方法。
(三)语法分析(10学时)(重点覆盖课程目标1,3)主要内容:⑴语法分析概述。
⑵上下文无关文法。
⑶自上而下语法分析方法:递归下降分析法和预测分析方法,LL(1)文法。
⑷自下而上的语法分析,移进-归约的规范方法,算符优先、LR方法。
⑸语法分析的自动生成器。
⑹语法分析器的设计。
1. 基本要求⑴了解语法分析自动生成器。
⑵掌握上下文无关文法相关概念,熟悉用上下文无关文法定义某种高级语言的语法结构。
⑶掌握自上而下语法分析的特点,对文法的要求,能用两种不同的自上而下分析方法对给定的文法进行判断和分析。
⑷掌握自下而上语法分析的基本概念和特点,掌握用两种不同的自下而上分析方法,能对给定的文法进行判断和分析。
2. 重点、难点重点:上下文无关文法的基本概念,LL(1)文法,OPG文法,LR文法,各种文法的分析的基本算法。
难点:对文法进行判断和分析。
3. 作业及课外学习要求作业:给定某高级语言的特定语法成分对应的文法,能对文法进行各种判断和分析。
课外学习要求:通过完成作业和实验,进一步掌握不同语法分析适合于不同种类的文法的要求。
通过网络搜索,了解各种不同的语法分析自动生成器。
(四)语义分析(3学时)(重点覆盖课程目标1,3)主要内容:⑴语义分析概述。
⑵某高级语言各种语法成分的语义描述。
⑶符号表管理技术。
⑷静态语义检查技术。
⑸语义分析器的设计。
1. 基本要求⑴掌握语义分析的相关概念。
⑵掌握符号表管理技术。
⑶掌握静态语义检查的相关方法和技术。
⑷熟悉某种具体的高级语言对语义的要求。
2. 重点、难点重点:高级语言的语义描述方法,符号表管理技术。
难点:符号表管理技术、静态语义检查技术。
3. 作业及课外学习要求作业:对某特定高级语言的语法成分进行静态语义检查。
课外学习要求:熟悉不同的高级语言的语义描述。
(五)中间代码生成(8学时)(重点覆盖课程目标1,4)主要内容:⑴中间代码生成概述。
⑵属性文法的基本概念,高级语言语法成分的语义表示。
⑶中间代码及其各种形式。
⑷声明语句、算术表达式和布尔表达式、控制语句、函数的目标结构和翻译方法。
1. 基本要求⑴掌握中间代码的形式,语法制导的翻译方法。
⑵掌握属性文法的概念,能用属性文法表示某高级语言特定语法成分的语义信息。
⑶掌握高级语言各种语法成分的翻译技术。
⑷中间代码生成器的设计。
2. 重点、难点重点:用属性文法描述各种语法成分的语义信息,各种语法成分语法制导的翻译方法。
难点:用属性文法描述各种语法成分的语义信息。
3. 作业及课外学习要求作业:将高级语言的特定语法成分翻译为特定的中间代码形式。
课外学习要求:熟悉中间代码形式,调试程序,将特定高级语言的特定语法成分翻译为中间代码。
(六)运行时存储组织(2学时)(重点覆盖课程目标1,4)主要内容:⑴存储器组织。
⑵函数调用相关概念。
⑶存储分配策略。
⑷垃圾回收机制。
1. 基本要求⑴了解垃圾回收机制。
⑵掌握程序运行时存储器的划分,活动记录。
⑶掌握函数调用方式及相关概念。
⑷理解各种存储分配方式,掌握栈式存储分配策略。
2. 重点、难点重点:程序运行时存储器的划分,函数调用机制,栈式存储分配策略。
难点:函数的相关概念,函数运行时的存储分配。
3. 作业及课外学习要求作业:函数运行时存储器变化。
课外学习要求:上网查阅存储分配的相关信息。
(七)代码优化(2学时)(重点覆盖课程目标1,4)主要内容:⑴基本块的划分,程序流图。
⑵局部优化技术。
⑶循环优化技术。
1. 基本要求⑴掌握基本块的划分方法,画程序流图。
⑵掌握局部优化技术。
⑶掌握全局优化技术。
2. 重点、难点重点:基本块划分,流图,优化技术。
难点:基本块划分。
3. 作业及课外学习要求作业:对给定的程序划分基本块,画出流图。
课外学习要求:上网查阅更多的代码优化技术。
(八)目标代码生成(3学时)(重点覆盖课程目标1,4)主要内容:⑴目标代码生成器概述。
⑵目标机器结构及指令系统。
⑶简单的代码生成技术。
⑷基本块的代码生成方法。
⑸从DAG生成目标代码的方法。
⑹目标代码生成器的设计。
1. 基本要求⑴了解目标代码生成器所涉及到的相关信息。
⑵熟悉某种目标机器结构及指令系统。
⑶掌握简单的代码生成技术。
⑷掌握引用信息、活跃信息,寄存器描述器和地址描述器,基本块的代码生成技术。
⑸了解从DAG生成目标代码的方法。
⑹熟悉目标代码生成器的设计方法。
2. 重点、难点重点:简单代码生成技术、基本块的代码生成技术。
难点:引用信息、活跃信息,寄存器描述器和地址描述器。
3. 作业及课外学习要求作业:能够对给定的中间代码生成目标代码。
课外学习要求:上网查阅目标代码生成的方法。
(九)课程实验实验一:词法分析实验(6学时)实验内容:(重点覆盖课程目标2,3)设计并实现sample语言或者其他高级语言的词法分析器,读入源程序,根据对应高级语言的构词规则拆分出单词。
其中用状态转换图的方法实现词法分析实验2学时,用自动生成器实现词法分析程序4学时。
实验二:语法分析实验(6学时)实验内容:(重点覆盖课程目标2,3)利用自上而下的方法,或者自下而上的语法分析方法,设计并实现sample语言或者其他语言的语法分析器。
其中需要分别实现算术表达式、布尔表达式、控制语句的语法分析。
实验三:语义分析实验(2学时)实验内容:(重点覆盖课程目标2,3)根据给定语言的静态语义要求,设计并实现sample语言或者其他语言的静态语义检查程序。
实验四:中间代码生成实验(6学时)实验内容:(重点覆盖课程目标2,3)利用属性文法和语法制导翻译方法,设计并实现sample语言或者其他语言的中间代码生成器。
其中需要分别实现算术表达式、布尔表达式、控制语句的中间代码生成。
实验五:运行时存储组织实验(2学时)实验内容:利用VC++或者其他语言的反汇编程序查看C语言程序生成的汇编代码,观察程序在内存中的存储情况。
实验六:代码优化(2学时)实验内容:(重点覆盖课程目标2,3)设计基本块的DAG代码优化器。
实验七:目标代码生成实验(2学时)实验内容:(重点覆盖课程目标2,3,4)根据简单代码生成器的生成算法,设计并实现目标代码生成器,将中间代码转换为汇编代码。
四教学安排及教学方式总学时64学时,其中,讲授40学时,实验(上机)24学时。
讲授环节主要采用教师讲解、演示、互动的教学形式。
教师讲解知识点、演示程序代码,使学生对知识点形成直观印象,并通过课堂教学双方互相提问,与学生互动,鼓励学生在课堂上发表自己的见解,加深对知识点的理解,达到课程目标。
上机环节主要采用教师安排任务、学生自主上机练习,教师现场指导、答疑的形式。
上机练习可利用实验室电脑或学生个人电脑编程,通过安装在本地的编译环境进行上机练习。