1、练习三9、考虑下面上下文无关文法:SSS*|SS+|a(1)表明通过此文发如何生成串 aa+a*,并为该串构造推导树。(2)该文法生成的语言是什么?答:(1)S=SS*=SS+S*=aS+S*=aa+S*=aa+a*SSS*S S +aaaS=SS*=SS*S*=SS*S*S*=S(S*) =Sa*(S*) =aa*a*n1n(S*) =S(a*) =SS+(a*) =SS+S+(a*) =SS+S+S+(a*) =2nnn n=S(S+) (a*) =a(S+) (a*) =aa+(S+) (a*) =aa+a+(S+) mm1mn2m(a*) =a(a+) (a*)nn所以该文发生成的语言
2、是:L1= a(a+) (a*) |n,m=1mn10、文法 S-S(S)S|(1)生成的语言是什么?(2)该文发是二义的吗?说明理由。答:(1)S=S(S)S=S(S(S)S)S=S(S(S)S)S=S(S)S(S(S)S)S=S(S)S(S)S(S(S)S)S=(S(S) S(S(S)S)S=(S(nS) S(S(S)S)S(S)S=(S(S) S(S(S)S)S(S)S(S)S=(S(n nS) S(S(S)S) (S(S) Sm所以该文法生成的就是嵌套的括号。(2)由上面推导过程可知该语法可以构成不同的语法树,所以它是二义的。11、令文法 GE为:E-T|E+T|E-TT-F|T*F|
3、T/FF-(E)|i证明 E+T*F 是它的一个句型,指出这个句型的所有短语,直接短语和句柄。答:因为 E=E+T=E+T*F,所以 E+T*F 是它的一个句型。因为 E=E+T=E+T*F,所以该句型相对于 E 的短语有:E+T*F因为 T- T*F,所以该句型相对于 T 的短语有:T*F直接短语为:T*F句柄为:T*F13、一个上下文无关文法生成句子 abbaa 的推导树如下:SA B SS B Ba A ab b a(1) 给出该句子相应的最左推导,最右推导。(2) 该文法的产生式集合 P 可能有哪些元素?(3) 找出该句子的所有短语,简单短语,句柄。答:(1) 最右推导:S=ABS=A
4、BAa=ABaa=ASBBaa=ASBbaa=ASbbaa=A bbaa=Abbaa=abbaa最左推导:S=ABS=aBS=aSBBS=a BBS=aBBS=abBS=abbS=abbAa=abbaa(2) 产生式包括:S-ABS|Aa| B-b|SBB A-a该文法的产生式集合 P 可能有 S=S=Aa=aaS=ABS=aBS=abS=ab =abS=ABS=ABAa=aBAa=abAa=abaaS=ABS=ASBBS=AAaBBS=aAaBBS=aaaBBS=aaabBS=aaabbS=aaabb =aaabb所以有 aa ab abaa aaabb (3)因为产生式包括:S-ABS|A
5、a| B-b|SBB A-aS= , 是相对 S 的短语。S=Aa=aa,aa 是相对 S 的短语。S=ABS=aBS=aSBBS=a BBS=aBBS=abBS=abbS=abbAa=abbaa,abbaa 是相对 S 的短语。A=a,a 是相对 A 的短语。B=b,b 是相对 B 的短语。B=SBB= BB = bB= bb, bb 是相对 B 的短语。直接短语有:a,b, 句柄:a14、给出生成下述语言的上下文无关文法:(1)a b a b |n,m=0nm答:S-ASBS S-ASB S- A-a B-bS=ASBS=aSBS=aSbS=aASBbS=aaSbBS=aaSbbS=aaA
6、SbbBS=aaaSbbBS=aaaSbbbS=a Sb S=a b S=a b S=a b AnnnnSB= a b aSB= a b aSb=a b aASBb=a b aaSBb=a b aaSbbnn= a b a Sb = a b a b = a b a bmnmnm推导得:L1=a b a b |n,m=0n(2)1 0 1 0 |n,m=0nmn答:S-1S0 S-A A-0A1 A-S=1S0=11S00=111S000=1 S0 =1 A0 =1 1A00 =1nnnn11A000 =1 0 A1 0 =1 0 1 0 =1 0 1 0nnmnmm推导得:L2=1 0 1 0 |n,m=0