《编译原理》课后习题答案第二章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M:M(0,a)=1 M(0,b)=2
M(1,a)=1 M(1,b)=4
M(2,a)=1 M(2,b)=3
M(3,a)=3 M(3,b)=2
M(4,a)=0 M(4,b)=5
M(5,a)=5 M(5,b)=1
化简:
1.分化
① {0,1} {2,3,4,5}
② {0,1} {2,4} {3,5}
2.合并
M: M(A,0)=B
M(BBaidu Nhomakorabea0)=D M(B,1)=C
M(C,0)=A M(C,1)=F
M(D,0)=A M(D,1)=C
M(E,0)=D M(E,1)=C
M(F,0)=E M(F,1)=A
对于字符串0011011运行DFA D有:
M(A,0011011)
=M(M(A,0),011011)
=M(M(B,0),11011)
22 #E′T′)E+ +i)/i#
23 #E′T′)E i)/i# E∷=TE′
24 #E′T′) E′T i)/i# T∷=FT′
25 #E′T′) E′T′F i)/i#
26 #E′T′) E′T′ i)/i#
27 #E′T′) E′T′ )/i# T′∷=ε
28 #E′T′) E′ )/i# E′∷=ε
3.删除
没有无用状态和死状态,所以化简到此结束
状态最小化图:
9.(1)证明:e1|e2=e2|e1
|e1|e2|=|e1|∪|e2|=|e2|∪|e1|=|e2|e1| ∴e1|e2=e2|e1
(2)证明:(e1|e2)e3=e1e3|e2e3
|(e1|e2)e3|=|(e1|e2)||e3|=|e1|e2||e3|=(|e1|∪|e2|)|e3|=|e1||e3|∪|e2||e3|=|e1e3|∪|e2e3|=|e1e3|e2e3|
E+T*F*F+i E+T*F*i+i
短语:E+T是相对于E的短语;F是相对于T的短语;i是相对于F的短语;T*F是相对于T的短语;E+T+T是相对于E的短语;E+T+F是相对于E的短语;E+T+i是相对于E的短语;
E+T*F是相对于E的短语;E+T*F*F是相对于E的短语;E+T*F*i是相对于E的短语;
假设n=k时W *bk-1a2;
则当n=k+1时,W Aa *bb k-1aa(bka2)
综上,结论对一切n>=1成立,即W *bn-1a2
在上面的规纳证明中,利用文法的一切规则且仅用了文法中的规则,因此,该文法产生的语言L(G[W])={ bn-1a2|n=1,2…}
6.(1)Z::=aAd|aZd
由于最终归约到了识别符号Z,识别出符号串b(aa)b.是文法G5.2的句子.
所构造的推导是:
Z=>bMb=>b(Lb=>b(Ma)b=>b(aa)b
习题9
3.试为下列优先矩阵构造优先函数
(1)逐次加一法构造优先函数:
步骤一、置初始值
步骤二、关于优先关系 修改f与g的值成
步骤三、关于优先关系±修改f与g的值成,而此时构造过程已收敛,即优先函数值与优先关系完全一致,则该优先矩阵所对应的优先函数为:
R∷=deQ′caR′|bQ′caR′|daR′|deQ′fR′|bQ′fR′|ε
Step3: G′[S]:
S∷=Qc|Rd|c
Q∷=RdeQ′|ceQ′|RbQ′|bQ′
Q′∷=ceQ′|ε
R∷=ceQ′caR′|bQ′caR′|caR′|ceQ′fR′|bQ′fR′|aR′
R∷=deQ′caR′|bQ′caR′|daR′|deQ′fR′|bQ′fR′|ε
=M(M(D,1),1011)
=M(M(C,1),011)
=M(M(F,0),11)
=M(M(E,1),1)
=M(C,1)
=F
∴DFA D能接受字符串0011011
8.解:将状态转换图列表,即:
由左图可知,该状态转换图直接对应的是确定有穷状态自动机DFA
DFA D=({0,1,2,3,4,5},{a,b},M,0,{0,1})
最小化:
(2)由e构造转换系统:
去ε弧及无用状态和死状态:
因为现在只有一个状态,所以无需再最小化,此时就是最小化.
13.解:建立方程组如下:
W=Ua+Vb ①
U=Va+c ②
V=Ub+c ③
把③代入②得,U=(Ub+c)a+c
=Uba+ca+c
把它改写成U=(ca+c){ba},因此U=(ca|c){ba} ④
解:不能直接应用预测分析技术来实现其识别程序。
原因:该文法存在回溯性
消回溯:
E∷=TE′
E′∷=+E|-E|ε
T∷=FT′
T′∷=*T|/T|ε
F∷=(E)|i
first(E)={(,i}
first(E′)={+,-,ε}
first(T)={(,i}
first(T′)={*,/,ε}
first(F)={(,i}
P∷=begin S end S∷=A|C
A∷=V:=E C∷=if E then S
E∷=VE′ E′∷=+VE′|ε V∷=i
流程图如下:
8、设文法G[E]:
E∷=T+E|T-E|T
T∷=F*T|F/T|F
F∷=(E)|i
试问能否直接应用预测分析技术来实现其识别程序?简略说明原因。请设法为该文法构造预测分析表,给出构造过程,并识别输入符号串i*i-(i+i)/i是否该文法的句子。
E+T*F*i+i是相对于E的短语.
简单短语:E+T是相对于E的简单短语;F是相对于T的简单短语;i是相对于F的简单短语;T*F是相对于T的简单短语;
5.解:L(G[A])={bn-1a|n=1,2…}
L(G[W])={bn-1a2|n=1,2…}
证明:当n=1时,W Aa aa a2,显然结论成立;
长度不大于3的符号串个数:26+936+33696=34658个
有代表性的符号串:a,a0,aa,a00,a0a,aa0
习题2
3.(1)E T T/F F/F (E)/F (E+T)/F (T+T)/F (F+F)/F (i+i)/i
(2)E E+T E+T+T E+T*F+F E+T*F+i E+T*T*F+i
follow(E)={#,)}
follow(E′)={#,)}
follow(T)={#,),+,-}
follow(T′)={#,),+,-}
follow(F)={*,/,#,),+,-}
识别输入符号串i*i-(i+i)/i,则识别过程
步骤 栈 输入 输出
0 #E i*i-(i+i)/i# E∷=TE′
Q∷=Rb|Se|b
R∷=Sa|Qf|a
文法左递归与规则左递归。
解: step1:U1=S U2=Q U3=R
step2:i=1,j=1: j>i-1,不执行关于j的循环,且关于U1=S不存在规则左递归
i=2,j=1: U2=Q∷=(Qc|Rd|c)e|Rb|b
=Qce|Rde|ce|Rb|b
消去规则左递归:
∴(e1|e2)e3=e1e3|e2e3
10.证明:e=b|ae当且仅当e={a}b
证:
充分性:正则表达式e=b|ae的值是这样一个正则集,以无数个小a开头,后跟一个小b。即:e={a}b。
必要性:|{a}b|=|{a}||b|=|a|*|b|
∴e=b|ae当且仅当e={a}b
11.(1)
从e构造转换系统:
A::=bc|bAc
(2)Z::=AB
A::=ab|aAb
B::=b|Bb
7. 解:题中要求文法是:
Z::=1|3|5|7|9|Z1|Z3|Z5|Z7|Z9|A1|A3|A5|A7|A9
A::=2|4|6|8|A0|A2|A4|A6|A8|Z0|Z2|Z4|Z6|Z8
习题5
2. 最左推导:S (T) (T,S) (S,S) (a,S) (a,(T)) (a,(S)) (a,(b))
5.(1)方法一:自顶向下
最右推导:
Z A AiB AiC Ai( Bi( B+Ci( B+(i( C+(i( (+(i(
方法二:自底向上
最左归约:
Z A AiB AiC Ai( Bi( B+Ci( B+(i( C+(i( (+(i(
第三章
习题6
3.解:DFA D=({A,B,C,D,E,F},{0,1},M,A,{E,F})
此文法没有多余规则,所以消去左递归后的文法就是G′[S]
4、试为文法G[P]:
P∷=begin S end S∷=A|C
A∷=V:=E C∷=if E then S
E∷=V E∷=E+V V∷=i
采用某种程序设计语言构造递归下降识别程序。
解:由于文法存在左递归,进行文法等价变换,得到等价文法G′[P]:
第二章
习题1
6.答:省略表示法:{1.3,1.33,1.333…};描述表示法:{1.3i|i=1,2,3…}
7.答:x+={0,12,123,1234…};
x*={ ,0,12,123…}
8.答:长度为0的符号串个数:0个
长度为1的符号串个数:26个
长度为2的符号串个数:26*36=936个
长度为3的符号串个数:26*36*36=33696个
8 #E′T′ i-(i+i)/i#
9 #E′T′ -(i+i)/i# T′∷=ε
10 #E′ -(i+i)/i# E′∷=-E
11 #E- -(i+i)/i#
12 #E (i+i)/i# E∷=TE′
13 #E′T (i+i)/i# T∷=FT′
14 #E′T′F (i+i)/i# F∷=(E)
15 #E′T′)E( (i+i)/i#
习题8
2.为文法G[S]:
S∷=a|b|(R) R∷=T T∷=S,T|S
构造简单优先矩阵。
解: S1=S S2=a S3=b S4=( S5=R S6=) S7=T S8=,
最终得到的简单优先矩阵为:
3.利用图5-4中的简单优先矩阵,识别文法G5.2的句子b(aa)b.
步骤 句型 句柄 归约为 所构造的直接推导
去ε弧及无用状态和死状态:
由状态转换图构造NFA:
NFA A=({S,A,B,C,D,F,Z},{0,1},M,{S},{Z})
M:
由NFA产生DFA:
分化:①{[S],[C],[A],[AD],[AF],[ABF]} {[AFZ]}
②{[S]} {[C]} {[A],[AF],[ABF]} {[AD]} {[AFZ]}
(2)Bell有向图法 (非形式化)
步骤一、构造有向图
步骤二、对各结点所能达到的结点个数计数,最终可列表:
步骤三、检查可得f与g的值与原有的优先矩阵一致,所以上表函数即为所求优先函数
Q∷=RdeQ′|ceQ′|RbQ′|bQ′
Q′∷=ceQ′|ε
i=3,j=1:U3=R∷=Qca|Rda|ca|Qf|a
j=2:R∷=RdeQ′ca|ceQ′ca|RbQ′ca|bQ′ca|Rda|ca|RdeQ′f|cf|
RbQ′f|bQ′f|a
消去规则左递归:
R∷=ceQ′caR′|bQ′caR′|caR′|ceQ′fR′|bQ′fR′|aR′
最右推导:S (T) (T,S) (T,(T)) (T,(S)) (T,(b)) (S,(b)) (a,(b))
最右推导是规范分析,最右推导每一步的句柄是:
①(;②T;③(;④S;⑤b;⑥S;⑦a
4.(2)证明:
从上面两个语法树中可得出对于文法G[S]:S::=iScS|iS|i的句子iiici有两个不同的语法树 ,故得出该文法是二义性的.
16 #E′T′)E i+i)/i# E∷=TE′
17 #E′T′) E′T i+i)/i# T∷=FT′
18 #E′T′) E′T′F i+i)/i#
19 #E′T′) E′T′ i+i)/i#
20 #E′T′) E′T′ +i)/i# T′∷=ε
21 #E′T′) E′ +i)/i# E′∷=+E
1 #E′T i*i-(i+i)/i# T∷=FT′
2 #E′T′F i*i-(i+i)/i#
3 #E′T′ i*i-(i+i)/i#
4 #E′T′ *i-(i+i)/i# T′∷=*T
5 #E′T* *i-(i+i)/i#
6 #E′T i-(i+i)/i# T∷=FT′
7 #E′T′F i-(i+i)/i#
把②代入③得,V=(Va+c)b+c
=Vab+cb+c
把它改写成V=(cb+c){ab},因此V=(cb|c){ab} ⑤
把④⑤代入①得,W=Ua+Vb=(ca|c){ba}a+(cb|c){ab}b
因此 W=(ca|c){ba}a|(cb|c){ab}b
第四章
6、试消去文法G[S]:
S∷=Qc|Rd|c
29 #E′T′) )/i#
30 #E′T′ /i# T′∷=/T
31 #E′T/ /i#
32 #E′T i# T∷=FT′
33 #E′T′F i#
34 #E′T′ i#
35 #E′T′ # T′∷=ε
36 #E′ # E′∷=ε
37 # #
因此识别出i*i-(i+i)/i是文法G[E]的句子
第五章
相关文档
最新文档