《编译原理及实践教程(第3版)》教学大纲

合集下载

编译原理第三版教学设计

编译原理第三版教学设计

编译原理第三版教学设计前言编译原理是计算机科学重要的基础课程之一,是计算机工程师必须掌握的一门课程。

本文将结合教学实践经验,介绍编译原理第三版的教学设计。

教材本教材选用了《编译原理(第三版)》(龙书)作为教材。

龙书详细地介绍了编译原理的相关知识,且内容涉及面广,是一本非常好的教材。

同时,我们也结合了其他教材和资料,为学生提供更多补充资料。

教学目标本课程的教学目标是让学生:•了解编译原理的基本概念和理论基础;•掌握编译过程中的词法分析、语法分析、语义分析、中间代码生成、目标代码生成等重要内容;•熟练掌握使用 C/C++ 语言的编译器开发工具链;•能够独立地设计并实现一个简单的编译器。

教学内容本课程的教学内容主要包括以下几个方面:1. 基础知识•概念和原理:编译器的作用及编译原理的基本概念;•自动机:DFA、NFA、NFA to DFA 的转换;•正则表达式和有限状态自动机;•上下文无关文法(CFG)和上下文无关语言;•语法分析:自上而下的递归下降语法分析器和自下而上的 LR 分析器;•语义分析和中间代码生成。

2. 工具链•Flex 和 Bison 的使用:生成 C 语言的词法分析器和语法分析器;•LLVM 工具链的使用:生成目标代码和执行程序;•GDB 调试工具的使用:程序调试。

3. 编译器实现•实现一个简单的编译器,包括词法分析器、语法分析器、语义分析器、中间代码生成、目标代码生成等模块。

教学方法我们采用了以下教学方法:1. 讲解法通过讲解法,向学生介绍编译原理的相关知识。

讲解后,我们会提供一些例子和实验来帮助学生理解。

2. 阅读法编译原理是一门深度理论课程,阅读法能够帮助学生更加深入地理解编译原理的相关知识。

我们会引导学生阅读相关教材和论文,同时也会向学生推荐一些相关资料。

3. 实践法实践法是本课程的核心方法之一。

我们会为学生提供一些练习、实验和编程作业,以确保学生能够具备实际的编译器开发能力。

第3章 语法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

第3章 语法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社
• 文法是被用来精确而无歧义地描述语言的句子的构成方式. • 文法描述语言的时候不考虑语言的含义。
3.2.1 文法的定义
例1:有如下规则
<句子><主语><谓语> <主语><代词>|<名词> <代词>我 <名词>大学生 <谓语><动词><直接宾语> <动词>是 <直接宾语><代词>|<名词>
(表示由…组成)
• 归约:推导的逆过程。
• 直接归约:直接推导的逆过程
几个概念的形式定义
• 直接推导: 如果αβ是文法 G=(Vn,Vt,P,S)
的产生式,γ和δ是V*中的任意符号,若有符号 串v,w满足: v=γαδ,w=γβδ,则说v直接产生w,(w是v的 直接推导)记作:v=>w 例:S01, 0S0=>0010(直接推导γ=0,δ=0) • 如果存在v=>w0=>w1=>w2...=>Wn=w(n>0),则 称v推导出w(长度为n),记作v+=>w(至少一步) • 若有v=>w或v=w,则记作v*=>w(0步或若干步)
一个非终结符号,β∈V*)
–上例中: G=(Vn,Vt,P,<句子>)
Vn=(<句子>,<主语>,<谓语>,<代词>,<动词>,
<名词>,<直接宾语>)
Vt= (我,是,大学生)
P=
<句子><主语><谓语>
<主语> <代词>|<名词>

第1章 概述-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

