http://book.51cto.com/art/201204/331576.htm
一、文法的概念和分类
1.文法的定义描写叙述语言语法结构的形式规则称为文法。文法通常定义为四元组:
G=(VN,VT,P,S)
VN ——非终结符号集
VT ——终结符号集
P——产生式或规则的集合
S——開始符号(识别符号),S∈VN
产生式是一个有序对(U,x),通常写为:U→x;非终结符号出如今产生式的左部,且能推出符号或符号串的那些符号,其全体构成非终结符号集,记为VN。终结符号不出如今产生式的左部,且不能推出符号或符号串的那些符号。
2.文法分类
乔姆斯基把文法分成四种类型,即 0型、1型、2型和3型。这几种文法类型的概念一定要掌握,是一个很重要的考点。
(1)0型文法
设 G(V ,V ,P,S),假设它的每一个产生式 α→β是这样一种结构: α∈
=N T(V*NTV)U且至少含有一个非终结符,而 β∈(V*NTV)U,则G是一个0型文法。0型文法也称短语文法。一个很重要的理论结果是:0型文法的能力相当于图灵机(Turing)。或者说,不论什么0型文语言都是递归可枚举的,反之,递归可枚举集必然是一个0型语言。0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文法。
(2)1型文法
1型文法也叫上下文有关文法,它是在 0型文法的基础上每个 α→β,都满足。这里的 |β|表示的是β的长度。β ≥α
(3)2型文法
2型文法也叫上下文无关文法,它相应于下推自己主动机。2型文法是在1型文法的基础上,再满足:每个α→β都有α是非终结符。如A->Ba,符合2型文法要求。
如Ab->Bab尽管符合1型文法要求,但不符合2型文法要求,由于其α=Ab,而Ab不是一个非终结符。
(4)3型文法 3型文法:不论什么产生式A→α|αB(右线性)或A→α|Bα(左线性),当中A,B∈VN,α∈VT。
3.句子和语言
(1)推导与直接推导
推导就是从文法的開始符号S出发,重复使用产生式,将产生式左部的非终结符替换为右部的文法符号序列,直到产生一个终结符的序列时为止。若有产生式 α→β∈ P,,δ∈*
γ V ,则称 γαδ. γβδ为文法G中的一个直接推导,并称 γαδ可直接推导出 γβδ。
(2)直接归约和归约
直接归约和归约(推导的逆过程):若文法G中有一个直接推导 α. β,则称 β可直接归约成 α,或 α是 β的一个直接归约。若文法G中有一个推导 γ. * δ,则称 δ可归约成 γ,或 γ是 δ的一个归约。
(3)句子和句型
若文法G的開始符号为S,那么,从開始符号S能推导出的符号串称为文法的一个句型,即 α是文法G的一个句型,当且仅当有例如以下推导 S . * ,∈*XV,则
ααV 。若X是文法G的一个句型,且 ∈*T称X是文法G的一个句子,即仅含终结符的句型是一个句子。
(4)语言从文法G的開始符号出发,能推导出的句子的全体称为文法G产生的语言,记为L(G)。
4.文法的等价
若文法G1和G2产生的语言同样,即L(G1)=L(G2),则称这两个文法是等价的。
二、词法分析
1.正规表达式和正规集
2.有限自己主动机
(1)确定的有限自己主动机(DFA)
(2)不确定的有限自己主动机(NFA)
(3)NFA和DFA的转换
(4)DFA的最小化
三、正规式与有限自己主动机之间的转换
1.有限自己主动机转换为正规式对于 ∑上的NFAM,能够构造一个 ∑上的正规式R,使得L(R)=L(M)。拓广状态转换图的概念,令每条弧可用一个正规式作标记。为 ∑上的NFA M构造对应的正规式R,分为例如以下两步:
(1)在M的状态转换图中加两个节点,一个x节点,一个y节点。从x节点到NFA M的初始状态节点引一条弧并用 ε标记,从NFA M的全部终态节点到y节点引一条弧并用 ε标记。形成一个与 M等价的M',M'仅仅有一个初态x和一个终态y。
(2)按以下的方法逐步消去M'中除x和y的全部节点。在消除节点的过程中,用正规式来标记弧,最后节点x和y之间弧上的标记就是所求的正规式。消除节点的规则如图2-6所看到的。
![]() |
图 2-6 有限自己主动机到正规式的转换规则示意图 |
2.正规式转换为有限自己主动机
相同地,对于 ∑上的每一个正规式R,能够构造一个E上的NFA M,使得L(M)=L(R)。通过对正规式R进行分裂并增加新的节点,逐步把图转变成每条弧上的标记是E上的一个字符或 ε。转换规则如图2-7所看到的。
![]() |
图 2-7 正规式到有限自己主动机的转换规则示意图 |
四、语法分析
1.上下文无关文法
.规范推导(最右推导)
.短语、直接短语和句柄
2.自顶向下语法分析方法
消除文法的左递归
提取公共左因子
LL(1)文法:FOLLOW集和FIRST集
递归下降分析法
预測分析法
3.自底向上语法分析方法(移进 -归约分析法)移进-归约分析法的数学模型是下推自己主动机。模型可採用算法优先分析表和LR分析表。
五、题型简单介绍
除了上面提到的知识点,还有语法制导翻译和中间代码生成,及中间代码优化和目标生成可能还会考一些概念问题,详细请考生阅读教材。须要注意的是经常使用的中间代码:后缀式、三元式、四元式和树等结构。最后给出有关“正规式与有限自己主动机”这一考点的各种可能考查形式:
题目给定一正规式,要求给出其NFA、DFA或最简DFA。
题目给定一用状态图表示的NFA,要求给出其相应的DFA或最简DFA形式。
题目给定一NFA、DFA或最简DFA,要求给出其相应的正规式。
题目给定一正规集,要求给出其对应的DFA。
题目给定一用自然语言描写叙述的正规集,要求给出其对应的正规式表示形式
怎么考
【试题 2-24】2011年 11月真题 48
下图所看到的为一个有限自己主动机(当中,A是初态、C是终态),该自己主动机识别的语言可用正规式(48)表示。
![]() |
(48)A. (0|1)*01 B. 1*0*10*1 C. 1*(0)*01 D. 1*(0|10)*1*
分析:在正规式中,符号 *表示反复若干次(包含 0次),符号 |表示“或”。在状态 A,能够输入 1或0,假设输入1还能够回到状态A,假设输入 0直接到达状态B;在状态 B,能够输入 0或1,假设输入 0则还回到状态 B,而输入 1,则进入到状态 C;在状态 C能够输入0或1,输入 0到达状态B,输入 1到达状态A,但因为 C是终态,自己主动机可识别的语言是由0、1构成的字符串的集合,但该集合必须以 01结果,因此选项 A正确。【答案:A】
【试题 2-25】2011年 5月真题 15
包括8个成员的开发小组的沟通路径最多有( 15)条。
(15)A.28 B.32 C.56 D.64
分析:须要协作沟通的人员的数量影响着开发成本,由于成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果。人与人之间必需通过沟通来解决各自承担任务之间的接口问题,假设项目有n个工作人员,则有n×(n -1)/ 2个相互沟通的路径。非常明显,包括8个成员的开发小组的沟通路径最多有28条。这事实上是一道简单的图论问题,相当于求包括 8个顶点的无向图中最多有多少条边。【答案:A】
【试题 2-26】2011年 5月真题 49
下图所看到的为一个有限自己主动机(当中,A是初态、C是终态),该自己主动机可识别( 49)。
![]() |
(49)A.0000 B.1111 C.0101 D.1010 分析:有限自己主动机可识别的字符串,是指从有限自己主动机的初态出发,存在一条到达终态的路径,其上的标记所构成的字符串。对于“ 0000”,其识别路径是状态 A→状态B→状态B→状态B→状态
B,没有到达态。
对于“1111”,其识别路径是状态A→状态A→状态A→状态A→状态A,没有到达态。
对于“0101”,其识别路径是状态A→状态B→状态C→状态B→状态C,状态C为终态,能够识别。
对于“1010”,其识别路径是状态A→状态A→状态B→状态C→状态B,经过了终态,但没有以终态结束。【答案:C】
【试题 2-27】2010年 11月真题 22
下图所看到的的有限自己主动机中,0是初始状态,3是终止状态,该自己主动机能够识别(22)。
![]() |
(22)A.abab B.aaaa C.bbbb D.abba
分析:从初始状态到终止状态有多条路径。在状态 0输入a到达状态2,在状态 2可输入a或b,输入 a到达状态1,输入 b到达状态3,状态3下输入a还回到状态3;在状态 1可输入a或b,输入 a到达状态3,输入b到达状态2。【答案:B】
【试题 2-28】2010年 11月真题 48
下图所看到的为两个有限自己主动机Ml和M2 (A是初态、C是终态),(48)。
![]() |
C.M1是确定的有限自己主动机,M2是不确定的有限自己主动机
D.M1是不确定的有限自己主动机,M2是确定的有限自己主动机
分析:确定有限自己主动机对每个可能的输入仅仅有一个状态的转移。非确定有限自己主动机对每个可能的输入能够有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。有限自己主动机 M1在状态A时,输入0能够回到状态A,也能够到达状态 B,可见 M1是不确定的。有限自己主动机 M2的每个状态下的输入都仅仅有一个转移状态。【答案:D】
考点 3 文法分析(4)
【试题 2-29】2010年 5月真题 21
逻辑表达式“a∧b∨c∧(b∨x>0)”的后缀式为(21)。(当中∧、∨分别表示逻辑与、逻辑或,>表示关系运算大于,对逻辑表达式进行短路求值)
(21)A.abcbx0>∨∧∧∨ B.ab∧c∨b∧x0>∨
C.ab∧cb∧x>0∨∨ D.ab∧cbx0> ∨∧∨
分析:后缀式把运算符写在运算对象后面。“逻辑与运算”的优先级高于“逻辑或运算”。对于逻辑表达式“a∧b∨c∧(b∨x>0)”,从运算符的优先级方面考虑,需先对“a∧b”求值,然后对“c∧(b∨x>0)”求值,最后进行“∨”运算,因此后缀式为“ab∧cbx0> ∨∧∨”。【答案:D】
【试题 2-30】2010年 5月真题 50
对于正规式0*(10*1)*0*,其正规集中字符串的特点是(50)。
![]() |
(50)A.开头和结尾必须是0 B.1必须出现偶数次
C.0不能连续出现 D.1不能连续出现
分析:闭包运算符“ *”将其运算对象进行若干次连接,因此 0*表示若干个0构成的串,而 (10*1)*则表示偶数个1构成的串。【答案:B】
【试题 2-31】2009年 11月真题 50
由某上下文无关文法M[S]推导出某句子的分析树如图所看到的,则错误叙述的是( 50)。
(50)A.该文法推导出的句子必须以“a”开头
B.acabcbdcc是该文法推导出的一个句子
C.“S → aAcB”是该文法的一个产生式
D.a、b、c、d属于该文法的终结符号集
分 析:上图是某上下文无关文法M[S]推导出某句子的分析树,看图仅仅要稍作推导就可推出 “acabcbdcc”
是该文法推导出的一个句子;看该分析树的第一层分枝就可以知 “S → aAcB”是该文法的一个产生式;而 a、b、 c、d由于在图中是分析树的叶子,都是该文法的终结符号;右边的B分枝下有S → Bd,B →ε,所以该文法推导出的句子不一定是“a”开头,因此答案A是不对的。【答案:A】
【试题 2-32】2009年 5月真题 48
下图所看到的有限自己主动机的特点是(48)。
![]() |
(48)A.识别的0、1串是以0开头且以1结尾
B.识别的0、1串中1的数目为偶数
C.识别的0、1串中0后面必须是1
D.识别的0、1串中1不能连续出现
分 析:由图可知,从初始态q0输入0仍然到q0或者输入1到达终态q1,从q1还能够输入0又一次到达初始态 q0,所以这个有限自己主动机识别的 0、1串不一定是以0开头的,1的数目的奇偶性也没办法确定,0后面也能够是 0,所以A、B、C都是错误的。从q0输入1到达终态q1后,或者串结束,或者输入0再到q0,所以这个串中的1不会连续出现,D是正确的。【答案:D】
【试题 2-33】2009年 5月真题 49
由a、b构造且仅包括偶数个a的串的集合用正规式表示为( 49)。
(49)A.(aa)b* B.(b (aba))* C.(a (ba)b) D.(a|b) (aa)*
分 析:本题主要考察考生对闭包概念的理解。【答案:B】
Σ*:指包含空串ε在内的Σ上全部字符串的集合。关键在于Σ*可取空串ε。理解了这个概念就不难看出答案B是正确的。
【试题 2-34】2009年 5月真题 50
程序语言的大多数语法现象可用上下文无关文法描写叙述。对于一个上下文无关文法G=(N,T,P,S),当中N是非终结符号的集合,T是终结符号的集合,P是产生式集合,S是開始符号。令集合V= N∪ T,那么 G所描写叙述的语言是(50)的集合。
(50)A.从S出发推导出的包括V中全部符号的串 B.从S出发推导出的仅包括T中符号的串
C.N中全部符号组成的串 D.T中全部符号组成的串
分 析:若V∈N∪V,依据上下文无关文法的特性,V总能够被字符串N∪V自由地替换。但当V= N∪T时,因为非终结符的不唯一性,要构成等式成立,必需要N∪T中的符号串收缩为终结符,即都是T的集合。所以上下文无关文法G描写叙述的语言是从S出发推导出的仅包括T中符号的串的集合。【答案:B】
【试题 2-35】2008年 12月真题 48
给定文法G[S]及其非终结符A,FIRST(A)定义为:从 A出发能推导出的终结符号的集合( S是文法的起始符号,为非终结符)。对于文法G[S]:
S→[L] | a
L→L, S| S
当中,G[S]包括的四个终结符号分别为:a , [ ]
则FIRST(S)的成员包含( 48)。
(48)A.a B.a、[ C.a、[和] D.a、[、]和,分 析:由S→[L] | a得S→[L]和S→a,所以FIRST(S)={[,a}。【答案:B】
【试题 2-36】2008年 12月真题 50
设某上下文无关文法例如以下:S→11 | 1001 | S0 |SS,则该文法所产生的全部二进制字符串都具有的特点是
(50)。
(50)A.能被3整除 B.0、1出现的次数相等
C.0和1的出现次数都为偶数 D.能被2整除
分 析:本题考查上下文无关文法产生的字符串集合。【答案:A】
B选项:由S→11,B显然不对。
C选项:由S→11和S→0S有S→011,C不对。
D选项:由S→11,二进制11为十进制3,不能被2整除,D不对。
【试题 2-37】2008年 5月真题 21
已知某文法G[S]:S→0S0 S→1,从S推导出的符号串可用(21) (n≥0) 描写叙述。
![]() |
![]() |
分 析:推导树为:
能够看出S →1就结束了,所以不可能产生1n(C、D被排除)。也不可能产生010010010…这种式子,还是由于S →1就结束了,不会有多个1这种式子的。【答案:B】
【试题 2-38】2008年 5月真题 48
有限自己主动机( FA)可用于识别高级语言源程序中的记号(单词),FA可分为确定的有限自己主动机( DFA)和不确定的有限自己主动机(NFA)。若某DFA D与某NFA M等价,则( 48)。
(48)A.DFA D与NFA M的状态数一定相等
B.DFA D与NFA M可识别的记号同样
C.NFA M能识别的正规集是DFA D所识别正规集的真子集
D.DFA D能识别的正规集是NFA M所识别正规集的真子集分 析:本题考查DFA和NFA的相关知识。【答案:B】有限自己主动机的确定化:对于任一个NFA M,都能够构造其相应的DFA M',使这两个自己主动机接受同样的
字符串集合:L(M ) ' =L(M) 。所以B正确。
【试题 2-39】2008年 5月真题 49
某确定性有限自己主动机(DFA)的状态转换图如图所看到的,令d=0|1|2|...|9,则下面字符串中,能被该DFA接受的是(49)。
![]() |
(49)A.3857 B.1.2E+5
C.-123.67 D.0.576E10
分 析:如图,从初态0開始走各种能走的路线到达终态6,加上条件d=0|1|2|...|9,非常easy得出-123.67,路线是 0 →→→→4156 。【答案:C】