编译原理总结
基本概念
?编译器,解释器
?编译过程,各过程的功能
?编译器在程序执行过程中的作用
?编译器的实现途径
词法分析
? 正则表达式
? 有限自动机,DFA NFA
? 正则表达式,DFA,NFA之间的关系、
DFA的化简
? DFA的实现
语法分析
基本概念:
?文法、文法分类
?上下文无关文法
?语法分析树、二义性、推导、归约、短语
简单短语、句柄。
?文法分析,First,Follow,Predict
语法分析方法:
?自顶向下
?自底向上
自顶向下分析方法
? 思想
? 关键问题
? 两种分析方法,[条件、分析过程 ]
递归下降方法
LL( 1)分析方法
? 等价变换,消除左递归、左公共前缀
自底向上分析方法
? 思想
? 关键问题
? 分析方法:
LR(0),SLR(1),LR(1),LALR(1)、
简单优先分析方法
?比较:
状态数、展望符、分析能力、应用
语义分析
?符号表:
标识符、类型、值的表示:
局部化处理方法:
?类型分析:
?程序的语义分析,
声明部分
表达式
语句部分
中间代码的生成
? 动作文法
? 动作文法的实现
? 中间代码生成:
表达式的中间代码
复杂变量的中间代码
语句的中间代码
过函声明的中间代码
中间代码优化
?优化的目标、要求、对象
?基本块、程序流程图、基本块的划分
?优化方法,全局、局部
?常表达式优化,(合并常数项)
局部优化、基于常量定值的全局优化
?公共表达式 (局部 )优化,(消除重复操作)
基于相似性的优化、基于值编码的优化
?循环不变表达式外提
运行时的存储空间管理
?存储结构、各区的 存储分配的特点、分配对
象和方法
?AR的结构、内容
?调用链、动态链、声明链、变量访问环境的
含义及相互间的关系。
?变量访问环境的实现方法:
静态链、局部 /全局 Display表、寄存器方法
目标代码生成
?目标代码形式
?单寄存器的目标代码结构
表达式操作的目标代码
赋值的目标代码
标号和跳转的目标代码
过程的传参、调用、声明、调用结束
? 临时变量的特点、存储分配方法、寄存器
的分配。