编译原理知识点

第一章

  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. 生成的目标代码形式:绝对机器代码、可重定位机器代码、汇编语言代码
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机科学中非常重要的一门课程,涉及到编译器的设计、实现和优化等方面。编译原理知识点主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成等。 词法分析是编译过程中的第一步,主要将源代码分解为一个个词法单元,例如关键字、标识符、常量和运算符等,对应到编译器中的Token。语法分析是将词法单元按照语法规则进行组织和分析,生成语法树或抽象语法树。语义分析是对语法树进行类型检查和语义检查,确保编译器生成的代码符合语言的规范和语义要求。 中间代码生成是将源代码转化为中间表示形式,比如三地址码或者虚拟机指令,方便进行后续的代码优化和生成。代码优化是对中间代码进行分析和优化,以提高程序的执行效率和性能。代码生成是将优化后的中间代码转化为目标代码,可以是机器码或者虚拟机指令,用于最终执行。 编译原理知识点涉及到了编程语言的语法和语义,程序的分析和优化技术,以及目标平台的特性和限制等。掌握了编译原理知识点,可以帮助我们更好地理解和设计编译器,提高代码的执行效率和质量。 总的来说,编译原理知识点包括词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成等,这些知识点是理解和应用编译器的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值