习题解答(123章)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》习题解答(一)
第二次作业:
P38 1、3、5、7、8(1)(3)(5)、10、11(1)(2)、 12(1)(3)(5)、15
第1、3、5题 符号串集合的运算P19 第7题 文法的形式定义 P22 第8题 句型、句子的定义 P23 第10、11题 语言的形式定义,从文法->语言 P24 第12题 语言->文法 P25 第15题 推导语法树、句型短语、简单短语,句柄的概念 P26、P27
A B
a b B a a
2)句型baabaab的短语a, ba, baa, baab, baabaab,简单短语a,句柄 a 3)短语bB, AB, ABb,简单短语bB, AB,句柄bB
第三次作业:
P40 18、19(1)(3)、21、23、24、26、27、29
第18题、第19题 文法二义性的证明 P29 第21题 句子关于文法的最左、最右推导P22P27 第23题 初步语法分析(分析句子)P31、P32 第24题 四种文法的判别P34-P35 第26题 第27题 语言->文法 第29题 文法的其他表示法(扩充的BNF)P36、P37
文法的其他表示法(扩充的BNF)P36、P37
P42 29. 用扩充的BNF表示以下文法规则: Z::=AB|AC|A A::=BC|BCD|AXZ|AXY S::=aABb|ab A::=Aab|ε 解: 1.Z::=A(B|C|ε)::=A[B|C] 2.A::=BC(ε|D)|{X(Z|Y)}::= BC[D]|{X(Z|Y)} 3.A::=a((AB|ε)b) ::= a[AB]b 4.A::={ab|ε}::={ab}
P39 12、试分别构造产生下列语言的文法: (1){ abna | n=0,1,2,3……} (3){ aban | n≥1} (5){ anbmcp | n,m,p≥0}
语言->文法 P25
(1)G={VN,VT,P,S},VN={S,A },VT={a,b}, P:S∷=aAa A∷=bA |ε (3)G={VN,VT,P,S},VN={S,A },VT={a,b}, P:S∷=abA A∷=aA | a (5)G={VN,VT,P,S},VN={S,A ,B,C}, VT={a,b,c}, P:S∷=ABC A∷=aA |ε B∷=bB |ε C∷=cC |ε
P38 7、设有文法G[S]: S∷=A A∷=B | IF A THEN A ELSE A B∷=C | B+C | +C C∷=D | C*D | *D D∷=X | (A) | -D 试写出VN和VT。
文法的形式定义 P22
VN={S,A,B,C,D} VT={IF,THEN,ELSE,+,*,X,(,),-}
初步语法分析(分析句子)P31、P32 P41 23. 设有文法如下: 自顶向下-推导 <目标>::=V1 自底向上-规约 V1::=V2|V1iV2 V2::=V3|V2+V3|iV3 V3::=)V1*|( 试分析句子(, )(*, i(, (+(, (+(i(, (+)(i(*i(。
解 <目标>=> V1=>V2=>V3=>( <目标>=> V1=>V2=>V3=>)V1*=>)V2*=>)V3*=>)(* <目标>=> V1=>V2=>iV3=>i( <目标>=> V1=>V2=>V2+V3=>V3+V3=>(+V3=>(+( <目标>=> V1=>V1iV2=> V1iV3=> V1i(=>V2i(=>V2+V3i( =>V2+( i(=>V3+( i(=>(+(i( <目标>=> V1=>V1iV2=> V2iV2=> V2+V3iV2=> V3+V3iV2 => (+V3iV2=>(+)V1*iV2=>(+) V1iV2*iV2=>(+) V2iV2*iV2 =>(+) V3iV2*iV2=>(+) (iV2*iV2=>(+) (iV2*iV2 =>(+) (iV3*iV2=>(+) (i(*iV2=>(+) (i(*iV3=>(+) (i(*i(
左线性文法 -> 状态转换图, 状态转换图 ->FA(DFA/NFA)
解一:将文法变换成符合规则的情况 解二:先画出该文法状态转换图:
NFA=({S,A,Z},{0,1},M,{S},{Z})
其中M: M(S,0)={A} M(S,1)=ø M(A,0)={A,Z} M(A,1)=ø M(Z,0)=ø M(Z,1)={A} 显然该文法的自动机是非确定的; 它相应的语言为:{0,1}上所有满足以00开头以0结尾 且每个1必有0直接跟在其后的字符串的集合
符号串集合的运算P19
P38 3、令A={0,1,2},写出集合A+和A*的七个最短符号串。 A+:0,1,2,00,01,02,10(有多种可能) A*:ε,0,1,2,00,01,02(有多种可能) P38 5、试证明:A+=A A*=A*A。 证明:A+=A1∪A2∪……∪An∪…… A*=A0(即{ε})∪A+ A A*=A(A0∪A+ )=A∪A+=A+=A+∪A =(A0∪A+ )A=A*A(证毕)
由状态图可知只有eefe是该文法的合法句子。
右线性文法 -> 状态转换图P48
P74 5. 设右线性文法G=({S, A, B}, {a, b}, S, P),其中P组成如下: S::=bA A::=bB A::=aA A::=b B::=a 画出该文法的状态转换图。
第五次作业:
P74 6、7、8、9、10
P38 1、设T1={11,010},T2={0,01,1001}, 计算:T2T1,T1*,T2+。 T2T1={011,0010,0111,01010,100111,1001010} T1*={ε,11,010,1111,11010,01011,010010……} T2+={0,01,1001,00,001,01001,010,0101……}
P74 状态转换图->正规文法(右线性) 7. 构造一个DFA,它接受{0,1}上所有满足下述条件的字符串, 其条件是:字符串中每个1都有0直接跟在右边,然后,再构造该 语言的正规文法。
0, 00,10 000,010,100 ……
具体字符串 -> 状态转换图
A
,1},M,S,{Z}) 0 Z 其中M: M(S,0)=Z M(S,1)= A M(A,0)=Z M(Z,0)=Z M(Z,1)=A 该语言的正规文法G[Z]为: 右线性文法://S::=0|1A|0Z 左线性文法: A::=0|0Z A::=1|Z1 Z::=0|1A|0Z Z::=0|A0|Z0
1)0、1 2)00 、01、10 3)000、001、010、100、101 4)0000、0001、0010、0100、0101、 1000、1001、1010 ……
S::=0|1 S::=0|1|0S|1A A::=0 S::=0|1|0S|1A A::=0|0S
P41 27. 给出一个产生下列语言 L(G)={W|W∈{a,b}* 且W中含a的个数是b个数两倍的前后文无关文法。 文法G=({S, A, B}, {a, b}, P, S) P: S::=AAB|ABA|BAA|ε A::=aS B::=bS 或者 S::=Saab|aSab|aaSb|aabS|Saba|aSba|abSa |abaS|Sbaa|bSaa|baSa|baaS|ε 或者 S::=aaSb|abSa|baSa|baa|aba|aab 解法: 1)ε S::= ε 2)aab, aba, baa S::=aab|aba|baa 3)aaaabb, aaabab, aaabba, aababa, aabbaa,bbaaaa…… S::=Saab|aSab|aaSb|aabS|Saba|aSba|abSa|abaS|Sbaa |bSaa|baSa|baaS| ε
P41 24. 下面文法那些是短语结构文法,上下文有关文法,上下文无 关文法,及正规文法? 1.S::=aB B::= cB B::=b C::=c 2.S::=aB B::=bC C::=c C::=ε 3.S::=aAb aA::=aB aA::=aaA B::=b A::=a 4.S::=aCd aC::=B aC::=aaA B::=b 5.S::=AB A::=a B::=bC B::=b C::=c 6. S::=AB A::=a B::=bC C::=c C::=ε 7. S::=aA S::= ε A::=aA A::=aB A::=a B::=b 8. S::=aA S::= ε A::=bAb A::=a 正规文法 1 上下文无关文法 2 5 6 7 8 上下文有关文法 3 短语结构文法 4
第4题 考察范围:左线性文法 -> 状态转换图P47 第5题 考察范围:右线性文法 -> 状态转换图P48
P74 左线性文法 -> 状态转换图P47 4. 画出下列文法的状态图: Z::=Be B::=Af A::=e|Ae 并使用该状态图检查下列句子是否该文法的合法句子:f, eeff, eefe。
第6题 左线性文法 -> 状态转换图, 状态转换图 ->FA(DFA/NFA) 第7题 具体字符串 -> 状态转换图 状态转换图->正规文法(右线性) 第8题 NFA->DFA 第9题 DFA->右线性文法 右线性文法->左线性文法 第10题 正规文法(右线性)->DFA
P74 6. 构造下述文法G[Z]的自动机,该自动机是确定的吗?它相应的语言是什么? Z::=A0 A::=A0|Z1|0
P38-39 8、设有文法G[S]: S∷=aAb A∷=BcA | B B∷=idt |ε 试问下列符号串(1)aidtcBcAb (3)ab (5)aidtcidtcidtb 是否为该文法的句型或句子。 S=>aAb=>aBcAb=>aidtcAb=>aidtcBcAb S=>aAb=>aBb=>ab S=>aAb=>aBcAb=>aidtcBcAb=>aidtcidtcBb=>aidtcidtcidtb
[ t] ε或 t { t} t不出现或出现任意多次 ( ) 提取因子
思考题:
语言L(G[S])={b2i+1 | i>=0}对应 的3型文法?
G={VN,VT,P,S},VN={S,A },VT ={b}, S∷= bbS |b ?? P:S∷= bA |b A∷= bS
第四次作业:
P74 2、4、5
推导语法树、句型短语、简单短语,句柄的 P39 15. 设文法G规则为: 概念 S::=AB P26、P27 B::=a|Sb A::=Aa|bB 对下列句型给出推导语法树,并求出其句型短语,简单短语和 句柄。 (2)baabaab (3)bBABb
S A A b B B aS b A b B S A B S B b
句型、句子的定义 P23
语言的形式定义,从文法->语言 P24
P39 10、给定文法: S∷=aB | bA A∷=aS | bAA | a B∷=bS | aBB | b
该文法所描述的语言是什么?
L(G)={相同个数的a与b以任意次序连接而成的非空符号串}。 P39 11、试分别描述下列文法所产生的语言(文法开始符号为S): 1)S∷=0S | 01 2)S∷=aaS | bc 3) S:: =aSd | aAd A:: =aAc | bc 1)L(G)={0n1| n≥1}; 2)L(G)={a2nbc | n≥0}; 3)L(G)={aibcjdk | i, j, k≥1, i=j+k-1}。
0
1
S
1
0
解法二
构造出正规表达式 (0 | 10)* 转换系统
四种文法的判别P34-P35
语言->文法
P41 26. 给出产生下列语言L(G)={W|W∈{0,1}+且W不含相邻1} 的正规文法。 G=({S, A, B}, {0, 1}, P, S) P: S::=0|1|0B|1A A::=0|0S 或者 B::=0|0S|1A
S::=0|1|0S|1A A::=0|0S
第二次作业:
P38 1、3、5、7、8(1)(3)(5)、10、11(1)(2)、 12(1)(3)(5)、15
第1、3、5题 符号串集合的运算P19 第7题 文法的形式定义 P22 第8题 句型、句子的定义 P23 第10、11题 语言的形式定义,从文法->语言 P24 第12题 语言->文法 P25 第15题 推导语法树、句型短语、简单短语,句柄的概念 P26、P27
A B
a b B a a
2)句型baabaab的短语a, ba, baa, baab, baabaab,简单短语a,句柄 a 3)短语bB, AB, ABb,简单短语bB, AB,句柄bB
第三次作业:
P40 18、19(1)(3)、21、23、24、26、27、29
第18题、第19题 文法二义性的证明 P29 第21题 句子关于文法的最左、最右推导P22P27 第23题 初步语法分析(分析句子)P31、P32 第24题 四种文法的判别P34-P35 第26题 第27题 语言->文法 第29题 文法的其他表示法(扩充的BNF)P36、P37
文法的其他表示法(扩充的BNF)P36、P37
P42 29. 用扩充的BNF表示以下文法规则: Z::=AB|AC|A A::=BC|BCD|AXZ|AXY S::=aABb|ab A::=Aab|ε 解: 1.Z::=A(B|C|ε)::=A[B|C] 2.A::=BC(ε|D)|{X(Z|Y)}::= BC[D]|{X(Z|Y)} 3.A::=a((AB|ε)b) ::= a[AB]b 4.A::={ab|ε}::={ab}
P39 12、试分别构造产生下列语言的文法: (1){ abna | n=0,1,2,3……} (3){ aban | n≥1} (5){ anbmcp | n,m,p≥0}
语言->文法 P25
(1)G={VN,VT,P,S},VN={S,A },VT={a,b}, P:S∷=aAa A∷=bA |ε (3)G={VN,VT,P,S},VN={S,A },VT={a,b}, P:S∷=abA A∷=aA | a (5)G={VN,VT,P,S},VN={S,A ,B,C}, VT={a,b,c}, P:S∷=ABC A∷=aA |ε B∷=bB |ε C∷=cC |ε
P38 7、设有文法G[S]: S∷=A A∷=B | IF A THEN A ELSE A B∷=C | B+C | +C C∷=D | C*D | *D D∷=X | (A) | -D 试写出VN和VT。
文法的形式定义 P22
VN={S,A,B,C,D} VT={IF,THEN,ELSE,+,*,X,(,),-}
初步语法分析(分析句子)P31、P32 P41 23. 设有文法如下: 自顶向下-推导 <目标>::=V1 自底向上-规约 V1::=V2|V1iV2 V2::=V3|V2+V3|iV3 V3::=)V1*|( 试分析句子(, )(*, i(, (+(, (+(i(, (+)(i(*i(。
解 <目标>=> V1=>V2=>V3=>( <目标>=> V1=>V2=>V3=>)V1*=>)V2*=>)V3*=>)(* <目标>=> V1=>V2=>iV3=>i( <目标>=> V1=>V2=>V2+V3=>V3+V3=>(+V3=>(+( <目标>=> V1=>V1iV2=> V1iV3=> V1i(=>V2i(=>V2+V3i( =>V2+( i(=>V3+( i(=>(+(i( <目标>=> V1=>V1iV2=> V2iV2=> V2+V3iV2=> V3+V3iV2 => (+V3iV2=>(+)V1*iV2=>(+) V1iV2*iV2=>(+) V2iV2*iV2 =>(+) V3iV2*iV2=>(+) (iV2*iV2=>(+) (iV2*iV2 =>(+) (iV3*iV2=>(+) (i(*iV2=>(+) (i(*iV3=>(+) (i(*i(
左线性文法 -> 状态转换图, 状态转换图 ->FA(DFA/NFA)
解一:将文法变换成符合规则的情况 解二:先画出该文法状态转换图:
NFA=({S,A,Z},{0,1},M,{S},{Z})
其中M: M(S,0)={A} M(S,1)=ø M(A,0)={A,Z} M(A,1)=ø M(Z,0)=ø M(Z,1)={A} 显然该文法的自动机是非确定的; 它相应的语言为:{0,1}上所有满足以00开头以0结尾 且每个1必有0直接跟在其后的字符串的集合
符号串集合的运算P19
P38 3、令A={0,1,2},写出集合A+和A*的七个最短符号串。 A+:0,1,2,00,01,02,10(有多种可能) A*:ε,0,1,2,00,01,02(有多种可能) P38 5、试证明:A+=A A*=A*A。 证明:A+=A1∪A2∪……∪An∪…… A*=A0(即{ε})∪A+ A A*=A(A0∪A+ )=A∪A+=A+=A+∪A =(A0∪A+ )A=A*A(证毕)
由状态图可知只有eefe是该文法的合法句子。
右线性文法 -> 状态转换图P48
P74 5. 设右线性文法G=({S, A, B}, {a, b}, S, P),其中P组成如下: S::=bA A::=bB A::=aA A::=b B::=a 画出该文法的状态转换图。
第五次作业:
P74 6、7、8、9、10
P38 1、设T1={11,010},T2={0,01,1001}, 计算:T2T1,T1*,T2+。 T2T1={011,0010,0111,01010,100111,1001010} T1*={ε,11,010,1111,11010,01011,010010……} T2+={0,01,1001,00,001,01001,010,0101……}
P74 状态转换图->正规文法(右线性) 7. 构造一个DFA,它接受{0,1}上所有满足下述条件的字符串, 其条件是:字符串中每个1都有0直接跟在右边,然后,再构造该 语言的正规文法。
0, 00,10 000,010,100 ……
具体字符串 -> 状态转换图
A
,1},M,S,{Z}) 0 Z 其中M: M(S,0)=Z M(S,1)= A M(A,0)=Z M(Z,0)=Z M(Z,1)=A 该语言的正规文法G[Z]为: 右线性文法://S::=0|1A|0Z 左线性文法: A::=0|0Z A::=1|Z1 Z::=0|1A|0Z Z::=0|A0|Z0
1)0、1 2)00 、01、10 3)000、001、010、100、101 4)0000、0001、0010、0100、0101、 1000、1001、1010 ……
S::=0|1 S::=0|1|0S|1A A::=0 S::=0|1|0S|1A A::=0|0S
P41 27. 给出一个产生下列语言 L(G)={W|W∈{a,b}* 且W中含a的个数是b个数两倍的前后文无关文法。 文法G=({S, A, B}, {a, b}, P, S) P: S::=AAB|ABA|BAA|ε A::=aS B::=bS 或者 S::=Saab|aSab|aaSb|aabS|Saba|aSba|abSa |abaS|Sbaa|bSaa|baSa|baaS|ε 或者 S::=aaSb|abSa|baSa|baa|aba|aab 解法: 1)ε S::= ε 2)aab, aba, baa S::=aab|aba|baa 3)aaaabb, aaabab, aaabba, aababa, aabbaa,bbaaaa…… S::=Saab|aSab|aaSb|aabS|Saba|aSba|abSa|abaS|Sbaa |bSaa|baSa|baaS| ε
P41 24. 下面文法那些是短语结构文法,上下文有关文法,上下文无 关文法,及正规文法? 1.S::=aB B::= cB B::=b C::=c 2.S::=aB B::=bC C::=c C::=ε 3.S::=aAb aA::=aB aA::=aaA B::=b A::=a 4.S::=aCd aC::=B aC::=aaA B::=b 5.S::=AB A::=a B::=bC B::=b C::=c 6. S::=AB A::=a B::=bC C::=c C::=ε 7. S::=aA S::= ε A::=aA A::=aB A::=a B::=b 8. S::=aA S::= ε A::=bAb A::=a 正规文法 1 上下文无关文法 2 5 6 7 8 上下文有关文法 3 短语结构文法 4
第4题 考察范围:左线性文法 -> 状态转换图P47 第5题 考察范围:右线性文法 -> 状态转换图P48
P74 左线性文法 -> 状态转换图P47 4. 画出下列文法的状态图: Z::=Be B::=Af A::=e|Ae 并使用该状态图检查下列句子是否该文法的合法句子:f, eeff, eefe。
第6题 左线性文法 -> 状态转换图, 状态转换图 ->FA(DFA/NFA) 第7题 具体字符串 -> 状态转换图 状态转换图->正规文法(右线性) 第8题 NFA->DFA 第9题 DFA->右线性文法 右线性文法->左线性文法 第10题 正规文法(右线性)->DFA
P74 6. 构造下述文法G[Z]的自动机,该自动机是确定的吗?它相应的语言是什么? Z::=A0 A::=A0|Z1|0
P38-39 8、设有文法G[S]: S∷=aAb A∷=BcA | B B∷=idt |ε 试问下列符号串(1)aidtcBcAb (3)ab (5)aidtcidtcidtb 是否为该文法的句型或句子。 S=>aAb=>aBcAb=>aidtcAb=>aidtcBcAb S=>aAb=>aBb=>ab S=>aAb=>aBcAb=>aidtcBcAb=>aidtcidtcBb=>aidtcidtcidtb
[ t] ε或 t { t} t不出现或出现任意多次 ( ) 提取因子
思考题:
语言L(G[S])={b2i+1 | i>=0}对应 的3型文法?
G={VN,VT,P,S},VN={S,A },VT ={b}, S∷= bbS |b ?? P:S∷= bA |b A∷= bS
第四次作业:
P74 2、4、5
推导语法树、句型短语、简单短语,句柄的 P39 15. 设文法G规则为: 概念 S::=AB P26、P27 B::=a|Sb A::=Aa|bB 对下列句型给出推导语法树,并求出其句型短语,简单短语和 句柄。 (2)baabaab (3)bBABb
S A A b B B aS b A b B S A B S B b
句型、句子的定义 P23
语言的形式定义,从文法->语言 P24
P39 10、给定文法: S∷=aB | bA A∷=aS | bAA | a B∷=bS | aBB | b
该文法所描述的语言是什么?
L(G)={相同个数的a与b以任意次序连接而成的非空符号串}。 P39 11、试分别描述下列文法所产生的语言(文法开始符号为S): 1)S∷=0S | 01 2)S∷=aaS | bc 3) S:: =aSd | aAd A:: =aAc | bc 1)L(G)={0n1| n≥1}; 2)L(G)={a2nbc | n≥0}; 3)L(G)={aibcjdk | i, j, k≥1, i=j+k-1}。
0
1
S
1
0
解法二
构造出正规表达式 (0 | 10)* 转换系统
四种文法的判别P34-P35
语言->文法
P41 26. 给出产生下列语言L(G)={W|W∈{0,1}+且W不含相邻1} 的正规文法。 G=({S, A, B}, {0, 1}, P, S) P: S::=0|1|0B|1A A::=0|0S 或者 B::=0|0S|1A
S::=0|1|0S|1A A::=0|0S