编译原理要点整理

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

编译原理要点整理

//红色字体标注的是重点中的重点,大题的归宿

第一章引论

1.翻译器,编译器的定义

2.编译器工作步骤和流程

3.编译器前端后端的概念,理解为什么要有前端后端

4.“遍”的概念

第二章词法分析

1.词法分析器的定义

2.词法分析器所要完成的任务

3.记号,模式,词法单元概念区分

4.串的运算(和,连接,指数,闭包,正闭包)

5.正规定义

6.转换图(注意开始状态和结束状态以及需要将指针回退的状态)

7.不确定的有限自动机(NFA)定义

8.确定的有限自动机(DFA)定义

9.从正规式到NFA(明确通过正规式如何构造连接运算,和运算,闭包运算的NFA)

10.此方法产生的NFA的性质

11.从NFA到DFA(子集构造法)

12.DFA的化简(合并不可区别状态)

13.从语言描述直接到DFA

14.了解Lex

学完本章:能语言描述改写成正规定义,能将正规定义转化为语言描述,给出一个正规式,能转换成相应的NFA,DFA并化简。

第三章语法分析

1.上下文无关文法定义

2.区分句子和句型

3.最左推导&& 最右推导

4.分析树

5.文法二义性

6.消除左递归&& 提左因子

7.了解语言鸟瞰(0型文法:短语文法;1型文法:上下文有关文法;2型文法:

上下文无关文法;3型文法:正规式)

8.FIRST集合&& FOLLOW集合定义及计算方法

9.LL(1)文法定义

10.了解自上而下的递归下降的预测分析

11.自上而下非递归的预测分析(详细明确预测分析器接受某一输入串时的具体过

程,明确栈如何变化,输入输出如何变化)

12.预测分析表的构造

13.句柄的概念

14.自下而上的分析方法:用栈实现移近-归约分析(详细明确预测分析器接受某一

输入串时的具体过程,明确栈如何变化,输入输出如何变化)

15.LR文法和LR分析算法

16.构造SLR分析表(从文法构造识别活前缀的DFA(LR(0)项目集规范族),从

DFA构造SLR分析表)

17.构造规范的LR分析表(从文法构造识别活前缀的DFA(LR(1)项目集规范族),

从DFA构造规范的LR分析表)

18.构造LALR分析表(从文法构造识别活前缀的DFA(合并同心的LR(1)项目集),

从DFA构造规范的LR分析表)(合并同心项目集可能会引起归约-归约冲突,不

会引起新的移进-归约冲突)

学完本章:能计算FIRST集合和FOLLOW集合;给定一个文法,能判断是否是LL(1)文法,并为其构造分析表;能构造LR(1)文法的三种预测分析表;明确移近归约分析中的每一个步骤,明确栈如何变化。

第四章语法制导的翻译

1.语法制导的定义

2.综合属性(S属性定义)

3.注释分析树(S属性定义可以自下而上的完成)

4.继承属性

5.语法树

6.S属性的自下而上计算(将LR分析器增加一个域来保存综合属性值)(一定要明

确每一步移近-归约时属性栈如何变化)

7.L属性定义(例:变量类型声明的语法制导定义)

8.翻译方案(能根据文法以及需要计算的属性写出一个翻译方案)

9.L属性定义的自上而下的计算

10.L属性定义的自下而上的计算

学完本章:要能根据要求设计简单问题的语法制导定义和翻译方案。

例:为文法

S—> ( L ) | a

L—> L , S | S

写一个语法制导定义,它输出括号的对数。

第五章(不要求)

第六章运行时存储空间的组织和管理

1.过程定义、过程调用、形式参数、实在参数、活动的生存期

2.名字的作用域和绑定

3.活动记录(运行程序时存储区布局,活动记录的一般布局)

4.局部数据的安排(内存对齐问题)

5.局部存储分配策略

6.全局存储分配策略(静态,栈式,堆式)

7.运行栈&& 活动树

8.访问链&& 控制链

9.非局部名字的访问(静态作用域,动态作用域的区别)

10.四种参数传递方式的区别(值调用,引用调用,复写-恢复调用,换名调用)

学完本章:能判断一个变量的作用域;熟悉静态分配与动态栈式分配的区别;明确非局部数据访问的实现方法;各种参数传递方式的区别;会处理内存对齐问题;会画活动树。

例:指出下面程序中各个变量对应的分配策略?

int a;

void p(int b){

int c;

int *d = malloc(sizeof(int)*b);

}

void main(){p(3);}

第七章中间代码生成

1.中间语言(能将表达式转化为后缀表示,图形表示,三地址代码形式)

2.区分图形表示中的语法树和有向无环图

学完本章:能将表达式转化为后缀表达式,语法树,有向无环图,三地址代码形式。

例:将表达式a := (b + c*d ) + c*d转化为后缀表达式,有向无环图,三地址代码形式

第八章代码生成

1.指令的代价

学完本章:会计算指令的代价

例:指令代价

MOV R0,R1 1

MOV R5,M 2

ADD #1,R3 2

SUB 4(R0), *12(R1) 3

相关文档
最新文档