第1章 概述-编译原理及实践教程(第3版)-黄贤英-清华大学出版社
• 重点掌握:编译程序工作的基本过程及其各阶 段的基本任务,编译程序总框。
《编译原理实践及应用》
1.1 程序设计语言及翻译程序
为什么要使用编译程序?
• 机器语言 (machine language)
C7 06 0000 0002
• 汇编语言 (assembler language)
MOV X , 2
为该语言编译程序能够识别的形式加入到标准源程序中。 在VC++6.0中,通过预处理后,将.c的源程序变为了.i的文 本文件。
《编译原理实践及应用》
编译
标准的C语言程序由编译程序翻译为对应于某个计算机 上的汇编语言程序。汇编语言是和机器语言一一对应的易于 阅读的文本形式的语言。编译的结果是某种机器上汇编语言 书写的程序。如在VC++6.0中,编译这一步将.i的文本文件 生成了.cod的文本文件,这就是汇编代码。有的编译器生成 .s或.asm后缀的文件。
• 解释程序:将高级程序设计语言写的源程序作为输入,
边解释边执行源程序本身,而不产生目标程序的翻译程序。
• 其他概念:
– 诊断编译程序 – 优化编译程序 – 交叉编译程序 – 可变目标编译程序
宿主机 目标机
《编译原理实践及应用》
对编译程序的一些说明
• 编译程序实质上是一个翻译程序,要注意等价变 换
• 高级语言 (high-level language)
X=2
《编译原理实践及应用》
语言层次和翻译程序大家族
翻译程序:能够将某种语言写的程序转换成另一
种语言的程序,而且后者与前者在逻辑上是等价的。
转换
高级语言层 高级语言1
程序
高级语言2
高级语言3 高级语言4

《编译原理及实践教程(第3版)》教学大纲

《编译原理及实践教程(第3版)》教学大纲

《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。

本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。

让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。

二课程目标(一)课程具体目标1. 掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3 掌握计算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。

)2. 能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析;(毕业要求4.1 能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。

)3. 理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。

(毕业要求1.4 能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。

)(二)课程目标与毕业要求的关系本课程目标主要支撑的毕业要求指标点如表1所示。

