欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    王汝传编译原理习题答案.docx

    • 资源ID:3649796       资源大小:54.45KB        全文页数:59页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    王汝传编译原理习题答案.docx

    王汝传编译原理习题答案编译原理习题答案: 第一次: P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系? 答:被翻译的程序称为源程序; 翻译出来的程序称为目标程序或目标代码; 将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序; 把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序; 解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行; 编译程序是将高级语言写的源程序翻译成目标语言的程序。 关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。 P14 3、编译程序是由哪些部分组成?试述各部分的功能? 答:编译程序主要由8个部分组成:词法分析程序;语法分析程序;语义分析程序;中间代码生成;代码优化程序;目标代码生成程序;错误检查和处理程序;信息表管理程序。具体功能见P7-9。 P14 4、语法分析和语义分析有什么不同?试举例说明。 答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量 x:= y 符合语法规则就通过。语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。 P15 5、编译程序分遍由哪些因素决定? 答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。 补充: 1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的? 答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。 补充: 2、赋值语句: A:= 5 * C的语法和语义指的是什么? 答:语法分析将检查该语句是否符合赋值语句规则,语义是指将 5 * C 的结果赋值为 A 。 第二次作业: P38 1、设T111,010,T20,01,1001,计算:T2T1,T1*,T2+。 T2T1011,0010,0111,01010,100111,1001010 T1*,11,010,1111,11010,01011,010010 T2+0,01,1001,00,001,01001,010,0101 P38 3、令A0,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+A1A2An A*A0A+ A A*AAA+A+A+AAA*A P38 7、设有文法GS: SA AB | IF A THEN A ELSE A BC | B+C | +C CD | C*D | *D DX | (A) | -D 试写出VN和VT。 VNS,A,B,C,D VTIF,THEN,ELSE,+,*,X,(,),- P38-39 8、设有文法GS: SaAb ABcA | B Bidt | 试问下列符号串aidtcBcAb ab aidtcidtcidtb 是否为该文法的句型或句子。 SÞaAbÞaBcAbÞaidtcAbÞaidtcBcAb 句型但不是句子; SÞaAbÞaBbÞabÞab 是句型也是句子; SÞaAbÞaBcAbÞaidtcAbÞaidtcBcAbÞaidtcidtcBbÞaidtcidtcidtb句型也是句子。 P39 10、给定文法: SaB | bA AaS | bAA | a BbS | aBB|b 该文法所描述的语言是什么? L(G)相同个数的a与b以任意次序连接而成的非空符号串。 P39 11、试分别描述下列文法所产生的语言: S0S | 01 SaaS | bc L(G)0n1| n1; L(G)a2nbc | n0。 P39 12、试分别构造产生下列语言的文法: abna | n=0,1,2,3 aban | n1 anbmcp | n,m,p0 GVN,VT,P,S,VNS,A ,VTa,b, P:SaAa AbA | GVN,VT,P,S,VNS,A ,VTa,b, P:SabA AaA | 或 AaA | a GVN,VT,P,S,VNS,A ,B,C,VTa,b,c, P:SABC AaA | BbB | CcC | GVN,VT,P,S,VNS,T,C,VTa,b,c, P:STC TaTb | CcC | GVN,VT,P,S,VNS ,VTa,b,c, P:SaS | bS | cS | 第三次作业: P39 15. 设文法G规则为: S:=AB B:=a|Sb A:=Aa|bB 对下列句型给出推导语法树,并求出其句型短语,简单短语和句柄。 baabaab (3)bBABb S A B A a S b b B A B a b B a a 句型baabaab的短语a, ba, baa, baab,简单短语a,句柄 a S A B b B S b A B 短语bB, AB, ABb, 简单短语bB, AB, 句柄bB P40 18. 分别对i+i*i 和i+i+i中每一个句子构造两棵语法树,从而证明下述文法G<表达式>是二义的。 <表达式>:=i|(<表达式>)|<表达式><运算符><表达式> <运算符>:=+|-|*|/ 1 i+i*i <表达式> <表达式> <运算符> <表达式> i + <表达式> <运算符> <表达式> i * i <表达式> <表达式> <运算符> <表达式> <表达式> <运算符> <表达式> * i i + i 由于句子i+i*i可构造两棵不同的语法树,所以证明该文法是二义的。 2. i+i+i <表达式> <表达式> <运算符> <表达式> i + <表达式> <运算符> <表达式> i + i <表达式> <表达式> <运算符> <表达式> <表达式> <运算符> <表达式> + i i + i 由于句子i+i+i可构造两棵不同的语法树,所以证明该文法是二义的。 P40 19. 证明下述文法是二义的 1) S:=iSeS|iS|i 3) S:=A|B A:=aCbA|a B:=BCC|a C:=ba 1) 对于句子iiieii可构造两棵不同的语法树,所以证明该文法是二义的。 S i S e S i S i S i i S i S i S e S i i S i 2) 对于句子ababa可构造两棵不同的语法树,所以证明该文法是二义的。 S A a C b A b a a S B B C C a b a b a P41 21. 令文法N:=D|ND D:=0|1|2|3|4|5|6|7|8|9 给出句子0127,34,568最左推导和最右推导。 解:0127的最左推导N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 0127的最右推导N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 34的最左推导N=>ND=>DD=>3D=>34 34的最右推导N=>ND=>N4=>D4=>34 568的最左推导N=>ND=>NDD=>DDD=>5DD=>56D=>568 568的最右推导N=>ND=>N8=>ND8=>N68=>D68=>568 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( 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 P41 26. 给出产生下列语言L=W|W0,1+且W不含相邻1的正规文法。 G=(S, A, B, 0, 1, P, S) P: S:=0|1|0B|1A A:=0|0S B:=0|1 P41 27. 给出一个产生下列语言 LW|Wa,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| P42 29. 用扩充的BNF表示以下文法规则: 1 2 3 4 解: Z:=AB|AC|A A:=BC|BCD|AXZ|AXY S:=aABa|ab A:=Aab| 1Z:=A:=AB|C 2A:=BC|X:= BCD|X 3A:=a(AB|)b) := aABb 4A:=ab|:=ab 第四次作业: P74 2. 什么叫超前搜索?扫描缓冲区的作用是什么? 词法分析程序在识别单词的时候,为进一步判明情况,确定下一步要做什么,一般采用超前读字符的方法,称超前搜索,扫描缓冲区的作用是为了识别单词符号。 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 解:先画出该文法状态转换图: NFA= 其中M: M=A M=ø M=A,Z M=ø M=ø M=A 显然该文法的自动机是非确定的;它相应的语言为:0,1上所有满足以00开头以0 结尾且每个1必有0直接跟在其后的字符串的集合;那么如何构造其相应的有穷自动机呢? 先构造其转换系统: 0 S 0 0 S A Z Z 1 根据其转换系统可得状态转换集、状态子集转换矩阵如下表所示: I S, S A A, Z, Z I0 A A, Z, Z A, Z, Z I1 A S 0 1 2 0 1 1 2 2 1 则其相应的DFA为: 0 1 0 0 1 2 P74 7. 构造一个DFA,它接受0,1上所有满足下述条件的字符串,其条件是:字符串中0 每个1都有0直接跟在右边,然后,再构造该语言的正规文法。 解:DFA= 其中M: M=Z M= A M=Z M=Z M=A 该语言的正规文法GZ为: 右线性文法:/S:=0|1A|0Z 左线性文法:/S:=0|A0|Z0 A:=0|0Z A:=1|Z1 Z:=0|1A|0Z Z:=0|A0|Z0 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, Z S的元素是A B A, B 由于M=A, B,故有M=A, B 同样 M=B M= ø M=A,B 由于M= MU M= A,BU ø= A,B 故 M= A,B 由于M= MU M=BU A,B = A,B 故 M= A,B S=A,终态集Z=A,B,B 重新定义:令0=A 1=B 2=A, B,则DFA如下所示: 可以进一步化简,把M的状态分成终态组1,2和非终态组0 由于1,2a=1,2b=2Ì1,2,不能再划分。至此,整个划分含有两组1,20 令状态1代表1,2,化简如图: P74 9. 设有穷自动机M = (S, A, E, a, b, c, M, S, E),其中M定义为 M (S, c) = A M (A, b) = A M (A, a) = E 请构造一个左线性文法。 解:先求右线性文法 ScA AbA Aa | aE 其左线性文法G= VN=A, S VT=a, b, c P: Ac AAb SAa P74 10. 已知正规文法G = (S, B, C, a, b, c, P, S),其中P内包含如下产生式: S:=aS | aB B:=bB | bC C:=cC | c 请构造一个等价的有穷自动机。 解:M=(S, B, C, T, a, b, c, M, S, T) M (S, a)=S M (S, a)=B M (S, b)=ø M (S, c)=ø M (B, a)=ø M (B, b)=B M (B, b)=C M (B, c)=ø M (C, a)=ø M (C, b)=ø M (C, c)=T M (C, c)=C 第六次作业: P74 11. 构造下列正规式相应的DFA: 1(0|1)*101 解:先构造该正规式的转换系统: 1(0|1)*101 Z S 1 (0|1)* 3 1 0 1 S 1 4 5 Z 0 1 1 0 1 1 2 3 4 5 Z S 1 由上述转换系统可得状态转换集K=S, 1, 2, 3, 4, 5, Z,状态子集转换矩阵如下表所示: I S 1, 2, 3 2, 3 2, 3, 4 2, 3, 5 2, 3, 4, Z I0 2, 3 2, 3 2, 3, 5 2, 3 2, 3, 5 I1 1, 2, 3 2, 3, 4 2, 3, 4 2, 3, 4 2, 3, 4, Z 2, 3, 4 S 0 1 2 3 4 5 0 1 1 2 3 2 3 4 3 2 5 4 3 其对应的DFA状态转换图为: 0 0 2 0 0 1 1 5 1 0 1 4 1 0 1 3 1 现在对该DFA进行化简,最终得到下列化简后的状态转换图: 0 0 1 1 0 1, 2 0 3 4 1 1 P74 12. 将图3.24非确定有穷自动机NFA确定化和最少化。 a a, b 1 0 1 0 5 a 图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) =1 M (0, a) =0, 1 M (0, b) =1 S=1,Z=0, 0, 1 令0, 1=2,则其相应的状态转换图为: b 1 0 a a 现在对该DFA进行化简,先把状态分为两组: b 2 终态组 0, 2 和非终态组 1,易于发现 0, 2 不可以继续划分,因此化简后的状态转换图如下: a a b 1 0, 2 a P74 13. 构造下列正规式的DFA: b(a|b)*bab 此题的与P74第11题基本一样,见上; P74 15. 用两种方法将(NFA) M = (X, Y, Z, 0, 1, M, X, Z),构造相应的DFA,其中: M (X, 0) = Z M (X, 1) = X M (Y, 0) = X, Y M (Y, 1) = M (Z, 0) = X, Z M (Z, 1) = Y 第一种方法:先画出其状态转换图,利用子集法: 0 0 X Z 1 0 1 0 Y 0 假设(DFA) M=(K, VT, M, S, Z),其中K=X, Y, Z, X,Y, X, Z, Y, Z, X, Y, Z,VT=0, 1,M的规则如下表: I X Y Z X, Y X, Z Y, Z I0 Z X, Y X, Z X, Y, Z X, Z X, Y, Z I1 X Y X X, Y Y S 0 1 2 3 4 5 0 1 2 1 3 4 1 6 0 4 3 6 1 X, Y, Z X, Y, Z X, Y 6 6 3 其中Y, Z为不可到达状态,应该删去,所以S=X,Z=Z, X, Z, X, Y, Z,再进行化简,发现4和6两状态等价,最后其DFA如下所示: 0 2 1 0 0 4, 6 1 0 0 3 1 0 0 1 1 S 第二种方法:先构造其对应的转换系统: 0 0 X 1 Z 0 1 0 Y Z 0 由上述转换系统可得状态转换集、状态子集转换矩阵如下表所示: I S, X Z, Z X X, Z, Z Y X, Y X, Y, Z, Z I0 Z, Z X, Z, Z Z, Z X, Z, Z X, Y X, Y, Z, Z X, Y, Z, Z I1 X Y X X, Y X X, Y S 0 1 2 3 4 5 6 0 1 1 2 3 4 1 2 3 5 5 6 2 6 5 先化简,分为非终态集 2, 4, 5, 0 和终态集 6, 1, 3,易于发现可划分为0, 2,1,3, 6,4,5,其DFA如下所示: 1 5 1 1 0 0 0, 2 0 4 0 3, 6 0 1 1 P74 16. 已知e1= (a|b)*,e2=(a*b*)*,试证明e1= e2。 证明:L(e1)=L(a|b)*)= (L (a|b)*= (L (a)L(b)*=a, b*; L(e2)= L(a*b*)*)= (L (a*b*)*=(L(a*)L(b*)*=a*b*=a, b*; 因此e1= e2 P74 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) P74 19. a, b,写出下列正规集: (a | b)*(aa | bb)(a | b)* 解:L(a | b)*(aa | bb)(a | b)*) = L(a | b)*) L(aa | bb) L(a | b)*) =(L (a | b)* aa, bb (L (a | b)* = a, b*aa, bba, b* P75 20. 证明下列关系式成立,其中A、B是任意正规表达式。 A | A = A A* = | AA* 解:L(A | A) = L(A)L(A) = L(A),所以A | A = A; 解:L(A*) = (L(A)*,L(| AA*) = L(A)L(A*) = (L(A)*,所以A* = | AA*; 第七次作业: P142 1. 试分别消除下列文法的直接左递归 GE: E:=T | EAT T:=F | TMF F:=(E) | i A:=+ | - M:=* | / 解:先采用“重复法”: 再采用“改写法”: E:=TAT E:=TE T:=TMF E:= ATE | F:=(E) | I T:=FT A:=+ | - T:=MFT | M:=* | / F:=(E) | I A:=+ | - M:=* | / GZ: Z:=V1 V1:=V2 | V1iV2 V2:=V3 | V2+V3 V3:=)V1* | ( 解:先采用“重复法”: 再采用“改写法”: Z:=V1 Z:=V1 V1:=V2 iV2 V1:=V2 V1 V2:=V3 +V3 V1:=i V2 V1 | V3:=)V1* | ( V2:=V3 V2 V2:=+V3 V2 | V3:=)V1* | ( P142 2. 试分别消除下列文法的间接左递归 GZ: Z:=AZ | b A:=Z A | a 解:将式代入式可得,Z:=ZAZ | aZ | b 消除左递归后得到: Z:=(aZ | b)Z Z:=AZZ | A:=ZA | a P142 4. 试分别用两种方法写一个识别下面文法句子的递归子程序 文法GA: A:=B B:=X | BA X:=Xa | Xb | a | b 解:消除该文法的左递归和回溯,得到文法如下: A:=B B:=XB B:=AB | X:=aX | bX X:= aX | bX | 用类Pascal语言写出其递归子程序: P(A): SCIN IF ch= THEN READ (ch) ELSE ERROR P(B) SCOUT P(B): SCIN P(X) IF ch= THEN READ (ch) ELSE ERROR P(B) SCOUT P(B): SCIN IF ch= THEN SCOUT ELSE P(A) P(B) SCOUT P(X): SCIN IF ch=a THEN READ (ch) P(X) ELSE IF ch=b THEN READ (ch) P(X) ELSE ERROR SCOUT P(X): SCIN IF ch= THEN SCOUT ELSE IF ch=a THEN READ (ch) P(X) ELSE IF ch=b THEN READ (ch) P(X) ELSE ERROR SCOUT 用框图法来表述: P(A): P(X): 1 SCIN 2 ch=? <> = 3 4 ERROR READ 5 P(B) 6 SCOUT 第八次作业: P143 5. 对下面的文法GE: E:=TE 1 SCIN 2 ch=? = 3 = 5 READ 7 P(X) 8 READ 10 P(X) = <> 4 ch=a? <> 6 ch=b? <> 9 ERROR SCOUT E:=+E | T:=FT T:=T | F:=PF F:=*F | P(E) |a |b | 计算这个文法的每个非终结符号的FIRST和FOLLOW; 证明这个文法是LL文法; 构造它的LL分析表并分析符号串a*b+b; 解:构造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)

    注意事项

    本文(王汝传编译原理习题答案.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开