《编译原理》西北工业大学第三版课后答案.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《编译原理》西北工业大学第三版课后答案.pdf》由会员分享,可在线阅读,更多相关《《编译原理》西北工业大学第三版课后答案.pdf(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 一 章 绪论1.1何谓源程序、目标程序、翻译程序、编译程序和解释程序?它们之间可能有何种关系?1.2 一个典型的编译系统通常由哪些部分组成?各部分的主要功能是什么?1.3 选择一种你所熟悉的程序设计语言,试列出此语言中的全部关键字,并通过上机使用该语言以判明这些关键字是否为保留字。1.4 选取一种你所熟悉的语言,试对它进行分析,以找出此语言中的括号、关键字E N D以及逗号有多少种不同的用途。1.5试用你常用的一种高级语言编写一短小的程序,上机进行编译和运行,记录下操作步骤和输出信息,如果可能,请卸出中间代码和目标代码。参考答案第一章习题解答1 .解:源程序是指以某种程序设计语言所编写的程
2、序。目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。翻译程序是将某种语言翻译成另一种语言的程序的统称。编译程序与解释程序均为翻译程序,但二者工作方法不同。解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。即边解释边执行,翻译所得的指令序列并不保存。编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。即先翻译、后执行。2 .解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义
3、分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。3 .解:C语言的关键字有:a u t o b r ea k c a s e c h a r c on s t c on t i n u ed efa u l t d o d ou b l e el s e en u m ex t er n fl oa t for got o i f i n t l on gr egi s t er r et u r n s h or t s i gn ed s i z eof s t a t i c s t r u c t s w i t c h t y p e
4、d efu n i on u n s i gn ed v oi d v ol a t i l e w h i l e。上述关键字在C语言中均为保留字。4 .解:C语言中括号有三种:,口,()o其中,用于语句括号;口用于数组;()用 于 函 数(定义与调用)及表达式运算(改变运算顺序)。C语言中无E N D关键字。逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为 d),5 .略第二章前后文无关文法和语言77X)/XJZ77123456/(/(/|zz(21设有字母表A l=a,b,z ,A 2=0,1,9 ,试回答下
5、列问题:(1)字母表A 1上长度为2 的符号串有多少个?(2)集合A 1A 2含有多少个元素?(3)列出集合A l (A 1U A 2)*中的全部长度不大于3 的符号串。22试分别构造产生下列语言的文法。an bn n 20;an bm cp n,m,p 20;an#bn|n-O U cn#dn|n 20;w#w r#|w G 0,1*,w r 是将w中的符号按逆序排列所得的符号串;任何不是以0 开始的所有奇整数所组成的集合;所有由偶数个0 和偶数个1所组成的符号串的集合。23试描述由下列文法所产生的语言的特点(文法的开始符号均为S)o(1)S-10S 0S/aA A-bA A-a(2)S S
6、 S S-1A 0A-1A 0A-(3)S-*1A S-*B OA-*1A A-*CB B OB C C-1C 0C-e(4)S-*bA dcA-A G S G f e A-a(5)S-aS S S-a24设已给文法G=(V N,V T,P,S),其中:V N=S V T=al,a2,an,V,A,P=S ai|i=l,2,n U S 一 S,S f S V S ,S-*S A S ,试指出此文法所产生的语言。25 考察文法G=(V N,V T,P,S),其中:V N=S,A,B,C,D,E,F,G V T=a,P=S f A B C,C-*B C,C-A,B A-G E,B G-*G B F
7、,A G-*A D,D B-B D,D E A E,F B-B F,F E-E a,A A -e(1)指出此文法的类型;(2)证明此文法所产生的语言为L(G)=at(n)|n l t (n)=n i=l i26 设已给文法G 程序:程序一 分程序I 复合语句(分程序一 无标号分程序|标 号):分程序 复合语句一(无标号复合语句I 标号:复合语句(无标号分程序一 分程序首部;复合尾部(无标号复合语句一begi n 复合尾部)分程序首部一begi n 说明1 分程序首部;说明 复合尾部一 语句en d|语句;复合尾部 说明一d 语句f sX)/17)zX17)z12345z(/(z(z(z/l 标
8、号-L(1)给出句子L:L:begi n d;d;s;s en d的最左推导和最右推导。(2)画出上述句子的语法树。27 设已给文法G S:S-aA cB S-*B dS B-aS cA B-cA BA B aB A aB cA f aB b试检验下列符号串中哪些是G S 中的句子,给出这些句子的最左推导、最右推导和相应的语法树。aacbaabacbadcdaacbccbaacabcbcccaacdcaaacabcbcccaacbca28 设 G=(V N,V T,P,S)为C F G,a 1,a 2,a n 为V 上的符号串,试证明:若al a 2 a n *B则存在V上的符号串B 1,B
9、2,,B n,使 8 =B 16 2 B n,且有ai *3 i (i=l,2,n)29 设 G=(V N,V T,P,S)为C F G,a 和 8都是V 上的符号串,且 a*B,试证明:当 a 的首符号为终结符号时,B的首符号也必为终结符号;当 p的首符号为非终结符号时,则 a 的首符号也必为非终结符号。210试证明:文法S A B S f D C A aA A aB f bB cB-*bcC f cC C f cD-aD bD-ab为二义性文法。211对于下列的文法和相应的句子,试指出这些句子的全部短语;分别给出句子的最右推导,并指出各步直接推导所得句型的句柄。(1)S-A B S-cA-
10、*bA A-*aB-aS bB-*cbbaacb(2)S f(A S)S-*(b)A-(S aA)A-*(a)(b)a(a)(b)(3)E f E T+E-*T T f T F*T-F F-F P t F-P P-E P-ii i i*i+t212在自底向上的分析中,用来归约句型句柄的产生式称为句柄产生式。试证明:一个文法是无二义性的,当且仅当此文法的每一句型至多只有一个句柄和一个句柄产生式。213化简下列各个文法。(1)S aA B S S-bC A C dA bA B A-cS AA-*cC C B-*bA B B-cS B C-cSC-c(2)S aA B S E A dD A A eB
11、-bE B f fC f cA B C f dS DC-aD f eA E fA E f g(3)S f acS-*bA A f cB C B f S AC -bC C-d214消去下列文法中的e 产生式。(1)S f aA S S bA cS A e(2)S-*aA A A-*bA cA-*dA eA -e215 消去下列文法中的无用产生式和单产生式。(1)S-*aB S-*B C A-aA A-*cA f aD bB -D B B-C D f BC-*b(2)S-S A S-S B A-B B-S A-(S)S-*A B-*A-()(3)E-E+T E-T T-T*F T-FF-*P t
12、F F-*P P-*(E)P-*i参考答案第二章习题解答1.答:26*26=6 7 6(2)答:26*10=26 0(3)答:a,b,c,,z,a0,al,.,a9,aa,.,az,.,z z,aOO,aOl,.,z z z ,共 26+26*36+26*36*36=346 5 8 个2.构造产生下列语言的文法(1)an bn|n 20解:对应文法为 G(S)=(S ,a,b,S-|aS b ,S)(2)an bm cp I n,m,p 20解:对应文法为 G(S)=(S,X,Y ,a,b,c,S-aS|X,X-bX|Y,Y-cY|e ,S)(3)an#bn|n O U cn#dn|n O解:
13、对应文法为 G(S)=(S,X,Y ,a,b,c,d,#,S-*X,S Y,X aX b|#,Y cY d|#,S)(4)w#w r#|w?0,1*,w r 是 w 的逆序排列解:G(S)=(S,W,R ,0,1,#,S W#,W-0W 0 1W 11#,S)(5)任何不是以0 打头的所有奇整数所组成的集合解解(S)=(S,A,B,I,J ,-,0,1 2,3,4,5,6,7,8,9 ,S-*J|I BJ,Bf O B|I B|e,I-*J 4|6|8,J a l|3|5|7|9 ,S)(6)所有偶数个0 和偶数个1 所组成的符号串集合解:对应文法为 S-O A|l B|e,A-*O S|1
14、C B-*O C|1 S C-*1 A|O B3.描述语言特点(1)S-*1 0 S 0 S-a AA-*bAA-*a解:本文法构成的语言集为:L(G)=(1 0)n a bm a O n l n,m 20 。(2)S-S S S-1 A0 A-1 A0 A-e解:L (G)=I n l O n l l n 20 n 2 I n m O n m I n l,n 2,,n m 20;且 n l,n 2,n m 不全为零 该语言特点是:产生的句子中,0、1 个数相同,并且若干相接的1 后必然紧接数量相同连续的0。(3)S I AS-BO A-l AA-CB-BO BCC-1 C0 C-e解:本文法
15、构成的语言集为:L(G)=l p l n O n|p 21,n 20 U l n 0 n 0 q|ql,n 20 ,特点是具有 I p l n O n 或I n O n O q形式,进一步,可知其具有形式I n O m n,m 20,且 n+m 0。(4)S f bAdcAf AG S G-e A-*a解:可 知,S=ba S n dc n 20该语言特点是:产生的句子中,是以ba 开头de结尾的串,且ba、de个数相同。(5)S-a S S S-*a解:L(G)=a(2n-l)|n?l 可知:奇数个a4.解:此文法产生的语言是:以终结符al、a 2-an为运算对象,以A、V、为运算符,以、为
16、分隔符的布尔表达式串5 .5.1 解:由于此文法包含以下规则:A A-e,所以此文法是0 型文法。5.2 证明:略6.解:(1)最左推导:程序 T 分程序 T 标号:分程序 T L:分程序T L:标号:分程序T L:L:分程序T L:L:无标号分程序T L:L:分程序首部;复合尾部T L:L:分程序首部;说明;复合尾部T L:L:beg i n 说明;说明;复合尾部T L:L:beg i n d;说明;复合尾部T L:L:beg i n d;d;复合尾部T L:L:beg i n d;d;语句;复合尾部T L:L:beg i n d;d;s;复合尾部.T L:L:beg i n d;d;s;语
17、句 en dT L:L:beg i n d;d;s;s en d最右推导:程序 T(分程序与 标号:分程序T 标号:标号:分程序T 标号:标号:无标号分程序T 标号:标号:分程序首部;复合尾部T(标号:标号:分程序首部;语句;复合尾部T 标号:标号:分程序首部;语句;语句;en d以标号:标号:分程序首部;语句;s;en dT(标号:标号:分程序首部;s;s;en dT 标号:标号:分程序首部;说明;s;s;en dT 标号:标号:分程序首部;d;s;s;en dT 标号:标号:beg i n 说明;d;s;s;en dT 标号:标号:beg i n d;d;s;s;en dT 标号:L:be
18、g i n d;d;s;s;en dT L:L:beg i n d;d;s;s;en d(2)句子L:L:beg i n d;d;s;s en d的相应语法树是:7.解:a a cb是文法G S 中的句子,相应语法树是:最右推导:S=a AcB=a Acb=a a cb最左推导:S=a AcB=a a cB=a a cb(2)a a ba cba dcd不是文法G S 中的句子因为文法中的句子不可能以非终结符d 结尾(3)a a cbccb不是文法G S 中的句子可知,a a cbccb仅是文法G S 的-个句型的一部分,而不是一个句子。(4)a a ca bcbccca a cdca 不是文
19、法G S 中的句子因为终结符d 后必然要跟终结符a,所以不可能出现de这样的句子。(5)a a ca bcbccca a cbca 不是文法G S 中的句子由(1)可知:a a cb可归约为S,由文法的产生式规则可知,终结符c 后不可能跟非终结符S,所以不可能出现ca a cb这样的句子。8 .证明:用归纳法于n,n=l 时,结论显然成立。设n=k 时,对 于 a 1 a 2.a k T*b,存 在 Bi:i=l,2,.,k,a i T*bi 成立,现在设a 1 a 2.a k a k+l T*b,因文法是前后文无关的,所 以 a 1 a 2.a k 可推导出b 的一个前缀b,a k+1 可推
20、导出b 的一个后缀=b(不妨称为b k+1)。由归纳假设,对于 b,存在 Bi :i=l,2,.,k,b=B 1 B 2.B k,使得a i T*bi 成立,另外,我们有a k+l T*b”(=b k+1)o即n=k+l 时亦成立。证毕。9 .证明:(1)用反证法。假 设 a首符号为终结符时,B 的首符号为非终结符。即设:a=a 3;B=A3 且 a=*B。由题意可知:a=a 3 T T A3 =6 ,由于文法是CFG,终结符a 不可能被替换空串或非终结符,因此假设有误。得证;(2)同(1),假设:B 的首符号为非终结符时,a首符号为终结符。即设:a =a 3;6 =A 3,且 a =a 3T
21、 T A 3 =B,与(1)同理,得证。1 0 .证明:因为存在句子:a bc,它对应有两个语法树(或最右推导):S T ABT AbcT a bcS T DCT DcT a bc所以,本文法具有二义性。1 1 .解:(1)S T ABT Aa S bT Aa cbT bAa cbT bbAa cbT bba a cb上面推导中,下划线部分为当前句型的句柄。对应的语法树为:全部的短语:第一个a (a l)是句子bba a cb相对于非终结符A(A l)(产生式A?a)的短语(直接短语);bl a l是句子bba a cb相对于非终结符A 2的短语;b2bl a l是句子bba a cb相对于非
22、终结符A 3的短语;c是句子bba a cb相对于非终结符S 1 (产生式S?c)的短语(直接短语);a 2cb3是句子bba a cb相对于非终结符B的短语;b2bl a l a 2cb3是句子bba a cb相对于非终结符S 2的短语;注:符号的下标是为了描述方便加上去的。(2)句 子(b)a (a)(b)的最右推导:S T (AS)T (A(b)T (S a A)(b)T (S a (a)(b)T (b)a (a)(b)相应的语法树是:(3)解:i i i*i+t对应的语法树略。最右推导:E T T=F=FP t T FE t T FE T+t T FE F+t T FE P+t T F
23、E i+tT FT i+t T FT F*i+t T FT P*i+t T FT i*i+t T FFi*i+t T FP i*i+tT Fi i*i+t T P i i*i+t T i i i*i+t1 2.证明:充分性:当前文法下的每一符号串仅有一个句柄和一个句柄产生式T 对当前符号串有唯一的最左归约T 对每一步推导都有唯一的最右推导T 有唯一的语法树。必要性:有唯一的语法树T 对每步推导都有唯一的最右推导T 对当前符号串有唯的最左归约T 当前文法下的每一符号串仅有一个句柄和一个句柄产生式13.化简下列各个文法(1)解:S-*b CACd A-*c SA|c CCC-c S|c(2)解:S
24、a AB|f A|g Ae|d DADe ABf(3)解:S-a c14.消除下列文法中的e产生式(1)解:Sa AS|a S|b A-c S(2)解:Sf a AA|a A|a A b Ac|b e|d Ae|d e15.消除下列文法中的无用产生式和单产生式(1)消除后的产生式如下:Sf a B|BCB-DB|bC-bD-*b|DB(2)消除后的产生式如下:S-SA|SB|()|(S)|SA-0|(S)|SBa|S(3)消除后的产生式如下:E-E+T|T*F|(E)|Pt F|iT-T*F|(E)|Pt F|iF-P f F|(E)|iP T E)|i第三章词法分析及词法分析程序3.1试用某
25、种高级语言编写一个F ORTRAN源程序的预处理子程序,其功能是:每调用它一次,即把源程序中的一个完整语句送入扫描缓冲区。要求删去语句中的注释行;删去续行标记字符,把语句中的各行连接起来,并在语句的末端加上语句结束符。止 匕 外,还要求此程序具有组织源程序列表输出的功能。3.2画出用来识别如下三个关键字的状态转移图。STE P STRIN G SWITCH3.3假定有一个猎人带着一只狼、一头山羊和一棵白菜来到一条河的左岸,拟摆渡过河,而岸边只有一条小船,其大小仅能装载人和其余三件东西中的一件,也就是说,每一次猎人只能将随行者中的一件带到彼岸。若猎人将狼和山羊留在同一岸上而无人照管,那么,狼就会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 编译 原理 西北工业大学 第三 课后 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内