哈工大编译原理习题及答案Word文件下载.docx

上传人:b****2 文档编号:363787 上传时间:2023-04-28 格式:DOCX 页数:163 大小:492.38KB
下载 相关 举报
哈工大编译原理习题及答案Word文件下载.docx_第1页
第1页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第2页
第2页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第3页
第3页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第4页
第4页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第5页
第5页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第6页
第6页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第7页
第7页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第8页
第8页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第9页
第9页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第10页
第10页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第11页
第11页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第12页
第12页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第13页
第13页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第14页
第14页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第15页
第15页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第16页
第16页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第17页
第17页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第18页
第18页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第19页
第19页 / 共163页
哈工大编译原理习题及答案Word文件下载.docx_第20页
第20页 / 共163页
亲,该文档总共163页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

哈工大编译原理习题及答案Word文件下载.docx

《哈工大编译原理习题及答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《哈工大编译原理习题及答案Word文件下载.docx(163页珍藏版)》请在冰点文库上搜索。

哈工大编译原理习题及答案Word文件下载.docx

(2)集合A1A2含有多少个元素?

(3)列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。

22试分别构造产生下列语言的文法。

(1){anbn|n≥0};

(2){anbmcp|n,m,p≥0};

(3){an#bn|n≥0}∪{cn#dn|n≥0};

(4){w#wr#|w∈{0,1}*,wr是将w中的符号按逆序排列所得的符号串};

(5)任何不是以0开始的所有奇整数所组成的集合;

(6)所有由偶数个0和偶数个1所组成的符号串的集合。

23试描述由下列文法所产生的语言的特点(文法的开始符号均为S)。

(1)S→10S0S→aAA→bAA→a

(2)S→SSS→1A0A→1A0A→ε

(3)S→1AS→B0A→1AA→C

B→B0B→CC→1C0C→ε

(4)S→bAdcA→AGSG→εA→a

(5)S→aSSS→a

24设已给文法G=(VN,VT,P,S),其中:

VN={S}

VT={a1,a2,…,an,∨,∧,~,[,]}

P={S→ai|i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]},

试指出此文法所产生的语言。

25考察文法G=(VN,VT,P,S),其中:

VN={S,A,B,C,D,E,F,G}

VT={a},

P={S→ABC,C→BC,C→A,BA→GE,BG→GBF,AG→AD,

DB→BD,DE→AE,FB→BF,FE→Ea,AA→ε}

(1)指出此文法的类型;

(2)证明此文法所产生的语言为

L(G)={at(n)|n≥1}

t(n)=∑n[]i=1i

26设已给文法G[〈程序〉]:

〈程序〉→〈分程序〉|〈复合语句〉

〈分程序〉→〈无标号分程序〉|〈标号〉:

〈分程序〉

〈复合语句〉→〈无标号复合语句〉|〈标号〉:

〈复合语句〉

〈无标号分程序〉→〈分程序首部〉;

〈复合尾部〉

〈无标号复合语句〉→begin〈复合尾部〉

〈分程序首部〉→begin〈说明〉|〈分程序首部〉;

〈说明〉

〈复合尾部〉→〈语句〉end|〈语句〉;

〈说明〉→d

〈语句〉→s

〈标号〉→L

(1)给出句子

L:

L:

begind;

d;

s;

send

的最左推导和最右推导。

(2)画出上述句子的语法树。

27设已给文法G[S]:

S→aAcBS→BdSB→aScAB→cAB

A→BaBA→aBcA→aB→b

试检验下列符号串中哪些是G[S]中的句子,给出这些句子的最左推导、最右推导和相应的语法树。

(1)aacb

(2)aabacbadcd

(3)aacbccb

(4)aacabcbcccaacdca

(5)aacabcbcccaacbca

28设G=(VN,VT,P,S)为CFG,α1,α2,…,αn为V上的符号串,试证明:

α1α2…αn*β

则存在V上的符号串β1,β2,…,βn,使β=β1β2…βn,且有

ai*βi(i=1,2,…,n)

29设G=(VN,VT,P,S)为CFG,α和β都是V上的符号串,且α*β,试证明:

当α的首符号为终结符号时,β的首符号也必为终结符号;

当β的首符号为非终结符号时,则α的首符号也必为非终结符号。

210试证明:

文法

S→ABS→DCA→aAA→a

B→bBcB→bcC→cCC→c

D→aDbD→ab

为二义性文法。

211对于下列的文法和相应的句子,试指出这些句子的全部短语;

分别给出句子的最右推导,并指出各步直接推导所得句型的句柄。

(1)S→ABS→cA→bAA→aB→aSbB→c

bbaacb

(2)S→(AS)S→(b)A→(SaA)A→(a)

(((b)a(a))(b))

(3)E→ET+E→TT→TF*T→FF→FP↑F→PP→EP→i

iii*i+↑

212在自底向上的分析中,用来归约句型句柄的产生式称为句柄产生式。

试证明:

一个文法是无二义性的,当且仅当此文法的每一句型至多只有一个句柄和一个句柄产生式。

213化简下列各个文法。

(1)S→aABSS→bCACdA→bABA→cSA

A→cCCB→bABB→cSBC→cS

C→c

(2)S→aABS→EA→dDAA→e

B→bEB→fC→cABC→dSD

C→aD→eAE→fAE→g

(3)S→acS→bAA→cBCB→SA

C→bCC→d

214消去下列文法中的ε产生式。

(1)S→aASS→bA→cSA→ε

(2)S→aAAA→bAcA→dAeA→ε

215消去下列文法中的无用产生式和单产生式。

(1)S→aBS→BCA→aAA→c

A→aDbB→DBB→CD→B

C→b

(2)S→SAS→SBA→BB→[S]

A→(S)S→AB→[]A→()

(3)E→E+TE→TT→T*FT→F

F→P↑FF→PP→(E)P→i

第二章习题解答

1.

(1)答:

26*26=676

(2)答:

26*10=260

(3)答:

{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个

(1){anbn|n≥0}

解:

对应文法为G(S)=({S},{a,b},{S→ε|aSb},S)

(2){anbmcp|n,m,p≥0}

对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)

(3){an#bn|n≥0}∪{cn#dn|n≥0}

对应文法为G(S)=({S,X,Y},{a,b,c,d,#},{S→X,S→Y,X→aXb|#,Y→cYd|#},S)

(4){w#wr#|w?

{0,1}*,wr是w的逆序排列}

G(S)=({S,W,R},{0,1,#},{S→W#,W→0W0|1W1|#},S)

(5)任何不是以0打头的所有奇整数所组成的集合

G(S)=({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e,I→J|2|4|6|8,Jà

1|3|5|7|9},S)

(6)所有偶数个0和偶数个1所组成的符号串集合

对应文法为S→0A|1B|e,A→0S|1CB→0C|1SC→1A|0B

(1)S→10S0S→aAA→bAA→a

本文法构成的语言集为:

L(G)={(10)nabma0n|n,m≥0}。

(2)S→SSS→1A0A→1A0A→ε

L(G)={1n10n11n20n2…1nm0nm|n1,n2,…,nm≥0;

且n1,n2,…nm不全为零}该语言特点是:

产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同连续的0。

(3)S→1AS→B0A→1AA→CB→B0B→CC→1C0C→ε

L(G)={1p1n0n|p≥1,n≥0}∪{1n0n0q|q≥1,n≥0},特点是具有1p1n0n或1n0n0q形式,进一步,可知其具有形式1n0mn,m≥0,且n+m>

0。

(4)S→bAdcA→AGSG→εA→a

可知,S=>

…=>

baSndcn≥0

该语言特点是:

产生的句子中,是以ba开头dc结尾的串,且ba、dc个数相同。

(5)S→aSSS→a

L(G)={a(2n-1)|n≥1}可知:

奇数个a

此文法产生的语言是:

以终结符a1、a2…an为运算对象,以∧、∨、~为运算符,以[、]为分隔符的布尔表达式串

5. 

5.1解:

由于此文法包含以下规则:

AA→e,所以此文法是0型文法。

5.2证明:

6.解:

(1)最左推导:

<

程序>

T<

分程序>

标号>

TL:

TL:

L:

无标号分程序>

分程序首部>

复合尾部>

说明>

begin<

begind;

d;

语句>

s;

复合尾部.

end

send

最右推导:

end

说明;

begin说明;

L:

(2)句子L:

send的相应语法树是:

7.解:

aacb是文法G[S]中的句子,相应语法树是:

S=>

aAcB=>

aAcb=>

aacb

最左推导:

aacB=>

(2)aabacbadcd不是文法G[S]中的句子

因为文法中的句子不可能以非终结符d结尾

(3)aacbccb不是文法G[S]中的句子

可知,aacbccb仅是文法G[S]的一个句型的一部分,而不是一个句子。

(4)aacabcbcccaacdca不是文法G[S]中的句子

因为终结符d后必然要跟终结符a,所以不可能出现…dc…这样的句子。

(5)aacabcbcccaacbca不是文法G[S]中的句子

(1)可知:

aacb可归约为S,由文法的产生式规则可知,终结符c后不可能跟非终结符S,所以不可能出现…caacb…这样的句子。

8.证明:

用归纳法于n,n=1时,结论显然成立。

设n=k时,对于α1α2...αkT*b,存在βi:

i=1,2,..,k,αiT*bi成立,现在设

α1α2...αkαk+1T*b,因文法是前后文无关的,所以α1α2...αk可推导出b的一个前缀b'

,αk+1可推导出b的一个后缀=b"

(不妨称为bk+1)。

由归纳假设,对于b'

,存在βi:

i=1,2,..,k,b'

=β1β2...βk,使得

αiT*bi成立,另外,我们有αk+1T*b"

(=bk+1)。

即n=k+1时亦成立。

证毕。

9.证明:

(1)用反证法。

假设α首符号为终结符时,β的首符号为非终结符。

即设:

α=aω;

β=Aω’且α=>

*β。

由题意可知:

α=aωT…TAω’=β,由于文法是CFG,终结符a不可能被替换空串或非终结符,因此假设有误。

得证;

(2)同

(1),假设:

β的首符号为非终结符时,α首符号为终结符。

β=Aω’且α=aωT…TAω’=β,与

(1)同理,得证。

10.证明:

因为存在句子:

abc,它对应有两个语法树(或最右推导):

STABTAbcTabc

STDCTDcTabc

所以,本文法具有二义性。

11.解:

(1)STABTAaSbTAacbTbAacbTbbAacbTbbaacb

上面推导中,下划线部分为当前句型的句柄。

对应的语法树为:

全部的短语:

第一个a(a1)是句子bbaacb相对于非终结符A(A1)(产生式A?

a)的短语(直接短语);

b1a1是句子bbaacb相对于非终结符A2的短语;

b2b1a1是句子bbaacb相对于非终结符A3的短语;

c是句子bbaacb相对于非终结符S1(产生式S?

c)的短语(直接短语);

a2cb3是句子bbaacb相对于非终结符B的短语;

b2b1a1a2cb3是句子bbaacb相对于非终结符S2的短语;

注:

符号的下标是为了描述方便加上去的。

(2)句子(((b)a(a))(b))的最右推导:

ST(AS)T(A(b))T((SaA)(b))T((Sa(a))(b))

T(((b)a(a))(b))

相应的语法树是:

(3)解:

iii*i+↑对应的语法树略。

ETT=>

F=>

FP↑TFE↑TFET+↑TFEF+↑TFEP+↑TFEi+↑

TFTi+↑TFTF*i+↑TFTP*i+↑TFTi*i+↑TFFi*i+↑TFPi*i+↑

TFii*i+↑TPii*i+↑Tiii*i+↑

12.证明:

充分性:

当前文法下的每一符号串仅有一个句柄和一个句柄产生式T对当前符号串有唯一的最左归约T对每一步推导都有唯一的最右推导T有唯一的语法树。

必要性:

有唯一的语法树T对每一步推导都有唯一的最右推导T对当前符号串有唯一的最左归约T当前文法下的每一符号串仅有一个句柄和一个句柄产生式

(1)解:

S→bCACdA→cSA|cCCC→cS|c

(2)解:

S→aAB|fA|gA→e|dDAD→eAB→f

S→ac

S→aAS|aS|bA→cS

S→aAA|aA|aA→bAc|bc|dAe|de

(1)消除后的产生式如下:

S→aB|BC

B→DB|b

C→b

D→b|DB

(2)消除后的产生式如下:

S→SA|SB|()|(S)|[]|[S]

A→()|(S)|[]|[S]

[]|[S]

(3)消除后的产生式如下:

E→E+T|T*F|(E)|P↑F|i

T→T*F|(E)|P↑F|i

F→P↑F|(E)|i

P→(E)|i

第三章词法分析及词法分析程序

3.1试用某种高级语言编写一个FORTRAN源程序的预处理子程序,其功能是:

每调用它一次,即把源程序中的一个完整语句送入扫描缓冲区。

要求删去语句中的注释行;

删去续行标记字符,把语句中的各行连接起来,并在语句的末端加上语句结束符。

此外,还要求此程序具有组织源程序列表输出的功能。

3.2画出用来识别如下三个关键字的状态转移图。

STEPSTRINGSWITCH

3.3假定有一个猎人带着一只狼、一头山羊和一棵白菜来到一条河的左岸,拟摆渡过河,而岸边只有一条小船,其大小仅能装载人和其余三件东西中的一件,也就是说,每一次猎人只能将随行者中的一件带到彼岸。

若猎人将狼和山羊留在同一岸上而无人照管,那么,狼就会将羊吃掉;

如果猎人把山羊和白菜留在同一岸,山羊也会把白菜吃掉。

现在,请你用状态转换图作为工具,描述猎人可能采取的种种摆渡方案,并从中找出可将上述三件东西安全地带到右岸的方案来。

3.4设已给文法G=(VN,VT,P,S),其中,P仅含形如

A→αBA→αα∈V*T,B∈VN

的产生式,试证明:

由此种文法所产生的语言是一正规语言。

3.5试证明:

任何有限个符号串所组成的集合

L={x1,x3,…,xn}xi∈Σ+

都是3型语言。

3.6试构造一右线性文法,使得它与如下的文法等价

S→ABA→UTU→a|aU

T→b|bTB→c|cB

并根据所得的右线性文法,构造出相应的状态转换图。

3.7对于如题图37所示的状态转换图

(1)写出相应的右线性文法;

(2)指出它接受的最短输入串;

(3)任意列出它接受的另外四个输入串;

(4)任意列出它拒绝接受的四个输入串。

题图37

3.8对于有限自动机

M=(K,Σ,f,S0,Z)

其中,K={S0,S1,S2,S3,S4,S5},Σ={a,b},Z={S1,S4,S5}。

f由如下的状态转移矩阵给出:

[]a[]bS0[]S2[]S1S1[]S3[]S1S2[]S0[]S4S3[]S0[]S0S4[]S5[]S4S5[]S4[]S0

试找出一个长度最小的输入串,使得:

(1)在识别此输入串的过程中,每一状态至少经历一次;

(2)每一状态转换至少经历一次。

3.9对于下列的状态转换矩阵:

[]a[]bS[]A[]SA[]A[]BB[]B[]B(i)初态:

S

终态:

B[][][]a[]bS[]A[]BA[]B[]AB[]B[]B(ii)初态:

A[]a[]bS[]A[]BA[]C[]AB[]B[]CC[]C[]C(iii)初态:

A,C[][][]a[]bS[]A[]SA[]C[]BB[]B[]CC[]C[]C(iv)初态:

C

(1)分别画出相应的状态转换图;

(2)写出相应的3型文法;

(3)用自然语言分别描述它们所识别的输入串的特征。

3.10对于下面所给的文法:

G1=({S,A,B,C,D},{a,b,c,d},P1,S)

P1由如下产生式组成:

S→aAS→BA→abS

A→bBB→bB→cC

C→DD→dD→bB

以及G2=({S,A,B,C,D},{a,b,c,d},P2,S)

P2由如下产生式组成:

S→AaS→BA→Cc

A→BbB→BbB→a

C→DC→BabD→d

(1)试分别对G1和G2构造相应的状态转换图(提示:

对于右线性文法,可将形如C→D的产生式视为C→εD;

而对左线性文法,则可将它视为C→Dε)。

(2)对于G1,构造一等价的左线性文法G1′;

对于G2构造一等价的右线性文法G2′。

(3)对于G1和G1′,分别给出如下符号串的推导序列:

abbaababbbcdcbb

对于G2和G2′分别给出如下符号串的推导序列:

aabaaabcadca

(4)试给出若干个不能由G1或G2产生的符号串,并验证它们同样不能用G1′和G2′产生。

3.11分别构造将左线性文法转换为右线性文法以及将右线性文法转换为左线性文法的算法。

3.12将如题图312所示的NFA确定化和最小化。

题图312

3.13将如题图313所示的具有ε动作的NFA确定化。

题图313

3.14将如题图314所示的有限自动机最小化。

3.15试用一种高级语言分别写出将NFA确定化以及将DFA最小化的算法。

3.16构造一产生FORTRAN语言COMMON语句的3型文法(假定分别用λ和μ代表标识符和整常数,它们都是终结符号,且假定数组的维数不加限定),构造相应的DFA,并写出描述COMMON语句的正规式。

3.17设r,s等为任意的正规式,试证明下列的关系式成立:

(1)r*=(ε|r)*=ε|rr*=(r*)*

(2)(rs)*r=r(sr)*

(3)(r|s)*=(r*s*)*=(r*|s*)*

3.18对于解习题36所得的文法,试用正规式描述它所产生的语言。

[]a[]bS0[]S1[]S5S1[]S2[]S7S2[]S3[]S5S3[]S5[]S7S4[]S5[]S5S5[]S3[]S1S6[]S3[]S0S7[]S0[]S1S8[]S3[]S8

(1)初态:

S0

S1,S2,S6,S7[][][]a[]bS0[]S5[]S2S1[]S6[]S2S2[]S0[]S4S3[]S3[]S5S4[]S6[]S2S5[]S3[]S0S6[]S3[]S1

(2)初态:

S4,S5,S6题图314

3.19对于习题310所给的文法G1和G2,试分别用正规式描述它们所产生的语言。

3.20设有如下的文法G[〈标号说明〉]:

〈标号说明〉→′LABEL′〈标号表〉

〈标号表〉→d〈标号段〉

〈标号段〉→d〈标号段〉|,〈标号〉|;

〈标号〉→d〈标号段〉

其中′LABEL′,′d′,′,′,′;

′等为终结符号。

(1)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2