编译原理

第一章 概述

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️⃣采用优化措施
困难:转移的目标在对它的应用之后才出现
解决方法:拉链-返填法