编译原理
第一章 概述
1 一个典型的编译系统通常由哪些部分组成
2 编译程序前端包括……阶段?每部分的功能?
词法分析
语法分析 在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语 子句 句子 程序段 程序),并确定整个输入串是否构成语法上正确的程序
语义分析 对语法分析识别出各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)
中间代码生成
代码优化 对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码
目标代码生成 将中间代码变换成特定机器上的低级语言代码
第二章
1 基本概念
文法 语言的形式化描述方法,是阐述语法的一个工具
语言
句型
句子
文法的组成 文法G定义为四元组(VN,VT,P,S)
文法的类型
直接推导
多步推导
最左推导
最右推导(规范推导)
2 文法的二义性
L(G)的某个子句不只一个最左/最右推导
如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的
若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义的
语法树
子树:任一结点及其全部后继
直接子树(树高为1):一子树根只有直接后继
第三章 词法分析
词法分析的任务 输出形式
第四章 自顶向下语法分析法 推导
1 文法的改写 LL(1)文法
左递归的消除 转换为右递归(消除循环)
2 LL(1)文法的判定
3 FIRST集合 FOLLOW集合
4 LL(1)预测分析表的构造
5 对输入串的分析过程
#1 消除直接左递归
#2 提取公共左因子
第五章 自底向上优先分析 归约
1 边移进边归约(可归约串)
2 规范归约
短语:每颗子树的叶子
直接短语:每颗直接子树的叶子
句柄:某句型的最左直接短语(即规范分析中最先被归约的子串)
规范(最右)推导
规范归约(最左归约)
最右推导的逆过程
3 算法优先分析法:终结符号对的关系 大题
素短语:至少包含一个终结符且不包含更小素短语的短句
最左素短语
FIRSTVT LASTVT集合的构造
构造算法优先关系表
判断算法优先文法
第八章静态语义分析和中间代码生成
1 中间代码形式
逆波兰式
三元式
四元式(三地址代码)
2 简单赋值语句的翻译
理解语法制导翻译的方法
3 布尔表达式到四元式的翻译(求值/作为优化措施) 大题
1️⃣求值 E1 rop E2 4条语句
2️⃣采用优化措施
困难:转移的目标在对它的应用之后才出现
解决方法:拉链-返填法