《编译原理》总复习-07级 第一章编译程序的概述
(一)内容
本章介绍编译程序在计算机科学中的地位和作用,介绍编译技术的发展历史,讲解编译程序、解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式等。
(二)本章重点
编译(程序),解释(程序),编译程序的逻辑结构。 (三)本章难点
编译程序的生成。 (四)本章考点
全部基本概念。
编译程序的逻辑结构。 (五)学习指导
引论部分主要是解释什么是编译程序以及编译的总体过程。因此学习时要对以下几个点进行重点学习:翻译、编译、目标语言和源语言这几个概念的理解;编译的总体过程:词法分析,语法分析、语义分析与中间代码的生成、代码优化、目标代码的生成,以及伴随着整个过程的表格管理与出错处理。
第三章文法和语言课外训练
(一)内容
本章是编译原理课程的理论基础,主要介绍与课程相关的形式语言的基本概念,包括符号串的基本概念和术语、文法和语言的形式定义、推导与归约、句子和句型、语法分析树和二义性文法等定义、文法和语言的Chomsky分类。 (二)本章重点
上下文无关文法,推导,句子和句型,文法生成的语言,语法分析树和二义性文法。 (三)本章难点
上下文无关文法,语法分析树,文法的分类。 (四)本章考点
上下文无关文法的定义。 符号串的推导。 语法分析树的构造。 (五)学习指导
要构造编译程序,就要把源语言用某种方式进行定义和描述。学习高级语言的语法描述是学习编译原理的基础。上下文无关文法及语法树是本章学习的重点。语法与语义的概念;程序的在逻辑上的层次结构;文法的定义,文法是一个四元组:终结符号集,非终结符号集,开始符号、产生式集;与文法相关的概念,字符,正则闭包,积(连接),或,空集,产生式,推导,直接推导,句子,句型,语言,最左推导,最右推导(规范推导);学会用文法来描述语言及通过文法能分析该文法所描述的语言;语法树及二义性的概念、能通过画语法树来分析一个文法描述的语言是否具有二义性;上下文无关文法的定义和正规文法的定义,能判断一个语言的文法是哪一类文法。 附训练试题:
1:
试构造生成语言L={anbnci|n≥1, i ≥0}的文法解: 2:
已知语言L={anbbn| n ≥1}, 写出产生L的文法。 3:
已知文法G=({A,B,C},{a,b,c},A,P) 其中产生式P由以下组成:
A →abc A →aBbc Bb→bB Bc →Cbcc bC →Cb aC →aaB aC →aa
问:此文法表式的语言是什么? 4
请给出描述语言={a2m+1 b m+1 | m>=0}∪{a2m b m+2| m>=0}的文法
5已知文法G[S]为: S→dAB A→aA|a B→Bb |ε
G[S]产生的语言是什么?G[S]能否改写为等价的正则文法?
6:试写一文法,使其描述的语言L(G) 是能被5整除的整数集合。
7: 已知语言L={x | x∈{a,b,c}*,且x重复排列是对称的(aabcbaa,aabbaa,等) 写出该语言的文法。
第四章 词法分析课外训练
(一)内容
本章介绍编译程序的第一个阶段词法分析的设计原理和设计方法,包括源程序输入与词法分析程序输出、正则文法及其状态转换图、确定的有限自动机(DFA)、 不确定的有限自动机(NFA)、正则表达式与正规集。 (二)本章重点
词法分析器的逻辑结构与功能,状态转换图,正规表达式与正规集、DFA、NFA及其等价转换,NFA的确定化,DFA的最小化。 (三)本章难点
正则式与自动机的应用,NFA的确定化,DFA的最小化。 (四)本章考点
正规式到NFA的转换。 NFA的确定化。 DFA的最小化。 (五)学习指导
掌握正规文法、状态转换图、DFA、NFA、正规表达式和正规集的基本概念和词法分析器的设计与程序编写。词法分析的任务是对源语言所编写的代码进行从左到右的扫描,产生一个个的单词符号(token),由这些单词符号形成的中间程序是后续语法分析输入。在理论上词法分析器的构造是根据一种语言的正规文法描述形成相应的状态转换图(DFA),若输入字符串能够被该DFA接受,则认为当前输入是语言中的一个单词符号。因此,DFA的构造是本章学习的重点。 附训练试题:
1写出能被5整除的十进制整数的文法及正规表达式。 2:已知有限自动机如图
(1)以上状态转换图表示的语言有什么特征? (2)写出其正规式与正规文法.
(3)构造识别该语言的确定有限自动机DFA.
3请构造与正规式R=(a*b)*ba(a|b)* 等价的状态最少的DFA(确定有限自动机) 4设字符集∑={ a, b } ,请写出不以a开头的但以aa结尾的字符串集合的正规表达式,并构造与之等价的状态最少的DFA。
第五章自顶而下语法分析方法课外训练
(一)内容
本章介绍编译程序的第二个阶段语法分析的第一种设计方法和实现原理即自上而下分析的原理及无回朔的递归下降分析、 LL(1)分析法和相应程序构造。 (二)本章重点
自上而下分析的思想,LL(1)文法,LL(1)预测分析,递归下降分析程序的构造。 (三)本章难点
消除左递归,预测分析表的构造,求First集和Follow集,预测分析中的出错处理。 (四)本章考点
LL(1)文法的判定。
递归下降分析程序的构造。
预测分析程序的构造与分析方法。 (五)学习指导
理解自上而下分析面临的问题,理解递归下降分析、LL(1)文法,掌握无回朔的递归下降分析方法的设计和程序实现、LL(1)分析表的构造与分析方法。语法分析是在词法分析的基础上判定程序的语法结构是否符合语法规则的过程。词法分析器的构造技术是编译器的主要技术。词法分析分为自上而下的分析(LL(K))和自下而上的分析(算符优先、LR(K))。本章先学习在逻辑概念上易于接受的自上而下的分析,即从文法开始符号出发,自上而下地为输入串建立一棵语法树,或者说为输入串寻找一个最左推导。LL(1)分析法是本章的学
习重点。 附训练试题:
1试构造与下列文法G[S]等价的无左递归文法。 G[S]: S→Sa|Nb|c (1) N →Sd|Ne|f 2:文法G的规则集为;
P →begin d : X end X →d : X | sY Y→: sY | e 做出该文法LL(1)分析表。 3 设有以下文法: G[S]: S→eEfGh | g E→FSG | h
F→SEc | cG | ε G→Sh |ε
(1) 求出该文法每一个非终结符的FOLLOW集。 (2) 它是LL(1)文法吗?为什么?
4:给出语言L={1na0n1ma0m|n>0, m>=0} 的LL(1)文法G[S]并说明其理由。
5 设有文法:G[S]: S→aBc | bAB A→aAb | b
B→b | ε 构造其LL(1)分析表,并分析符号串baabbb是否是该文发的句子。 6将G[V]改造为LL(1)文法 G[V] : V→N | N[E] E→V | V+E N→i 7有文法G[S]: S→ BA A→BS | d
B→aA | bS | c
(1)证明文法为LL(1)文法。 (2)构造LL(1)分析表。
(3)写出句子adccd的分析过程 8 考虑下面文法G1: S→a|∧| (T) T→T, S | S
(1) 消去G1的左递归。然后对每一个非终结符,写出不带回溯的递归子程序。 (2) 经改写后的文法是否是LL(1)文法?给出它的预测分析表。 9下面文法中那些是LL(1)文法,说明理由。 (1) 1、 S→Abc 2、 A→a|ε 3、 B→b|ε (2) S→Ab
A→a | B|ε B→b | ε (3)S→ ABBA A→a | ε B →b | ε (4) S→aSe |B B→bBe | C C→c Ce | d
第六章 自底而上优先分析法课外训练
(一)内容
本章介绍编译程序的第二个阶段语法分析的第二种设计方法和实现原理即自下而上分析的原理,包括一些基本概念、简单优先分析法、算符优先分析法。 (二)本章重点
自下而上分析的思想,算符优先文法及其分析。 (三)本章难点
句柄的定义,优先关系的定义,求FIRSTVT集和LASTVT集,优先分析表的构造 (四)本章考点
基本概念的定义(短语、直接短语、句柄、最左素短语、规范归约等)。 算符优先分析法。 (五)学习指导
理解最左素短语的基本概念;掌握算符优先分析方法。自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号,从输入串的语法树上直观地看就是沿着语法树的底部向上分析归约,最终能到达根结点的就认为当前的输入串能被接受。算符优先分析(OPG)是自下而上分析中针对运算表达式较为常用的易于理解的分析算法。 附训练试题:
1已知文法G[S]为算符优先文法,其规则为: S→SaF|F F →FbP|P
P →c|d 求优先关系表 2 对下列文法G:
S’→ #S# P →S|i S →D(R) D →i R → R; P|P
求:出每个非终结符的FIRSTVT集和LASTVT集,并构造算符优先关系矩阵。 3 考虑下面文法G2: S→ a| ∧ | (T) T→ T, S | S
(1)给出(a,(a, a)) 和(((a,a), ∧ ,(a)),a)的最左和最右推导。 (2)给出串(a, (a, a))的算符优先分析过程。
第七章 LR分析法课外训练
(一)内容