除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5(选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。

表1 本课程对专业毕业要求指标点的支撑(三)教学内容安排总体思路本课程的教学内容,以课程具体目标为总体指导进行制定。

通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种高级语言编译程序构造的一般原理和基本方法,如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。

3.5节 语法分析的自动生成-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

3.5节 语法分析的自动生成-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

%%
• 第二节是文法记号的声明,一般以%start S 的形式说明文法的开始符号,用%token
辅助过程
IF、DO、…、ID、… 的形式说明记号。记 号被YACC赋予了不会与任何字符值冲突的
数字值
• 数据类型、全局变量
等遵循C语言的定义, %{
可包含预处理语句等, 需要用%{和%}括起来
#include<stdio.h> %}
的最受欢迎的语法分析生成器
• Jflex——是一个Java的词法/语法分析生成器
• Jison ——JavaScript解析器。Jison 将一个上下文无关语
法作为输入,输出对应的JavaScript代码,类似Yacc
• Grammatica——C#和Java的语法剖析器生成器。相对于
其它一些类似的工具如yacc和ANTLR有了更好的改进:创 建了更好的注释和易读的源代码/拥有错误自动恢复并能 够详述错误信息/支持语法、词法测试与调试.
– YACC在对源文件进行编译时,将对所有的单词和非终 结符进行编码,并用该编码建立分析表和语法分析器 。单词的编码原则是:字符单词使用其对应的ASCII码 ,有名单词则由分析器进行编码。用户在对有名单词 进行命名时,一定要注意不要和使用该单词名的C源程 序中已有的宏名相同,否则在编译该C模块时是会产生 宏定义冲突的。
由Johnson等人在美国Bell实验室研制开发
• yacc生成的编译器主要是用C语言写成的语法解析
器(Parser),需要与词法分析器Lex一起使用, 再把两部份产生出来的C程序一并编译。
• yacc本来只在Unix系统上才有,GNU 版叫做 Bison。
现在已普遍移植到Windows及其他平台。

编译原理 教学大纲

编译原理  教学大纲

编译原理一、课程说明课程编号: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二、课程设置的目的意义本课程是软件工程专业一门重要的专业基础课程,它与操作系统构成了程序员与计算机之间的接口,是一个优秀的程序员所必须了解的背景知识。

编译系统是计算机系统软件的重要组成部分,其基本原理和实现技术在软件工程、软件自动化、程序分析等领域都有广泛的应用。

本课程的教学目的在于系统地向学生讲述编译程序的结构及其各组成部分的设计原理与实现技术,使学生掌握编译程序的基本原理、方法和实现技术,更好的理解程序语言的内部机制、理解计算机软硬件系统的基本架构与工作原理,培养学生设计、实现和分析简单编译软件的能力,并能在思维素质方面得到拓展提高,进一步理解计算机学科中解决问题的思路方法。

课程主要讲授:自动机与形式语言基础;词法分析;语法分析;语法制翻译与中间代码生成;中间代码优化等。

在课程教学实践中,注重“理论与实践相结合及创新能力”的培养,使学生既获得专业能力的训练又能了解软件系统的基本结构,掌握软件开发基本方法和技术。

通过实验课程使学生掌握编译领域的基本方法并运用所学方法完成编译器的开发。

三、课程的基本要求通过本课程的学习,学生应掌握高级程序设计语言的编译原理和基本技术、具体设计实现编译程序的基本技能,特别对形式语言和自动机、程序自动生成、语法制导翻译、数据流分析、控制结构分析及优化技术等基本原理和技术等基本原理和技术有较深入的了解。

编译原理教学大纲(3).docx

编译原理教学大纲(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养时)主要内容:白底向上方法概述,简单优先分析法,算符优先文法的定义,算符优先关系表的构造,算符优先分析算法,算符优先分析法的局限性重点:算符文法的形式;构造单优先分析表和算符优先关系分析表;句型的句柄和最左索短语。

第2章 词法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

第2章 词法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

=> 0 >
1=
2
>
3=
4
其他
Hale Waihona Puke 其他6*5*
识别>、>=、>>、>>=四个单词的状态转换图
数值型常量的识别
0~9
1~9
=> 0
1
其他
* 2
0
十进制整型数
=> 0
0~7 0 3 其他 4 *
八进制整型数
=> 0 0
0~9
0~9 |a~f
|a~f |A~F
3 x/X 5 |A~F 6 其他 7 *
十六进制整型数
字母或数字
* 0 字母 1 其它 2
识别标识符的转换图
一个状态图可用于识别一定的字符串,大多数程序 设计语言的单词符号都可以用转换图来识别。
字母或数字
* 0 字母 1 其它 2
识别过程是:从初始状态0开始,若读入一个字母, 转入1状态,若再读入字母或数字,仍处于1状态, 否则转向2状态,结束一个标识符的识别过程。状 态上的*表示多读入一个符号。
错误处理程序
源 程 序









析单 析 语

词 记

法 单
析 器
语 法 单
中 间 代 码 生 成 器
中 间 代
代 码 优 化

中 间 代
目 标 代 码 生 成

目 标 代 码





表格管理程序
2.1 词法分析器概述
• 功能:
源程序
词法分析程序 Token串 语法分析程序
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。

本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。

让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。

二课程目标(一)课程具体目标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学时。

讲授环节主要采用教师讲解、演示、互动的教学形式。

教师讲解知识点、演示程序代码,使学生对知识点形成直观印象,并通过课堂教学双方互相提问,与学生互动,鼓励学生在课堂上发表自己的见解,加深对知识点的理解,达到课程目标。

上机环节主要采用教师安排任务、学生自主上机练习,教师现场指导、答疑的形式。

上机练习可利用实验室电脑或学生个人电脑编程,通过安装在本地的编译环境进行上机练习。

相关文档
最新文档