编译原理期末总结

语言发展

机器语言——汇编语言——高级语言

汇编:将汇编语言翻译成机器语言的过程

编译:将高级语言翻译成汇编或者机器语言的过程
在这里插入图片描述

编译阶段

词法分析——

词法分析

从左向右逐行扫描程序的字符,识别出各个字符,确定单词的类型。
每个单词表示如下:
token:<种别码, 属性值>
在这里插入图片描述
一词一码表示的是每个单词都有一个种别码,而属性值不用定义,多词一码表示共用一个种别码,但是要给出属性值,而且属性值是不一样的。一型一码同一词一码。

语法分析

在这里插入图片描述

语义分析

在这里插入图片描述

中间代码生成和编译器后端

--------------------省略---------------
其实上课大概就讲到语义分析,重点是在词法和语法分析,后面想深入学习编译的可以自己再去看一下

语言及其文法
字母表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推导

在这里插入图片描述
在这里插入图片描述

句型和句子

在这里插入图片描述
在这里插入图片描述

文法的分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可能看图片有点难以理解,说一下大概要点:
0型文法是左部至少包含一个非终结符,1型文法(上下文有关文法)是左部的长度要小于等于右部的长度,且右部不包含空字符,2型文法(上下文无关文法)是每个产生式的左部一定是一个非终结符,3型文法(正则文法),分为右线性和左线性文法,具体看上面那个截图。

CFG(上下文无关文法(2型文法))分析树
句型的短语

在这里插入图片描述
从上面可以看出,短语就是每个非终结符根节点得到的。

直接短语:看哪个父节点下面只有一层,看上面那个例子,第三层下面只有一层,说明他只有两层,所以E+E是他的直接短语。(直接短语一定是产生式的右部,为什么?理解一下)

正则表达式

在这里插入图片描述

有穷自动机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有穷自动机的分类(FA)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两者有什么区别呢?区别就是NFA的一个字母表可以转换到多个状态,而DFA只有一个。

但是NFA和DFA是等价的,也就是说他们是可以互相转换的!

同时正则文法(即3型文法)、NFA和DFA也都是等价的。

在这里插入图片描述
在这里插入图片描述
可以看到,这两个也是依然具有等价性。

从正则表达式到有穷自动机

在这里插入图片描述
一般我们都是将先把正则表达式转为NFA,再从NFA转为DFA

正则表达式转为NFA

在这里插入图片描述
在这里插入图片描述

NFA转换为DFA

在这里插入图片描述
可以看到,NFA转换为DFA是通过集合来转换的。
关于NFA转为DFA可以看一下这篇文章
在这里插入图片描述关于具体的可以看一下这篇文章

语法分析
自顶向下分析

这个可以看一下我之前总结的关于自顶向下的文章

自下向上的分析

这个分为两个:

算符优先分析法

这个东西刚开始看会有点懵逼,然后看多几次就会好很多,主要是要对一些概念的理解。
算符文法的定义:
算符优先文法的定义:
算法优先文法的构造:
素短语:
最左素短语:
算符优先分析算法:
优先函数:
优先函数的构造:

LR分析法
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共218页,内容丰富,干货十足! 主要内容包括: 一、概述 1 1.1 课程介绍 1 1.2 编译过程 3 1.3 高级语言程序简介 11 二、程序语言概论 14 2.1 程序语言的定义 14 2.2 文法的形式化定义和分类 18 2.3 文法和语言 22 2.4 语法分析树 29 三、词法分析_1 33 3.1 词法分析概述 33 3.2 词法分析程序的设计 38 3.3 正规式与自动机 41 3.3.1 正规式与正规集 41 3.3.2 确定有限自动机(DFA) 44 3.3.3 非确定有限自动机(NFA) 49 3.4 单元测试 51 四、词汇分析_2 52 4.1正则式和有限自动机的等价 52 五、词法分析_3 59 5.1 DFA的化简 59 六、词法分析_4 62 6.1 词法分析器的自动生成 62 6.2 词法分析程序实现实例 64 七、语法分析—自上而下分析_1 71 7.1 词法分析简介 71 7.2 自顶向下分析简介 73 7.3 消除左递归和回溯 76 八、语法分析—自上而下分析_2 80 8.1 LL(1)分析法 80 8.2 FIRST集和FOLLOW集的构造 82 8.3 单元测试 85 九、语法分析—自上而下分析_3 86 9.1 LL(1)分析表的构造 86 9.2 递归子程序的原理 89 9.3 单元测试 95 十、语法分析—自下而上分析_1 96 10.1 自下而上分析方法的基本思想 96 10.2 分析树与规范规约 99 10.3 符号栈的使用 103 10.4 单元测试 105 十一、语法分析—自下而上分析_2 106 11.1 算符优先文法 106 11.2 优先表构造 109 11.3 算符优先分析算法 112 10.4 单元测试 115 十二、语法分析—自下而上分析_3 116 12.1 LR分析器 116 12.2 LR分析过程 119 12.3 单元测试 132 十三、语法分析—自下而上分析_4 133 13.1 构造识别前缀的DFA 133 13.2 LR(0)项目集规范族构造 140 13.3 由DFA构造LR(0)分析表 146 13.4 单元测试 150 十六、属性文法和语法翻译制导 151 16.1 L-属性文法和自顶向下翻译 151 16.2 自下而上计算继承属性 159 十七、语义分析和中间代码产生_1 166 17.1 语义分析的任务 166 17.2 中间代码的生成 168 17.3 算术表达式和赋值语句 175 17.4 单元测试 178 十八、语义分析和中间代码产生_2 179 18.1 布尔表达式的作用和文法描述 179 18.2 做控制用布尔表达式的翻译(回填) 181 18.3 控制流语句的翻译 186 18.4 控制流语句的翻译(回填) 189 十九、代码优化_1 194 19.1 什么是代码优化 194 19.2 基本块及流图 199 19.3 单元测试 202 二十、代码优化_2 203 20.1 基本块的DAG表示及其作用 203 二十一、重要知识点 213 1. 考试内容及分数分布 213 2. 名词解释 214 3. 简答题 215 4. 结语 216
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值