第二章 前后文无关文法和语言 课后答案【khdaw_lxywyl】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章前后文无关文法和语言
1设有字母表A1={a,b,…,z},A2={0,1,…,9},试回答下列问题:(1)字母表A1上长度为2的符号串有多少个?(2)集合A1A2含有多少个元素?
(3)列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。
2试分别构造产生下列语言的文法。
(1){anbn|n≥0};
(2){anbmcp|n,m,p≥0};
(3){an#bn|n≥0}∪{cn#dn|n≥0};
(4){w#wr#|w∈{0,1}*,wr 是将w 中的符号按逆序排列所得的符号串};(5)任何不是以0开始的所有奇整数所组成的集合;
(6)所有由偶数个0和偶数个1所组成的符号串的集合。
3试描述由下列文法所产生的语言的特点(文法的开始符号均为S)。
(1)S→10S0S→aAA→bAA→a (2)S→SSS→1A0A→1A0A→ε(3)S→1AS→B0A→1AA→C
B→B0B→CC→1C0C→ε(4)S→bAdcA→AGSG→εA→a (5)S→aSSS→a
4设已给文法G=(VN,VT,P,S),其中:VN={S}
VT={a1,a2,…,an,∨,∧,~,[,]}
P={S→ai|i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]},试指出此文法所产生的语言。
5考察文法G=(VN,VT,P,S),其中:VN={S,A,B,C,D,E,F,G}VT={a},
P={S→ABC,C→BC,C→A,BA→GE,BG→GBF,AG→AD,DB→BD,DE→AE,FB→BF,FE→Ea,AA→ε}(1)指出此文法的类型;
(2)证明此文法所产生的语言为L(G)={at(n)|n≥1}t(n)=∑n[]i=1i
6设已给文法G[〈程序〉]:
〈程序〉→〈分程序〉|〈复合语句〉
〈分程序〉→〈无标号分程序〉|〈标号〉:〈分程序〉
〈复合语句〉→〈无标号复合语句〉|〈标号〉:〈复合语句〉〈无标号分程序〉→〈分程序首部〉;〈复合尾部〉〈无标号复合语句〉→begin〈复合尾部〉
〈分程序首部〉→begin〈说明〉|〈分程序首部〉;〈说明〉〈复合尾部〉→〈语句〉end|〈语句〉;〈复合尾部〉〈说明〉→d 〈语句〉→s 〈标号〉→L
w w w .
k h d
a w .
c o m
课
后
答
案
网
(1)给出句子L:L:begin d;d;s;s end 的最左推导和最右推导。
(2)画出上述句子的语法树。
7设已给文法G[S]:S→aAcBS→BdSB→aScAB→cAB
A→BaBA→aBcA→aB→b
试检验下列符号串中哪些是G[S]中的句子,给出这些句子的最左推导、最右推导和相应的语法树。
(1)aacb
(2)aabacbadcd (3)aacbccb
(4)aacabcbcccaacdca (5)aacabcbcccaacbca
28设G=(VN,VT,P,S)为CFG,α1,α2,…,αn 为V 上的符号串,试证明:若
α1α2…αn *β则存在V 上的符号串β1,β2,…,βn,使β=β1β2…βn,且有ai *βi(i=1,2,…,n)
9设G=(VN,VT,P,S)为CFG,α和β都是V 上的符号串,且α *β,试证明:当α的首符号为终结符号时,β的首符号也必为终结符号;当β的首符号为非终结符号时,则α的首符号也必为非终结符号。
10试证明:文法S→ABS→DCA→aAA→a
B→bBcB→bcC→cCC→c
D→aDbD→ab 为二义性文法。
11对于下列的文法和相应的句子,试指出这些句子的全部短语;分别给出句子的最右推导,并指出各步直接推导所得句型的句柄。
(1)S→ABS→cA→bAA→aB→aSbB→c bbaacb (2)S→(AS)S→(b)A→(SaA)A→(a)(((b)a (a))(b))(3)E→ET+E→TT→TF*T→FF→FP↑F→PP→EP→i iii*i+↑
12在自底向上的分析中,用来归约句型句柄的产生式称为句柄产生式。
试证明:一个文法是无二义性的,当且仅当此文法的每一句型至多只有一个句柄和一个句柄产生式。
13化简下列各个文法。
(1)S→aABSS→bCACdA→bABA→cSA
A→cCCB→bABB→cSBC→cS C→c
(2)S→aABS→EA→dDAA→e
B→bEB→fC→cABC→dSD C→aD→eAE→fAE→g (3)S→acS→bAA→cBCB→SA
C→bCC→d
14消去下列文法中的ε产生式。
(1)S→aASS→bA→cSA→ε(2)S→aAAA→bAcA→dAeA→ε
15消去下列文法中的无用产生式和单产生式。
(1)S→aBS→BCA→aAA→c
A→aDbB→DBB→CD→B C→b
(2)S→SAS→SBA→BB→[S]
w w w .
k h d
a w .
c o m
课
后
答
案
网
A→(S)S→AB→[]A→()(3)E→E+TE→TT→T*FT→F
F→P↑FF→PP→(E)P→i
第二章习题解答
1.(1)答:26*26=676(2)答:26*10=260
(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},
共26+26*36+26*36*36=34658个
2.构造产生下列语言的文法(1){anbn|n≥0}
解:对应文法为G(S)=({S},{a,b},{S→ε|aSb },S)(2){anbmcp|n,m,p≥0}
解:对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)(3){an #bn|n≥0}∪{cn #dn|n≥0}
解:对应文法为G(S)=({S,X,Y},{a,b,c,d,#},{S→X,S→Y,X→aXb|#,Y→cYd|#},S)(4){w#wr#|w?{0,1}*,wr 是w 的逆序排列}
解:G(S)=({S,W,R},{0,1,#},{S→W#,W→0W0|1W1|#},S)(5)任何不是以0打头的所有奇整数所组成的集合
解:G(S)=({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e,I→J|2|4|6|8,Jà1|3|5|7|9},S)
(6)所有偶数个0和偶数个1所组成的符号串集合
解:对应文法为S→0A|1B|e,A→0S|1C B→0C|1S C→1A|0B 3.描述语言特点
(1)S→10S0S→aAA→bAA→a
解:本文法构成的语言集为:L(G)={(10)nabma0n|n,m≥0}。
(2)S→SS S→1A0A→1A0A→ε
解:L(G)={1n10n11n20n2…1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全为零}该语言特点是:产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同连续的0。
(3)S→1AS→B0A→1AA→CB→B0B→CC→1C0C→ε
解:本文法构成的语言集为:L(G)={1p1n0n|p≥1,n≥0}∪{1n0n0q|q≥1,n≥0},特点是具有1p1n0n 或1n0n0q 形式,进一步,可知其具有形式1n0mn,m≥0,且n+m>0。
(4)S→bAdcA→AGSG→εA→a 解:可知,S=>…=>baSndc n≥0
该语言特点是:产生的句子中,是以ba 开头dc 结尾的串,且ba、dc 个数相同。
(5)S→aSSS→a
解:L(G)={a(2n-1)|n≥1}可知:奇数个a
4.解:此文法产生的语言是:以终结符a1、a2…an 为运算对象,以∧、∨、~为运算符,以[、]为分隔符的布尔表达式串
5. 5.1解:由于此文法包含以下规则:AA→e,所以此文法是0型文法。
5.2证明:略
6.解:
(1)最左推导:
<程序>T<分程序>T<标号>:<分程序>TL:<分程序>TL:<标号>:<分程序>
w w w .
k h d
a w .
c o m
课
后
答
案
网
T L:L:<分程序>
T L:L:<无标号分程序>
T L:L:<分程序首部>;<复合尾部>
T L:L:<分程序首部>;<说明>;<复合尾部>T L:L:begin<说明>;<说明>;<复合尾部>T L:L:begin d;<说明>;<复合尾部>T L:L:begin d;d;<复合尾部>
T L:L:begin d;d;<语句>;<复合尾部>T L:L:begin d;d;s;<复合尾部.T L:L:begin d;d;s;<语句>end T L:L:begin d;d;s;s end 最右推导:
<程序>T<分程序>T<标号>:<分程序>T<标号>:<标号>:<分程序>
T<标号>:<标号>:<无标号分程序>
T<标号>:<标号>:<分程序首部>;<复合尾部>
T<标号>:<标号>:<分程序首部>;<语句>;<复合尾部>T<标号>:<标号>:<分程序首部>;<语句>;<语句>;end T<标号>:<标号>:<分程序首部>;<语句>;s;end T<标号>:<标号>:<分程序首部>;s;s;end
T<标号>:<标号>:<分程序首部>;说明;s;s;end T<标号>:<标号>:<分程序首部>;d;s;s;end T<标号>:<标号>:begin 说明;d;s;s;end T<标号>:<标号>:begin d;d;s;s;end T<标号>:L:begin d;d;s;s;end TL:L:begin d;d;s;s;end
(2)句子L:L:begin d;d;s;s end 的相应语法树是:
w w w .
k h d
a w .
c o m
课
后
答
案
网
7.解:
aacb 是文法
G[S]中的句子,相应语法树是:
最右推导:S=>aAcB=>aAcb=>aacb 最左推导:S=>aAcB=>aacB=>aacb
(2)aabacbadcd 不是文法G[S]中的句子因为文法中的句子不可能以非终结符d 结尾(3)aacbccb 不是文法G[S]中的句子
可知,aacbccb 仅是文法G[S]的一个句型的一部分,而不是一个句子。
(4)aacabcbcccaacdca 不是文法G[S]中的句子
因为终结符d 后必然要跟终结符a,所以不可能出现…dc…这样的句子。
(5)aacabcbcccaacbca 不是文法G[S]中的句子
由(1)可知:aacb 可归约为S,由文法的产生式规则可知,终结符c 后不可能跟非终结符S,所以不可能出现…caacb…这样的句子。
8.证明:用归纳法于n,n=1时,结论显然成立。
设n=k 时,对于α1α2...αkT*b,存在βi:i=1,2,..,k,αiT*bi 成立,现在设
α1α2...αkαk+1T*b,因文法是前后文无关的,所以α1α2...αk 可推导出b 的一个前缀b',αk+1可推导出b 的一个后缀=b"(不妨称为b k+1)。
由归纳假设,对于b',存在βi :i=1,2,..,k,b'=β1β2...βk,使得
αiT*bi 成立,另外,我们有αk+1T*b"(=b k+1)。
即n=k+1时亦成立。
证毕。
9.证明:(1)用反证法。
假设α首符号为终结符时,β的首符号为非终结符。
即设:α=aω;β=Aω’且α=>*β。
由题意可知:α=aωT …T Aω’=β,由于文法是CFG,终结符a 不可能被替换空串或非终结符,因此假设有误。
得证;(2)同(1),假设:β的首符号为非终结符时,α首符号为终结符。
即设:α=aω;β=Aω’且α=aωT …T Aω’=β,与(1)同理,得证。
10.证明:因为存在句子:abc,它对应有两个语法树(或最右推导):STABTAbcTabc STDCTDcTabc
w w w .
k h d
a w .
c o m
课
后
答
案
网
所以,本文法具有二义性。
11.解:
(1)ST AB TA aSb TAa c bT bA acbTb bA acbTbb a acb
上面推导中,下划线部分为当前句型的句柄。
对应的语法树为:
全部的短语:
第一个a (a1)是句子bbaacb 相对于非终结符A (A1)(产生式A?a)的短语(直接短语);b1a1是句子bbaacb 相对于非终结符A2的短语;b2b1a1是句子bbaacb 相对于非终结符A3的短语;
c 是句子bbaacb 相对于非终结符S1(产生式S?c)的短语(直接短语);a2cb3是句子bbaacb 相对于非终结符B 的短语;
b2b1a1a2cb3是句子bbaacb 相对于非终结符S2的短语;注:符号的下标是为了描述方便加上去的。
(2)句子(((b)a(a))(b))的最右推导:
ST (AS)T(A (b))T((SaA)(b))T((Sa (a))(b))T(((b)a(a))(b))相应的语法树是:
w w w .
k h d
a w .
c o m
课
后
答
案
网
(3)解:iii*i+↑对应的语法树略。
最右推导:E TT=>F=>FP↑T FE↑T FET+↑T FEF+↑T FEP+↑T FEi+↑TFTi+↑T FTF*i+↑TFTP*i+↑T FTi*i+↑TFFi*i+↑T FPi*i+↑TFii*i+↑T Pii*i+↑Tiii*i+↑12.证明:充分性:当前文法下的每一符号串仅有一个句柄和一个句柄产生式T 对当前符号串有唯一的最左归约T 对每一步推导都有唯一的最右推导T 有唯一的语法树。
必要性:有唯一的语法树T 对每一步推导都有唯一的最右推导T 对当前符号串有唯一的最左归约T 当前文法下的每一符号串仅有一个句柄和一个句柄产生式13.化简下列各个文法
(1)解:S→bCACdA→cSA|cCCC→cS |c
(2)解:S→aAB |fA |gA→e |dDAD→eAB→f (3)解:S→ac
14.消除下列文法中的ε产生式(1)解:S→aAS |aS |bA→cS
(2)解:S→aAA |aA |aA→bAc|bc |dAe|de 15.消除下列文法中的无用产生式和单产生式(1)消除后的产生式如下:S→aB |BC B→DB |b C→b
D→b |DB
(2)消除后的产生式如下:
S→SA |SB |()|(S)|[]|[S]A→()|(S)|[]|[S]Bà[]|[S]
(3)消除后的产生式如下:
E →E+T |T*
F |(E)|P↑F |i T →T*F |(E)|P↑F |i F →P↑F |(E)|i P →(E)|i
w w w .
k h d
a w .
c o m
课
后
答
案
网。