编译原理 期末复习

第一章 概述

1 一个典型的编译系统通常由哪些部分组成

在这里插入图片描述

2 编译程序前端包括……阶段?每部分的功能?

词法分析 :从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫码和分解,从而识别出一个个单词
语法分析 :在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语 子句 句子 程序段 程序),并确定整个输入串是否构成语法上正确的程序
语义分析 :对语法分析识别出各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)
中间代码生成:编译程序将源程序变成一个内部表示形式
代码优化 :对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码
目标代码生成: 将中间代码变换成特定机器上的低级语言代码
在这里插入图片描述

第二章

1 基本概念

语言
语法:对语言结构的定义(是一组规则,定义符号如何排列,排列与符 号含义无关)
语义:描述语言的含义(研究语法的含义)
在这里插入图片描述

句型
句子

在这里插入图片描述

文法的组成 文法G定义为四元组(VN,VT,P,S)
在这里插入图片描述

文法的类型
在这里插入图片描述
文法:语言的形式化描述方法,是阐述语法的一个工具
在这里插入图片描述

在这里插入图片描述

直接推导
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多步推导
最左推导
最右推导(规范推导)
在这里插入图片描述
语法树
子树:任一结点及其全部后继
直接子树(树高为1):一子树根只有直接后继
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2 文法的二义性

L(G)的某个子句不只一个最左/最右推导
如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的
若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三章 词法分析

词法分析的任务:识别单词
(输出形式) 词法分析器的输出结果:单词种别和属性二元组

第四章 自顶向下语法分析法 推导

语法分析的任务:识别句子 根据产生式识别输入串是否为一个句子
自顶向下语法分析受上下文无关文法影响

自上而下语法分析器,从文法的开始符号出发,反复使用文法的产生式,建立与输入符号串匹配最左推导

1 文法的改写 LL(1)文法

左递归的消除 转换为右递归(消除循环)

在这里插入图片描述
#1 消除直接左递归

在这里插入图片描述
#2 消除间接做左递归(代入法)
在这里插入图片描述
在这里插入图片描述

提取公共左因子
消去回溯
在这里插入图片描述

2 LL(1)文法的判定

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

在这里插入图片描述

在这里插入图片描述

3 FIRST集合 FOLLOW集合

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

4 LL(1)预测分析表的构造

在这里插入图片描述

5 对输入串的分析过程

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

第五章 自底向上优先分析 归约

从输入串开始,逐步进行“归约”,直至归约到文法的开始符号

1 边移进边归约(可归约串)

各种不同的自下而上分析法的一个共同特点是“边输入单词符号(移进符号栈),边规约”

2 规范归约

短语:每颗子树的叶子
直接短语:每颗直接子树的叶子
句柄:某句型的最左直接短语(即规范分析中最先被归约的子串)
规范(最右)推导
规范归约(最左归约)
最右推导的逆过程
在这里插入图片描述

在这里插入图片描述
素短语:至少包含一个终结符且不包含更小素短语的短句
最左素短语

3 算法优先分析法:终结符号对的关系 大题

FIRSTVT LASTVT集合的构造
在这里插入图片描述

构造算法优先关系表
判断算法优先文法
在这里插入图片描述
在这里插入图片描述

第八章 静态语义分析和中间代码生成

1 中间代码形式

逆波兰式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三元式
在这里插入图片描述
在这里插入图片描述

四元式(三地址代码)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 简单赋值语句的翻译

理解语法制导翻译的方法

3 布尔表达式到四元式的翻译(求值/作为优化措施) 大题

在这里插入图片描述
1️⃣求值 E1 rop E2 4条语句
2️⃣采用优化措施
困难:转移的目标在对它的应用之后才出现
解决方法:拉链-返填法

《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值