编译原理知识点

时间:2022-11-26 16:25:26

第一章

  1. 编译的5个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成
  2. 翻译程序:能够把某种语言转换成另一种语言的程序,而两者在逻辑上是等价的
  3. 解释程序:以源程序为输入,不产生目标程序,而是边解释边执行源程序本身的程序。
  4. 诊断编译程序:帮助程序开发和调试的程序。
  5. 优化编译程序:提高目标代码效率的程序。
  6. 运行编译程序的是宿主机,运行目标代码的是目标机。
  7. 交叉编译:编译程序产生不同于宿主机的目标代码。
  8. 可变编译程序:不需要重写编译程序中与机器无关的部分就能改变目标机。
  9. 程序语言由语法和语义两方面定义。
  10. 语句包括:说明性语句、执行性语句
  11. 子程序传参方式:传值、传地址、传名
  12. 空间分配分方式:静态存储分配、动态存储分配
  13. 表格管理:对各种表格进行管理,包括表格的构造、查找、修改、删除、插入等;

词法分析

  1. 词法分析:把源程序作为字符串进行扫描 ,根据单词词法,识别出所有单词,过滤无用符,并检查是否为合法的单词。
  2. 词法分析的工具:正规式、有限自动机。
  3. 单词一般分为如下几种:基本字,标识符,常数,算符,界符。
  4. 词法规则:规定了形成单词的规则;如常数,标识符,基本字,算符等。
  5. 识别单词符号的方法:超前搜索
  6. 源程序的预处理:过滤无关的符号。
  7. 状态图由三种结构构成:分支结构、循环结构、终结点
  8. LEX语言源程序由两部分组成:正规式辅助定义式、识别规则

语法分析

  1. 语法分析: 根据语言的语法规则,从单词符号串中识别出各种语法单位 ,进行句子分析,并检查整个输入字串是否为合法的程序。
  2. 语法=词法规则+语法规则
  3. 语法规则:规定了由单词构造更大语法单位的规则;如表达式,短语,语句,程序等。
  4. 语法分析方法:自上而下(算符优先)、自下而上(递归下降)
  5. 重要的语法单位:程序,子程序,语句,短语,表达式等
  6. 上下文无关文法组成:终结符号、非终结符号、开始符号、产生式
  7. 句柄.:一个句型的最左直接短语。
  8. 素短语:至少含有一个终结符,且不可在分割成为更小的短语。一个句型的最左素短语即为可归约串。
  9. 递归下降分析的两个问题:文法的左递归、文法的回溯。
  10. 语法制导翻译:在语法分析的每次归约或推导时,根据产生式的语义进行翻译的一种方法。

符号表

  1. 编译程序中最主要的有如下几种:符号表,常量表,标号表,子程序名表,四元式表等。
  2. 符号表的查找技术:线性查找、二叉查找树、哈希表
  3. 符号表的基本操:查找、插入、访问、修改、删除

中间代码生成

  1. 中间代码生成:根据语义规则,把各种语法单位翻译成中间代码序列.
  2. 静态语义检查:类型检查、控制流检查、一致性检查、相关名字检查
  3. 中间代码的表示方法:四元式、三元式、间接三元式、逆波兰式、树形表示、DAG

优化
38. 代码优化:对产生的中间代码序列进行加工变换,使变换后的代码更为高效。
39. 优化的几种方法:删除公共子表达式、复写传播、删除无用代码、代码外提、强度削弱、删除归纳变量。
40. 必经节点集:流图通路中所必须经过的节点的集合
41. 回边:必经节点集中从后方节点到前方节点的边
42. 可规约流图:流图中除去回边而剩余部分构成无环路的流图.
43. 引用定值集ud[A]:能到达引用点u-A(u点引用了A)的变量A的所有定值点[d1,d2…dn]的集合(A在d定值)。

目标代码生成

  1. 目标代码生成:把中间代码程序翻译为机器指令或汇编指令程序。
  2. 生成的目标代码形式:绝对机器代码、可重定位机器代码、汇编语言代码