logo资料库

南邮 2020 编译原理期末复习.pdf

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
《编译原理》期末复习大纲 可以猜想一下(LR) 一、题型与分值(可能会微调) 1、填空题:10 题 20 分 文法对应的语言等 2、判断题:5-6 题 10 分 基础概念 2、简答题:6-7 题 40 分 求 first 集 follow 集、语法树等,证明二义性消除左递归 4、解答题:2 题 20 分 比较大的题 分析句子、构造 DFA、构造 LR 5、设计题:1 题 10 分 二、知识点梳理(不考死记硬背的题目) 01、汇编程序、解释程序、编译程序的概念(记忆) P2-3【小题】 汇编程序:把汇编语言写的源程序翻译成机器语言的目标程序。 解释程序:将高级语言写的源程序作为输入数据,但并不产生目标程序,而是边解 释边执行源程序本身的一种程序。 编译程序:是将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程 序。 02、编译过程的八大组成部分的名称(记忆) P5【小题】 1、词法分析 2、语法分析 3、语义分析 4、中间代码生成 5、代码修饰优化 6、信息 表格管理 7、错误检查和出错处理 8、目标代码生成 03、分遍(趟程)的概念及其适用情况(记忆) P9【小题】 从头到尾扫描一遍源程序或等价源程序,并做有关加工处理,称趟程(遍) 。每经过 一趟源程序都要进行等价变换并更接近目标程序。如果通过对源程序一遍扫描直接 生成目标代码程序,则说编译程序是单遍的。把源程序分为几遍来编译,每遍只完 成编译程序中的一部分或几个部分工作,称为多遍的。 04、系统程序设计语言、自编译、交叉编译,会利用 T 型图描述自编译和交叉编译 过程 P10【简答题】 系统程序设计语言:能够编写编译程序或其他系统软件的高级语言称系统程序设计 语言。
05、符号、符号串、符号串集合以及相关运算(联结、乘积、方幂)P17-19【基础, 不单独考】 有限个元素的非空集合称字母表,也称符号集。它是组成一个语言最基本的成分。 字母表中元素称为符号。 符号串是字母表中的符号所组成的任何有穷序列。 符号串集合:若集合 A 中的一切元素都是字母表上符号串,则称 A 为该字母表上的 符号串集合。 A={a,b},则 A0={ε},A1={a,b},A2={a,b}{a,b}={aa,ab,ba,bb} A3={aaa,aab,aba,abb,baa,bab,bba,bbb} 06、产生式、文法、推导(推导的长度)与归约(理解) P21-23【小题】 产生式就是一个符号与另一个符号串的有序偶(U,x),通常记为 U∷=x 文法是规则的有穷集合,形式定义为四元组形式为 G=(VN,VT,P,Z) 其中:VN 是非终结符集合, VT 是终结符集合, P 代表产生式集, Z∈VN是文法 G 开 始符号,也称识别符号,它至少要在一条产生式左部出现。文法 G 通常记为 G[Z]。 一个产生式就是一个直接推导。 设 u0,u1,u2,…,un 均为 V*上符号串,若 w 是 v 经过一系列直接推导得到的。 即:v= u0⇒u1⇒u2⇒···⇒un-1⇒ un =w (n>0)则称 v 推导到 w,或称 w 归约到 v, 记作:v ⇒+w,称这个直接推导序列为长度为 n 的推导。 如果 v ⇒ +w 或者 v=w(表示 0 步推导),则记作 v ⇒*w,称 v 广义推导到 w 或称 w 广义归约到 v。 07、第一次采用形式化体系方法巴科斯—瑙尔范式定义语法规则的语言是 ALGOL 语言 08、句型、句子、语言的概念 P24【小题】 设 G[Z]是一文法,若符号串 x 是由识别符 Z 推导而得,即 Z⇒*x,x∈V*。则称
符号串 x 为该文法 G 的一个句型。如果一个句型 x 仅由终结符组 成,即——Z⇒*x,x∈VT*,则称句型 x 为该文法一个句子。 G[Z]为一文法,由该文法所产生的一切句子的集合称为由该文法所定义的语言,记 为 L(G[Z])。 09、给出文法,会求出语言 P24【小题】(填空选择) 直接代入推导(注意 n 次方幂的数量限制) 10、文法非终结符号、终结符号 非终结符号:出现在规则左部,且能派生出符号或符号串的那些符号称为非终结符, 也称语法实体或语法单位,它们的全体构成一个非终结符的集合,记为 VN 终结符号:规则中不属于 VN的那些符号称为终结符,它们的全体组成终结符的集 合,记为 VT 。终结符一般出现在规则的右部。 11、递归规则、递归文法的含义,会利用该写法消除文法的左递归(注意,不是利 用扩展 BNF 范式改写) 对于一个文法,若有一个规则 U∷=…U…,则称直接递归,若有规则 U∷=U…,则称直 接左递归,若有规则 U∷=…U,则称直接右递归。若有推导式 U⇒+…U…,则称间接递 归,若有推导式 U⇒+U…,则称间接左递归, 若有推导式 U⇒+…U,则称间接右递归。 非终结符 U 称递归非终结符。 如果一个文法中至少含有一个递归非终结符,则将此文法称为递归文法。 消除左递归: 1)用重复表示法(扩充的BNF表示法)改写语法规则 假定一个文法中有关于非终结符的规则为A∷=Aα|β,其中α非空,β不 以A开头,则等价地改写为A∷=β{α} 例如,下述直接左递归规则:E∷=E+T|T 可改写为E∷=T{+T} 同样,规则T∷=T*F|T/F|F可改写为T∷=F{*F|/F} 2)消除直接左递归 还可用另一种方法来改写形如文法规则A∷=Aα|β的直接左递归。 对A引入一个新的非终结符A′,将A∷=Aα|β等价写成 A∷=βA′,A′∷=αA′|ε 由于β不以 A 开头,α不以 A′开头,因此改写后两条规则不是直接 左递归。 3)消除间接左递归 对于间接左递归先将间接左递归变成直接左递归,然后消除直接左递归 例如;A ∷=aB|Bb (1),B ∷=Ac|d (2)先将(1)代入(2)中,得 B ∷=Bbc|aBc|d (3)
由此将(3)改写为; B ∷=(aBc|d)B’,B’∷=bcB’|ε 加入文法开始符号的产生式得消除左递归后的等价文法为: A ∷=aB|Bb B ∷=(aBc|d)B’ B’∷=bcB’|ε 12、给出句型,会画出语法树,会求出短语、简单短语、句柄(掌握) P27-28【小 题或简答】
13、规范推导和规范归约的定义 最右推导叫规范推导,即在规范推导过程中,每步直接推导 xUy⇒xuy 中,符号串 y 只含有终结符。如果推导 v⇒+w 中每一步直接推导是规范的,则称推导 v⇒+w 为 规范推导。 规范归约:我们把最左推导的逆过程称最右归约,最右推导的逆过程称最左归约, 最左归约也称为规范归约。 14、文法二义性和语言二义性的区别 如果一个文法中某个句型对应两棵不同的语法树,则称这个文法是二义性的。 产生该语言的文法都是二义性文法,称该语言为二义性语言。至少有一个非二义文 法产生该语言称此语言为非二义性语言。 15、证明文法的二义性(掌握) P29【小题或简答】 16、文法和语言的分类、文法与自动机的对应(掌握) P33-35【小题或简答】 若在文法 G 中,P 中规则具有如下形式:α∷=β其中α∈V+,且至少含一个非终
结符,β∈V*,则文法 G 称为 0 型文法或称短语结构文法。 若在文法 G 中,P 中规则具有如下形式: αAβ∷=αwβ,其中α,β∈V*,A∈VN,w∈V+,则称文法 G 为 1 型文法或上下 文有关文法。(只有当非终结符 A 的上下文为α和β时,方可用 w 去替换 A) 若在文法 G 中,P 中规则具有如下形式:A∷=w,其中 A∈VN, w∈V*, 则称文法 G 为 2 型文法或称上下文无关文法。(无需考虑 A 的上下文出现情况) 若在文法 G 中,P 中规则具有如下形式:A∷=aB 或 A∷=a 其中 A , B∈VN , a∈VT, 则称文法 G 为右线性文法。类似地,如 P 中规则有如下形式: A∷=Ba 或 A∷=a,则 称文法 G 为左线性文法。通常,我们把左线性文法和右线性文法称 3 型文法或正规 文法。 产生式中含有左部两个符号必为 0 型或 1 型,其中左部比右部长,必为 0 型,长度 相等即可转换为至少 1 型。 右部只有两个非终结符,必不为 3 型。 由某种类型文法生成的语言称为对应文法类型的语言 能识别或生成语言的识别器(某种算法或过程)称为自动机。 17、会求一个文法的压缩过文法(掌握) P36【小题】 1、在文法中不含有形如 A∷=A 的规则 2、在文法中不包含多余规则(非终结符必须 在文法中出现,否则不可到达,并且非终结符必然推出终结符串) 否则将该规则以及包含该规则的左部符号的产生式一并删除。 18、扫描缓冲区,超前搜索的概念和作用 扫描缓冲区就是在内存中开辟一部分单元,供识别单词用。 所谓超前读字符(也称超前搜索),是指仅向前读取字符,判别该字符类型以后,再 处理已读过的字符。 19、正规文法和状态转换图转换(全套理解+掌握)P46-50【小题或简答或解答】 正规文法就是乔姆斯基文法分类中的 3 型文法。 转换图实际上是一个有线方向图,图中结点代表状态,用圆圈表示。状态之间用箭
弧连接,箭弧上标记代表射出结状态下可能出现的输入字符。 对于左线型文法 G[E]:U∷=a 或 U∷=Ba U, B∈VN ,a∈VT 右线性文法 G[E]:U∷=aB 或 U∷=aU, B∈VN ,a∈VT 左右线性文法的等价产生式 20、有穷自动机的概念和特点(DFA 和 NFA 的各自特点))(理解+掌握) P55-58 【小题或简答】 一个确定的有穷自动机(DFA)M 是一个五元组,即 M=(K,VT,M,S,Z)其 中:K是状态有穷的非空集合,K 中每一个元素是一个状态;VT是一个有穷输入字 母表,VT中的每一个元素称为输入字符;M 是 K×VT到K的单值映射(或函数),即 M(q ,a)=p 。q ,p ∈K, a∈VT。它表示:当前状态为 q,输入字符为 a 时,将转到下 一状态 p, p 是 q 的一个后继状态。由于映射是单值,所以称确定有穷自动机。S为 开始状态,是唯一一个初态 S∈K;Z 是终止状态集合,Z是 K 的子集。(单值映射, 初态唯一) 一个有穷自动机 DFA 可唯一表示一张确定的状态转换图。 M(q,a)={p1,p2,…,pn}∈2K,q∈K,a∈VT它表示:当前状态为 q,输入字符为 a 时,映射M将产生一个状态集合{p1, p2,…,pn}(可能是空集),而不是单个状态,
所以称非确定有穷自动机。(多值映射) 一个非确定的有穷自动机(NFA)M 是一个五元组,即M=(K,VT,M,S,Z),M 是 K×VT 到 K 子集上映射,即{K× VT ∈ 2k},2k是幂集,是 K 中所有子集组成。(初态 为符号集合) 凡是一个语言被 NFA 接受,一定能被 DFA 接受。对于任一个(NFA)M,我们总能构 造出与其等价的(DFA)M′ 21、正规表达式、正规文法、自动机的等价问题 Kleen 定理描述:L 是正规集 ⇔存在一个有穷自动机(FA)M,使得 L=L(M) ⇔存在一个正规文法 G,使得 L(M)=L(G) ⇔存在一个正规表达式 e,使得 L(e)=L(G) 22、正规表达式(与转换系统的互转,会求其正规集)和有穷自动机(含利用子集 法把 NFA 转 DFA)(全套理解+掌握)P62-70【小题或简答或解答】 所谓转换系统是一个具有唯一开始状态 S 和唯一最终状态 Z 的一种特殊状态图。1. 没有弧引向开始状态 S 2. 没有弧从终止状态 Z 引出 3. )转换系统的弧可以用空符号 ε标记。
分享到:
收藏