编译原理总复习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(8)算符优先分析算法
①最左素短语的寻找依据:
(9)算符优先分析算法
②算符优先分析的特点: 算符优先分析一般并不等价于规范归约 无法使用单非产生式(如:T F)进行归约。 算符优先分析比规范归约过程要快,跳过了所有的单非产生式。 可能将本来不是句子的输入串误认为是句子。
(10)LR分析器的基本思想及其组成部分
(12)LR分析器的四种动作
移进、归约、接受、报错
(13)LR分析器的两种冲突
移进——归约 冲突 和 归约——归约 冲突
(14)四类不同的项目
返回
(15)四类LR分析表的构造
①拓广文法 ②构造LR(0)(LR(0)和SLR分析表)或LR(1)(LR(1)和LALR分析表)项 目集规范簇 ③构造相应分析表
删除公共子表达式、复写传播、删除无用代码、合并已知量、代码外 提、强度削弱、删除归纳变量。(后三种涉及循环优化)
(1)正规式→NFA→DFA→最小化DFA (2)证明给定的文法是二义性文法 (3)绘制语法分析树,计算句型的短语、直接短语、句柄、
素短语和最左素短语 (4)消除文法左递归,提公共左因子,改写成LL(1)文法 (5)分析表的构造:LL(1)分析表、算符优先分析表、LR(0)
(2)对文法G,能够给出给定句型或句子的最左推导及最右推 导序列,并画出其对应的语法分析树。
(3)能够计算某文法的语言。 (4)理解文法的二义性,能够说明一个文法是二义的。
(5)形式语言分类(chomsky,1956)
0型 普通(短语)文法 1型 上下文有关文法 2型 上下文无关文法 3型 线性(正规、正则)文法
关键字、标识符、常数、运算符、界符
返回
(4)正规文法、正规式、有限自动机之间的相互等价性定理 (5)正规式→ NFA → DFA →最小化DFA
(1)语法分析的方法
根据语法分析树建立方向的不同,将语法分析分成两类:自上而下 语法分析方法和自下而上语法分析方法。
(2)自上而下分析的基本思想
穷举试探法
(3)自上而下分析面临的两个最主要的问题
左递归、回溯
(4)自上而下分析的基本方法
LL(1)分析法、递归下降分析器
(5)左递归(直接、间接)和回溯的消除
直接左递归的消除
P P 1 |P 2 | |P m | 1 | 2 | | n
P1P|2P| |nP P1P|2P| |mP|
间接左递归的消除 ① 排序 ② 代入及消除左递归 ③ 化简
返回
(1)基本概念
短语、直接短语、句柄、素短语、最左素短语、算符文法、算符优 先文法
(2)自下而上分析的基本思想及其核心
基本思想:移进-归约 核心问题:可归约串的界定
(3)自下而上分析的基本方法
算符优先分析法:以最左素短语作为可归约串,非规范归约 LR分析法:以句柄作为可归约串,规范归约
(4)给定一个文法的句型,找出其短语、直接短语、句柄、 素短语和最左素短语
(3)语义规则的表示
(4)常见的中间代码的几种形式
①后缀式(逆波兰表示式) ②图表示法
抽象语法树 DAG图 ③三地址代码 四元式 三元式 间接三元式
(5)后缀式(逆波兰式)的表示
把运算量(操作数)写在前面,把运算符写在后面(后缀)的一种 表达式表示方法。其归纳定义如下:
①如果E是一个变量或常数,则E的后缀式是E自身。 ②如果E是E1 op E2 形式的表达式,op是二元操作符,则E的后缀式
基本思想:记住历史、展望未来、定夺现在 组成部分:输入缓冲区、分析栈(状态、符号)、分析表(动作、
转换)、总控程序
(11)四类LR分析表
LR分析表是LR分析器的核心,主要有以下几种分析表:LR(0)表、 SLR(1)表(即简单LR表)、LR(1)表(即规范LR表)、LALR表(即向 前LR表)。其中,L代表自左至右扫描输入串,R代表构建最右推导的逆 过程,1代表分析时每一步至多向前查看一个符号,S代表简单的。
返回
(3)编译错误的种类
从编译程序的角度来看,源程序中的错误主要分为:语法错误 和 语义错误两类错误。
(4)高级程序设计语言翻译的两种方式以及它们的区别
高级程序设计语言的翻译主要有两种方式:编译方式 和 解释方式。 区别:是否生成目标代码。
(1)基本概念
文法、推导、最左推导、最右推导、句型、句子、语言、文法的二 义性
3型 2型 1型 0型
返回
(1)基本概念
状态等价、DFA的化简
(2)词法分析器的任务及其输出形式
任务:自左至右逐个字符地对源程序进行扫描,按语言的构词规则识别 出一个个单词,把作为字符串的源程序改造为单词符号串的中间程序。 输出形式:二元式 ( 单词种别, 单词符号的属性值)
(3)单词符号的种类
规则三:反复使用以上两条规则,直到LASTVT(P)不再增大为止。
(7)算符优先关系表的构造
规则一:对形如P→…ab…或P→…aQb…的产生式,有a=b; 规则二:对形如P→…aR…的产生式,若有b∈FIRSTVT(R),则a<b; 规则三:对形如P→…Rb…的产生式,若有a∈LASTVT(R),则a>b; 规则四:对于语句括号#,有#=#,且若a∈FIRSTVT(S)和b∈LASTVT(S), 则有#<a且b>#。
为E1´E2´op,其中E1´,E2´分别是E1和E2的后缀式。 ③若E是(E1)形式的表达式,则E的后缀式就是E1的后缀式。
(6)将以下语句翻译为四元式序列
①表达式(算术及布尔) ②赋值语句 ③IF语句 ④WHILE语句
(7)参数传递的几种方式
传地址、 传值、传名、得结果
返回
(1)符号表的基本组成、基本操作 组成:一张符号表的每一项入口包含:名字栏和信息栏 操作:查表、填表、访表、更新、删除
①若aFIRSTi)(,则指派 i 去执行匹配任务。
②若a不属于任何一个候选首符集,则
❖若ε属于某个FIRSTi)(且aFOLLOW(A,) 则让A与ε自动匹配;
❖否则,a的出现是一种语法错误。 根据LL(1)文法的条件,每一步这样的工作都是确信无疑的。
(11)FIRST集和FOLLOW集的构造 (12)预测分析表的构造
分析表、SLR(1)分析表 (6)将各语句成分翻译成四元式序列:if语句、while语句
理祝 想福 的您 成考 绩出
谢谢观赏!
2020/11/5
36
③对文法中的每个非终结符A,若它存在某个候选首符集包含ε,则
FIRST(FAO) LLOW (A)
如果一个文法G满足以上条件,则称该文法G为LL(1)文法。
(10)LL(1)分析方法
假设要用非终结符A进行匹配,面临的输入符号为a,关于A的所有
产生式为
A 1| 2| | n
则LL(1)分析算法如下:
最短的认定为素短语,然后考察其余长度较大的,若不包含更小的素 短语,则也为素短语。位于句型中最左边的素短语即为最左素短语。
(5)算符文法与算符优先文法
算符文法:任意产生式右部不含两个连续的非终结符,(...QR...) 算符优先文法:算符文法中任意两个终结符之间至多只含“>”、 “<”、“=”三种关系之一。 算符优先文法一定是算符文法。 算符优先关系是有序的,但不满足对称性和传递性,即对于文法G 的终结符a、b和c: ➢ 如果a<b,并不意味着b>a; ➢ 如果存在a=b和b=c,不一定有b=a或a=c; ➢ 如果存在a<b和b<c,也不能得出a<c。
(5)左递归(直接、间接)和回溯的消除
回溯的消除:提左公因子
A δ β 1 |δ β 2 | |δ β n |γ 1 |γ 2 | |γ m
AδA|γ1|γ2| |γm A β1|β2| |βn
(6)LL(1)的含义
LL(1)中的第一个L表示从左至右扫描输入串,第二个L表示最左推 导,1表示分析时每一步只需向前查看一个符号。
5 自下而上语法分析方法 6 语法制导翻译和语义分析 7 符号表 8 代码优化
(1)基本概念
翻译程序,编译程序
(2)编译过程的五个阶段,各阶段的任务及其依循的规则、 描述工具分别是什么?除了这个5个阶段之外,还应该有哪 两个重要内容?
五个逻辑阶段:词法分析、语法分析、语义分析和中间代码产生、 代码优化和目标代码生成。除了这五个阶段之外,编译程序的每个阶段 都涉及到表格管理和错误处理这两个重要内容。
(6)FIRSTVT集与LASTVT集的计算
①FIRSTVT
F I R S T V T ( P ) a |P a 或 P Q a , a V T , Q V N
规则一:若有产生式P→a…或 P→Qa…,则a∈FIRSTVT(P);
规则二:若a∈FIRSTVT(Q)且有产生式 P→Q…,则a∈FIRSTVT(P) ;
规则三:反复使用以上两条规则,直到FIRSTVT(P)不再增大为止。
②LASTVT
L A S T V T ( P ) a |P a 或 P a Q , a V T , Q V N
规则一:若有产生式P→…a或 P→…aQ,则a∈LASTVT(P);
规则二:若a∈LASTVT(Q)且有产生式 P→…Q,则a∈LASTVT(P) ;
(16)LR文法的特点
LR文法肯定是无二义的,一个二义文法决不会是LR文法。 LR分析法比预测分析法更加一般化。 LR(0)文法一定是SLR文法,SLR文法和LALR文法一定是LR(1)文法。
(1)基本ቤተ መጻሕፍቲ ባይዱ念
S—属性文法 、L—属性文法
(2)属性分类
综合属性:用于“自下而上”地传递信息。 继承属性:用于“自上而下”地传递信息。 ①终结符号只有综合属性,由词法分析器提供。 ②非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承 属性作为属性计算前的初始值。
(7)LL(1)分析器的组成部分
输入缓冲区、分析栈、分析表、总控程序
(8)LL(1)分析的四种动作
成功、匹配、推导、报错
(9)LL(1)文法的判定条件
①文法不含左递归。
②文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即,

A 1| 2| | n

FIR i) S FT IR ( j) S T ( i(j)
编译原理总复习
1 题型及分值 2 教材各章知识点概览 3 计算题题型
返回
一、判断题 (1′×5=5′) 二、填空题 (1′×10=10′) 三、选择题 (2′×5=10′) 四、简答题 (本题共35分):其中包括两个名词解释。 五、计算题 (10′+15′+15′=40′)
1 编译程序概论 2 文法和语言 3 词法分析与有限自动机 4 自上而下语法分析方法
(2)内情向量的基本表项 在编译过程中,碰到数组的说明时,通常将数组的有关
信息记录在一个内情向量表中,这些信息包括:维数、首地 址、各维界差、各维上界、各维下界、数组元素类型、地址 不变量。
(1)基本概念
优化
(2)代码优化遵循的原则
等价原则、有效原则、合算原则
(3)优化分类
根据优化对象所涉及的程序范围划分为:局部优化、循环优化和全局 优化。 (4)常见的优化的几种方法
方法:首先画出句型的语法分析树,然后根据语法树寻找。 每棵子树的叶子结点自左至右排列构成一个相对于子树根的短语。 每棵简单子树(只有父子两代)的叶子结点自左至右排列构成一个直
接短语。 最左简单子树的叶子结点自左至右排列构成一个句柄。 将所有短语中至少含一个终结符的短语,按长度从小到大排列,长度
相关文档
最新文档