南邮《编译原理》习题解答.doc_第1页
南邮《编译原理》习题解答.doc_第2页
南邮《编译原理》习题解答.doc_第3页
南邮《编译原理》习题解答.doc_第4页
南邮《编译原理》习题解答.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理习题解答:第一次作业:P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为目标程序或目标代码;将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;编译程序是将高级语言写的源程序翻译成目标语言的程序。关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。P14 3、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。具体功能见P7-9。P14 4、语法分析和语义分析有什么不同?试举例说明。答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量 x:= y 符合语法规则就通过。语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。补充:为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。第二次作业:P38 1、设T111,010,T20,01,1001,计算:T2T1,T1*,T2+。T2T1011,0010,0111,01010,100111,1001010T1*,11,010,1111,11010,01011,010010T2+0,01,1001,00,001,01001,010,0101P38-39 8、设有文法GS:SaAbABcA | BBidt | 试问下列符号串(1)aidtcBcAb (2)aidtccb(4)abidt是否为该文法的句型或句子。(1)SaAbaBcAbaidtcAbaidtcBcAb 句型但不是句子;(2)SaAbaBcAbaidtcAbaidtcBcAbaidtccAbaidtccBbaidtccb;是句型也是句子;(4)该文法的句子或句型的最后一个字符串一定是字符“b”;第三次作业:P39 11、试分别描述下列文法所产生的语言(文法开始符号为S):(1) S0S | 01(2) SaaS | bc(1) L(G)0n1| n1; 解题思路:将文法转换为正规表达式(2) L(G)a2nbc | n0。P39 12、试分别构造产生下列语言的文法: (1) abna | n=0,1,2,3 (3) aban | n1 (5) anbmcp | n,m,p0(1)GVN,VT,P,S,VNS,A ,VTa,b,P:SaAaAbA |(3)GVN,VT,P,S,VNS,A ,VTa,b,P:SabA AaA | a(5)GVN,VT,P,S,VNS,A ,B,C,VTa,b,c,P:SABCAaA |BbB |CcC | GVN,VT,P,S,VNS,VTa,b,c,P:SaS | bS | cS |P39 15. 设文法G规则为:S:=ABB:=a|SbA:=Aa|bB对下列句型给出推导语法树,并求出其句型短语,简单短语和句柄。(2)baabaab (3)bBABb解(2) S A B A a S b b B A B a b B a a句型baabaab的短语a, ba, baa, baab, baabaab,简单短语a,句柄 a S(3) A B b B S b A B 短语bB, AB, ABb,bBABb 简单短语bB, AB, 句柄bB第四次作业P41 24. 下面文法那些是短语结构文法,上下文有关文法,上下文无关文法,及正规文法?1.S:=aB B:= cB B:=b C:=c2.S:=aB B:=bC C:=c C:=3.S:=aAb aA:=aB aA:=aaA B:=b A:=a4.S:=aCd aC:=B aC:=aaA B:=b5.S:=AB A:=a B:=bC B:=b C:=c6. S:=AB A:=a B:=bC C:=c C:=7. S:=aA S:= A:=aA A:=aB A:=a B:=b8. S:=aA S:= A:=bAb A:=a短语结构文法(0) 4上下文有关文法(1) 3 上下文无关文法(2) 5 6 8 或者 2 5 6 7 8正规文法(3) 1 2 7 或者 1P42 29. 用扩充的BNF表示以下文法规则:1 Z:=AB|AC|A2 A:=BC|BCD|AXZ|AXY3 S:=aABb|ab4 A:=Aab|解:1Z:=A(B|C|):=AB|C2A:=BC(|D)|X(Z|Y):= BCD|X(Z|Y)3A:=a(AB|)b) := aABb4A:=ab|:=ab第五次作业:P74 4. 画出下列文法的状态图:Z:=Be B:=Af A:=e|Ae 并使用该状态图检查下列句子是否该文法的合法句子:f, eeff, eefe。由状态图可知只有eefe是该文法的合法句子。P74 5. 设右线性文法G=(S, A, B, a, b, S, P),其中P组成如下:S:=bA A:=bB A:=aA A:=b B:=a画出该文法的状态转换图。P74 6. 构造下述文法GZ的自动机,该自动机是确定的吗?它相应的语言是什么? Z:=A0 A:=A0|Z1|0 解1:将左线性文法转换为右线性文法,由于在规则中出现了识别符号出现在规则右部的情形,因此不能直接使用书上的左右线性文法对应规则,可以引入非终结符号B,将左线性文法变为Z:=A0 A:=A0|B1|0 B:=A0,具体为: A := Z1 A := B1 A := A01 Z := A0 B := A0 将所得的新左线性文法转换成右线性文法:此时利用书上规则,其对应的右线性文法为:A:=0A|0B|0 Z:=0A B:=1A解2:先画出该文法状态转换图: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直接跟在其后的字符串的集合;那么如何构造其相应的有穷自动机呢?SZ001A0ZS 先构造其转换系统:根据其转换系统可得状态转换集、状态子集转换矩阵如下表所示:II0I1S0 1S, SA0 1 AA, Z, Z1 2 A, Z, ZA, Z, ZA2 2 11201000则其相应的DFA为:P74 8. 设 (NFA) M = ( A, B, a, b, M, A, B ),其中M定义如下:M (A, a) = A, B M (A, b) = B M (B, a) = M (B, b) = A, B请构造相应确定有穷自动机(DFA) M。解:构造一个如下的自动机(DFA) M, (DFA) M=K, a, b, M, S, ZK的元素是A B A, B由于M(A, a)=A, B,故有M(A, a)=A, B同样 M(A,b)=BM(B,a)= M(B,b)=A,B由于M(A,B,a)= M(A,a)U M(B,a)= A,BU = A,B故 M(A,B,a)= A,B由于M(A,B,b)= M(A,b)U M(B,b)=BU A,B = A,B故 M(A,B,b)= A,BS=A,终态集Z=A,B,B重新定义:令0=A 1=B 2=A, B,则DFA如下所示:可以进一步化简,把M的状态分成终态组1,2和非终态组0由于1,2a=1,2b=21,2,不能再划分。至此,整个划分含有两组1,20令状态1代表1,2,化简如图:第六次作业:P74 11(1)(0 | 11*0)*解:先构造该正规式的转换系统:SZ(0 | 11*0)*SZ10213104SZ1011*0由上述转换系统可得状态转换集K=S, 1, 2, 3, 4, Z,状态子集转换矩阵如下表所示:II0I1K0 1S, 1, Z1, Z2, 3, 40 1 21, Z1, Z2, 3, 41 1 22, 3, 41, Z3, 42 1 33, 41, Z3, 43 1 3由状态子集转换矩阵可知,状态0和1是等价的,而状态2和3是等价的,因此,合并等价状态之后只剩下2个状态,也即是最少状态的DFA。10010111113010 010112P74 12. 将图3.24非确定有穷自动机NFA确定化和最少化。10aa, ba图3.24 NFA状态转换图解:设(DFA)M = K, VT, M, S, Z,其中,K=0, 0, 1, 1,VT =a, b,M:M (1, a) =0 M (1, b) = M (0, 1, a) =0, 1 M (0, 1, b) =1M (0, a) =0, 1 M (0, b) =1S=1,Z=0, 0, 110abaa2b令0, 1=2,则其相应的状态转换图为:现在对该DFA进行化简,先把状态分为两组:终态组 0, 2 和非终态组 1,易于发现 0, 2不可以继续划分,因此化简后的状态转换图如下:ab1a0, 2P74 18. 根据下面正规文法构造等价的正规表达式:S:=cC | a A:=cA | aB B:=aB | c C:=aS | aA | bB | cC | a 解:由式可得 B= aB + c B=a*c 由式可得 A= cA + aB A= c*aa*c 由式可得 S= cC + a 由式可得 C= aS + aA + bB + cC + a C= c*( aS + aA + bB + a) C= c*( aS + ac*aa*c + ba*c + a) S= cc*( aS + ac*aa*c + ba*c + a) + a = cc*aS+ cc*( ac*aa*c + ba*c + a) + a = (cc*a)*( cc*( ac*aa*c + ba*c + a) + a) = (cc*a)*( cc*( ac*aa*c | ba*c | a) | a) 另一种答案是S= c(ac | c)*( ac*aa*c | ba*c | aa | a) | a第七次作业:P142 1. 试分别消除下列文法的直接左递归(采用两种方法重复法和改写法)(1)GE:E:=T | EAT T:=F | TMF F:=(E) | i A:=+ | - M:=* | / 解:先采用“重复法”: 再采用“改写法”:E:=TAT E:=TET:=FMF E:= ATE | F:=(E) | i T:=FTA:=+ | - T:=MFT | M:=* | / F:=(E) | i A:=+ | - M:=* | /P142 2. 试分别消除下列文法的间接左递归(2)GZ:Z:=AZ | b A:=Z A | a 解:将式代入式可得,Z:=ZAZ | aZ | b 消除左递归后得到: Z:=(aZ | b)Z Z:=AZZ | A:=ZA | aP143 5. 对下面的文法GE: E:=TE E:=+E | T:=FTT:=T | F:=PFF:=*F | P(E) |a |b |(1)计算这个文法的每个非终结符号的FIRST和FOLLOW;(2)证明这个文法是LL(1)文法;(3)构造它的LL(1)分析表并分析符号串a*b+b;解:(1)构造FIRST集:FIRST(E)=+, FIRST(F)=*, FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P) = (,a,b,FIRST(T)= (,a,b, ,构造FOLLOW 集:规则一FOLLOW(E) FOLLOW(E)=#规则二)FOLLOW(E) FOLLOE(E)= ),#FIRST(E)-FOLLOW(T) FOLLOW(T)=+FIRST(T)-FOLLOW(F) FOLLOW(F)= (,a,b,FIRST(F)-FOLLOW(P) FOLLOW(P)=*规则三FOLLOW(E)FOLLOW(E) FOLLOW(E)=#,)FOLLOW(E)FOLLOW(T) FOLLOW(T)=,)FOLLOW(T)FOLLOW(T) FOLLOW(T)= ,)FOLLOW(T)FOLLOW(F) FOLLOW(F)= (,),a,b,FOLLOW(F)FOLLOW(F) FOLLOW(F)= (,),a,b,FOLLOW(F)FOLLOW(P) FOLLOW(P)= (,),a,b,,*最后结果为:FIRST(E)=+, FIRST(F)=*, FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P) = (,a,b,FIRST(T)= (,a,b, ,)FOLLOE(E)= ), FOLLOW(E)=,)FOLLOW(T)=,)FOLLOW(T)= ,)FOLLOW(F)= (,),a,b,FOLLOW(F)= (,),a,b,FOLLOW(P)= (,),a,b,,*(2)证明该文法是LL(1)文法:证明:对于规则E:=+E |,T:=T |,F:=*F | (仅有一边能推出空串)有FIRST(+E)=+FIRST()= ,FIRST(T)=(, a, b, FIRST()= FIRST(*F)=*FIRST()= ,FIRST(+E)=+FOLLOW(E)= #, )= FIRST(T)=(, a, b, FOLLOW(T)= +, #, )=FIRST(*F)=*FOLLOW(F)= (,),a,b,=所以该文法是LL(1)文法。(3)构造文法分析表ab+*()#EETEETEETEETEEE+EEETTFTTFTTFTTFTTT TT TT T TT T TT FFPFFPFFPFFPFFF F F F*FF F F F PP aP bP (E)P 下面分析符号串a*b+b步骤 分析栈 余留输入串 所用的产生式1 #E a*b+b# ETE2 #ET a*b+b# TFT3 #ETF a*b+b# FPF4 #ETFP a*b+b# P a5 #ETFa a*b+b# 6 # ETF *b+b# F*F7 # ETF* *b+b#8 # ETF b+b# F 9 # ET b+b# T T10 # ET b+b# TFT11 # ETF b+b# FPF12 # ETFP b+b# P b13 #ETFb b+b#14 #ETF +b# F 15 #ET +b# T 16 #E +b# E+E17 #E+ +b# 18 #E b# ETE19 #ET b# TFT20 #ETF b# FPF21 # ETFP b# P b22 # ETFb b# 23 # ETF # F 24 # ET # T 25 #E # E26 # # 成功所以符号串a*b+b是该文法的句子;P144 6. 对下列文法,构造相应的FIRST和FOLLOW:(1)SaAdABCBb |Cc |(2)ABCc | gDBB| bCDECDaB | caD| dD EgAf | c解:(1)构造FIRST集FIRST(S)=aFIRST(B)=b,FIRST(C)=c,FIRST(A)=b,c,构造FOLLOW集规则一FOLLOW(S) FOLLOW(S)=#规则二dFOLLOW(A) FOLLOE(A)=dFIRST(C)- FOLLOW(B) FOLLOW(B)=c规则三FOLLOW(A)FOLLOW(B) FOLLOW(B)=d,cFOLLOW(A)FOLLOW(C) FOLLOW(C)=d最后结果为:FIRST(S)=a FIRST(A)=b,c,FIRST(B)=b,FIRST(C)=c,FOLLOW(S)=#FOLLOW(A)=dFOLLOW(B)=d,cFOLLOW(C)=d(2)构造FIRST集规则二FIRST(A)=g,FIRST(B)=b,,FIRST(C)= c, FIRST(D)=d,,FIRST(E)= g,c .规则三FIRST(A)=g,b,c,FIRST(C)=a,c,d,FIRST(A)= a,b,c,d,g.构造FOLLOW集规则一FOLLOW(A) FOLLOW(A)=#规则二fFOLLOW(A) FOLLOE(A)= f, cFOLLOW(C) FOLLOE(C)= c aFOLLOW(D) FOLLOE(D)= a FIRST(Cc)- FOLLOW(B) FOLLOW(B)=c,d,aFIRST(B)- FOLLOW(D) FOLLOW(D)=b,aFIRST(DE)- FOLLOW(C) FOLLOW(C)=d,g,cFIRST(E) FOLLOW(D) FOLLOW(D)=b,c,a,g规则三FOLLOW(A)FOLLOW(B) FOLLOW(B)=a,c,d,f,#FOLLOW(A)FOLLOW(D) FOLLOW(D)=a,b,c, f,g,FOLLOW(B)FOLLOW(E) FOLLOW(E)= a,c,d,f,#FOLLOW(C)FOLLOW(B) FOLLOW(B)= a,c,d,g,f,#FOLLOW(B)FOLLOW(E) FOLLOW(E)= a,c,d,g,f,#最后结果为:FIRST(A)= a,b,c,d,g, FIRST(B)=b,,FIRST(C)=a,c,d,FIRST(D)=d,,FIRST(E)= g,c ,FOLLOE(A)= f, FOLLOW(B)= a,c,d,g,f,#,FOLLOW(C)=d,g,c,FOLLOW(D)=a,b,c, f,g,,FOLLOW(E)= a,c,d,g,f,#.P144 9. 设已给文法GS:SSaB | bBASaBAc(1)将此文法改写为LL(1)文法(4)构造LL(1)分析表解:此题消除左递归之后,构造LL(1)分析表存在“多重入口”问题,故采用以下方法:(1)改写为LL(1)文法:SbBaBASaBAc(4)FIRST(S)= b , FIRST(A)=b,FIRST(B)=b,FOLLOE(S)=a,,FOLLOW(A)= c,FOLLOW(B)=a,.abc#SSbBaBAASaBBAcP144 10. 证明下述文法不是简单优先文法:(1) SbEbEE+T | T(2) SbEbEF | F+T | T | iTi | (E)证明:(1)画语法树: S b E b E + T可以得出b=E和bE,因此该文法不是简单优先文法。(2)因该文法中含E=iT=i右部两个产生式相同,故该文法不是简单优先文法.P145 11. 构造下述文法的优先关系矩阵,它们是简单优先文法吗? SM | UMiEtMeM | aUiEtS | iEtMeUEb解: S M U E i t e a b S M U E i t e a b S 0 0 0 0 0 0 0 0 0 S 0 1 1 0 0 0 0 0 0 M 0 0 0 0 0 0 1 0 0 M 0 0 0 0 1 0 0 1 0BLB U 0 0 0 0 0 0 0 0 0 U 0 0 0 0 1 0 0 0 0 = E 0 0 0 0 0 1 0 0 0 = E 0 0 0 0 0 0 0 0 1 i 0 0 0 1 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 t 1 1 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 e 0 1 1 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 S M U E i t e a b S M U E i t e a b S 0 0 0 0 0 0 0 0 0 S 0 1 1 0 1 0 0 1 0 M 0 0 0 0 0 0 1 0 0 M 0 0 0 0 1 0 0 1 0BL2BL+ U 0 0 0 0 0 0 0 0 0 U 0 0 0 0 1 0 0 0 0 = E 0 0 0 0 0 1 0 0 0 = E 0 0 0 0 0 0 0 0 1 i 0 0 0 1 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 t 1 1 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 e 0 1 1 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0BL+BB = S M U E i t e a b S M U E i t e a b S 0 0 0 0 0 0 0 0 0 S 0 1 1 0 0 0 0 0 0 M 0 0 0 0 0 0 0 0 0 M 0 1 0 0 0 0 0 1 0BBR U 0 0 0 0 0 0 0 0 0 U 1 0 1 0 0 0 0 0 0 = E 0 0 0 0 0 0 0 0 0 = E 0 0 0 0 0 0 0 0 1 i 0 0 0 0 0 0 0 0 1 i 0 0 0 0 0 0 0 0 0 t 0 1 1 0 1 0 0 1 0 t 0 0 0 0 0 0 0 0 0 e 0 0 0 0 1 0 0 1 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 S M U E i t e a b S M U E i t e a b S 1 1 1 0 0 0 0 1 0 S 1 1 1 0 0 0 0 1 0 M 0 1 0 0 0 0 0 1 0 M 0 1 0 0 0 0 0 1 0B R3BR2 U 1 1 1 0 0 0 0 0 0 U 1 1 1 0 0 0 0 1 0 = E 0 0 0 0 0 0 0 0 0 = E 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 S M U E i t e a b S M U E i t e a b S 1 1 1 0 0 0 0 1 0 S 1 0 1 0 0 0 0 0 0 M 0 1 0 0 0 0 0 1 0 M 1 1 1 0 0 0 0 0 0B (R+)TBR+ U 1 1 1 0 0 0 0 1 0 U 1 0 1 0 0 0 0 0 0 = E 0 0 0 0 0 0 0 0 1 = E 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 t 0 0 0 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 a 1 1 1 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 b 0 0 0 1 0 0 0 0 0 S M U E i t e a b S M U E i t e a b S 1 1 1 0 1 0 0 1 0 S 0 0 0 0 0 0 0 0 0 BB (R+)T M 0 1 0 0 1 0 0 1 0 M 0 0 0 0 0 0 1 0 0 BL* U 0 0 1 0 1 0 0 0 0 = U 0 0 0 0 0 0 0 0 0 = E 0 0 0 1 0 0 0 0 1 E 0 0 0 0 0 0 0 0 0 i 0 0 0 0 1 0 0 0 0 i 0 0 0 0 0 0 0 0 0 t 0 0 0 0 0 1 0 0 0 t 0 0 0 0 0 0 0 0 0 e 0 0 0 0 0 0 1 0 0 e 0 0 0 0 0 0 0 0 0 a 0 0 0 0 0 0 0 1 0 a 0 0 0 0 0 0 1 0 0 b 0 0 0 0 0 0 0 0 1 b 0 0 0 0 0 1 0 0 0 S M U E i t e a b S M U E i t e a b S 0 0 0 0 0 0 0 0 0 S 1 1 1 0 1 0 0 1 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论