编译原理笔记

第一章 引论

1. 相关名词解释

编译:将高级语言翻译成汇编语言或机器语言的过程
翻译:把一种语言转换成与之等价的另一种语言
在这里插入图片描述
编译程序:源高级语言程序 -> 汇编成机器语言程序
解释程序:源高级语言程序 + 数据 -> 计算结果(不生成目标语言程序)

2. 编译程序的结构

在这里插入图片描述

词法分析

从左到右扫描源程序(字符串),识别出各个单词(记号—Token),确定单词的类型并将其转换成单词串;同时查词法错误,进行标识符登记,即符号表管理。

语法分析

从词法分析输出的单词序列中识别出各类短语表达式,并构造语法分析树(parse tree),并指出语法错误

语义分析

审查源程序是否有语义错误,为伪代码生成阶段收集信息,当不符合规范的时候报错

中间代码生成
  • 简单规范
  • 机器无关
  • 易于优化与转换
代码优化

对代码进行等价变换以求提高执行效率——提高运行速度或节省存储空间,或者二者兼顾

  • 与机器无关的优化
  • 与机器有关的优化
目标代码生成

将中间代码转换成目标机上的机器指令代码或汇编代码

表格管理
  • 管理各种符号表
  • 辅助编译工作过程
  • 完成静态绑定、管理编译过程
  • Hash表、链表等各种查、填表技术
出错处理

进行各种错误的检查、报告、纠正,以及相应的续编译处理(如:错误的定位与局部化)

前端
  • 与源程序有关、与目标机器无关的部分
  • 词法分析、语法分析、语义分析与中间代码生成、与机器无关的代码优化
后端
  • 与目标机器有关的部分
  • 与机器有关的代码优化、目标代码生成
    前端与后端的区别

对源程序(包括源程序中间形式)从头到尾扫描一次,并做有关的加工处理,生成新的源程序中间形式或目标程序,通常称之为一遍

多遍扫描的优点
  • 编译程序的结构清晰
  • 有利于进行细致和充分的代码优化
  • 易于采用覆盖技术,提高内存利用率
多遍扫描的缺点
  • 增加读写中间文件的次数,消耗较多的时间

3. 编译原理的应用

  • 研究提高软件开发效率的工具
  • 针对计算机体系结构的优化
  • 新计算机体系结构的设计

第二章 文法和语言

1. 文法的引入

文法

  • 严格定义句子的结构
  • 把语言的全部句子描述出来

形式语言

用精确的数学或机器可处理的公式定义的语言,是为了特定应用而人为设计的语言。

2. 符号和符号串

2.1 相关概念

字母表(符号表)

字母表是元素的有穷集合,一般用 ∑ 表示

符号

字母表中的元素,如字母、数字、标点符号等

符号串

由字母表中的符号组成的任何有穷序列

例如:∑ = {a, b},aab是∑上的一个符号串

  • 符号串的长度,记住 |s|,是指s中符号的个数
    如:|aab| = 3
  • 空串:不包含任何符号的符号串用 ε 表示,|ε| = 0
2.2 运算
符号串的连接

符号串的n次幂

在这里插入图片描述

集合的和运算

在这里插入图片描述

集合的乘积(连接)

在这里插入图片描述

集合的n次幂

在这里插入图片描述

集合的正闭包

在这里插入图片描述

集合的闭包

在这里插入图片描述
例题:
在这里插入图片描述

3.文法和语言的形式定义

3.1 文法的形式化定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中α是由终结符和非终结符组成的长度大于等于1的集合的符号串
β是终结符和非终结符构成的长度任意的符号串
在这里插入图片描述

一般约定
  • 第一条产生式的左部是开始符
  • 用尖括号括起来的是非终结符
  • 用大写字母表示 非终结符
  • 不用尖括号括起来的是 终结符
  • 用小写字母表示 终结符
文法举例

在这里插入图片描述

3.2 文法简写

在这里插入图片描述

3.3 语言的基本概念:推导和归纳
3.3.1 直接推导

在这里插入图片描述

3.3.2 间接推导

在这里插入图片描述

3.3.3 句型

在这里插入图片描述

3.3.4 句子

在这里插入图片描述

3.4 语言的形式化定义

在这里插入图片描述

3.5 文法的等价

在这里插入图片描述

4. 文法的分类

0型文法

在这里插入图片描述

1型文法

在这里插入图片描述

2型文法

在这里插入图片描述

3型文法

在这里插入图片描述

文法之间的关系

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 编译原理是针对计算机编程语言的研究,目的是将高级语言转化为机器语言并执行。编译原理笔记PDF是一份系统性的学习笔记,包含了编译原理的各个方面。这份学习笔记可以帮助学习者深入了解编译原理,掌握相关的技能。 编译原理笔记PDF通常包含以下几个方面的内容:编译原理的基本概念,编译器的结构与原理,语法分析器的设计与实现,语义分析器的设计与实现,间代码生成和机器码生成,以及优化技术等。这些内容都是非常重要的编译原理知识点,可以帮助学习者理解编译原理的各个方面,并掌握相关的技术细节。 编译原理笔记PDF还可以提供一些编译原理实战案例,帮助学习者将所学知识应用到实际情况。实际有很多编译器与解析器需要我们开发,而这份学习笔记可以准确清晰地指导我们如何设计和开发这些编译器。 总之,编译原理笔记PDF是一份非常有价值的学习资料,可以帮助我们深入了解编译原理,掌握相关的技能,并将这些知识应用到实际情况。 ### 回答2: 编译原理笔记PDF是一份非常全面的编译原理学习资料,其详细介绍了编译原理的各个方面,包词法分析、语法分析、语义分析、间代码生成、代码优化和目标代码生成等。这些内容不仅涵盖了编译原理的基本理论概念和算法,还提供了许多实际的实现案例和实际开发的工具。 对于想要学习编译原理的同学来说,编译原理笔记PDF是一个非常好的选择,它可以帮助同学们快速地掌握编译原理的相关知识和技能。通过对这份资料的学习,同学们能够从实际问题和实际应用的角度深入理解编译原理的相关概念和算法,同时掌握一些实用的工具和技术,从而更好地应对工作和学习的编译问题。 总之,编译原理笔记PDF是一份非常有价值的学习资料,它能够帮助同学们更好地学习和理解编译原理的相关概念和算法,同时提供一些实际的工具和技术供同学们参考和应用。建议有相关需求的同学一定要好好利用这份资料,从学到更多有用的知识和技能。 ### 回答3: 编译原理笔记 pdf是一本关于编译原理的学习资料,其涵盖了编译原理的基础知识、重要概念、算法和分析等内容。编译原理是计算机科学非常重要的一门学科,其研究的是如何将一种高级语言转化为低级语言,并使之在计算机运行。编译原理涵盖的内容很广,包词法分析、语法分析、语义分析、间代码生成、代码优化和目标代码生成等等。 编译原理笔记 pdf可以帮助学习者更好地理解和掌握编译原理的知识,尤其是对于那些正在学习编译原理或者准备学习编译原理的人来说,是一本非常有价值的资料。它可以帮助学习者更深入地了解编译原理的基础概念,例如编译器、编译过程、语言处理器等等,同时也可以帮助学习者更准确地理解编译原理的各种概念和算法,例如文法、自动机、LL(1)分析器、LR分析器等等。 总之,编译原理笔记 pdf是一本非常实用、有价值的学习资料,它对于那些正在学习或者准备学习编译原理的人来说,是一本非常有趣和有用的书籍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值