习题及解答.docx

上传人:b****5 文档编号:28612502 上传时间:2023-07-19 格式:DOCX 页数:57 大小:225.58KB
下载 相关 举报
习题及解答.docx_第1页
第1页 / 共57页
习题及解答.docx_第2页
第2页 / 共57页
习题及解答.docx_第3页
第3页 / 共57页
习题及解答.docx_第4页
第4页 / 共57页
习题及解答.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

习题及解答.docx

《习题及解答.docx》由会员分享,可在线阅读,更多相关《习题及解答.docx(57页珍藏版)》请在冰豆网上搜索。

习题及解答.docx

习题及解答

 

第3章文法和语言

3.8练习(P44)

 

2.文法G[N]为:

N→D|ND

D→0|1|2|3|4|5|6|7|8|9|

G[N]的语言是什么?

解:

N

=>*

NDn-1

=>*.

Dn

=>*.

{0,1,3,4,5,6,7,8,9}+

∴L(G[N])={0,1,3,4,5,6,7,8,9}+

 

5.写一文法,使其语言是偶正数的集合。

要求:

(1)允许0打头

(2)不允许0打头解:

(1)允许0打头

1是正偶数:

S→AB

B→0|2|4|6|8A→AC|C

C→0|1|2|3|4|5|6|7|8|9|ε

1不是正偶数:

S→FABC|FE

A→1|2|3|4|5|6|7|8|9

B→BD|D

D→0|1|2|3|4|5|6|7|8|9|ε

C→0|E

E→2|4|6|8

F→F0|ε

(2)不允许0打头

S→ABC|E

A→1|2|3|4|5|6|7|8|9B→BD|D

D→0|1|2|3|4|5|6|7|8|9|ε

精选文库

 

C→0|E

E→2|4|6|8

 

9.考虑下面上下文无关文法:

S→SS*|SS+|a

(1)表明通过此文法如何生成串aa+a*,并为该串构造推导树。

(2)该文法生成的语言是什么?

解:

(1)S=>SS*

=>SS+S*

=>*.aa+a*

该串的推导树如下:

S

 

SS*

 

S+Sa

 

aa

 

(2)该文法生成的语言是只含+、*的算术表达式的逆波兰表示。

11.令文法G[E]为:

E→T|E+T|E-T

T→F|T*F|T/F

F→(E)|i

证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。

解:

∵E=>E+T=>E+T*F

∴E+T*F是文法G[E]的一个句型句型E+T*F的语法树如下:

 

E

 

E+T

 

T*F

 

—2

精选文库

 

∴E+T*F是句型E+T*F相对于非终结符E的短语

T*F是句型E+T*F相对于非终结符T的短语

T*F是句型E+T*F相对于规则T→T*F的直接短语

T*F是句型E+T*F的句柄

 

13.一个上下文无关文法生成句子abbaa的推导树如下:

(1)给出该句子相应的最左推导,最右推导。

(2)该文法的产生式集合P可能有哪些元素?

(3)找出该句子的所有短语,简单短语、句柄。

 

S

 

ABS

 

aSBBBAa

 

εbba

 

解:

(1)最左推导如下:

S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa

最右推导如下:

S=>ABS=>ABAa=>ABaa=>ASBBaa=>ASBbaa=>ASbbaa=>Abbaa=>abbaa

(2)该文法的产生式集合P可能有以下元素:

S→ABS|Aa|ε

B→SBB|b

A→a

(3)为方便叙述将句型

abbaa写作a1b1b2a2a3

该句子的短语有:

a1,

1,

2,

2,

12,23,11223

ε,bb

abbaaabbaa

该句子的直接短语有:

a1,

ε

1,

2,

2

bb

a

该句子的句柄为:

a1

 

16.给出生成下述语言的三型文法:

(2){anbm|n,m≥1}

解:

该语言的三型文法为:

G[S]:

S→aB

B→aB|C

C→bC|b

 

—3

精选文库

 

G[S]:

S→aS|aA

B→bA|b

 

第4章词法分析

4.7练习(P66)

 

1.构造下列正规式相应的DFA:

(4)b((ab)*|bb)*ab

解:

先将正规式转换为NFA,转换过程如下:

 

=>

b((ab)*|bb)*a

b

1

2

3

(ab)*|bb

=>

b

a

b

1

2

3

4

 

(ab)*

=>

b

a

b

1

2

3

4

 

bb

 

以下为最终所得的NFA图:

 

5

 

ba

4

εε

b

a

b

=>1

2

66

7

bb

3

 

然后,将此NFA转换为DFA:

转换关系矩阵如下表:

C

T

T

b

a

 

—4

精选文库

 

T={1}

Φ

T

={2,4}

0

1

T1={2,4}

T2={5,6}

T3={3}

T2={5,6}

Φ

T4={2,4,7}

T={3}

Φ

T

={2,4}

3

1

T={2,4,7}

T={5,6}

T

={3}

4

2

3

所得DFA图如下:

a

b

T1

a

b

T4

=>T0

T2

b

b

T3

b

 

最后,将此DFA化简后如下:

b

b

a

b

=>T0

T1

T2

T4

b

a

 

3.将图4.16确定化:

 

V

0

0

0

0,1

Z

S

Q

1

0,1

 

1

1

1

U

 

图4.16

 

解:

首先,将此NFA转换为DFA:

转换关系矩阵如下表:

C

T0={S}

T1={V,Q}

T2={U,Q}

T3={Z,V}

T4={V}

T5={Z,Q,U}

Ta

T1={V,Q}

T3={Z,V}

T4={V}

T6={Z}

T6={Z}

T3={Z,V}

Tb

T2={U,Q}

T2={U,Q}

T5={Z,Q,U}

T6={Z}

Φ

T5={Z,Q,U}

—5

精选文库

 

T6={Z}T6={Z}T6={Z}

所得DFA图如下:

 

=>T0

0

T1

0

T3

1

1

0

0,1

T2

1

T5

T6

 

0

T4

10,1

 

0

 

最后,将此DFA化简后如下:

 

=>T00

T1

10

1

 

T21T30,1

 

0

0

T4

 

7.给文法G[S]:

S→aA|bQ

T4

A→aA|bB|b

B→bD|aQ

Q→aQ|bD|b

D→bB|aA

E→aB|bF

F→bD|aE|b

构造相应的最小的DFA。

解:

首先,将正规式转换成NFA如下:

a

 

=>S

a

A

b

T

b

b

a

b

b

b

B

D

b

b

a

E

F

6

a

a

b

Q

精选文库

 

然后,将此NFA转换为DFA:

转换关系矩阵如下表:

C

T0={S}

T1={A}

T2={Q}

T3={Z,B}

T4={Z.D}

T5={D}

T6={B}

所得DFA图如下:

 

=>T0a

 

a

 

T4

b

b

Ta

T1={A}

T1={A}

T2={Q}

T2={Q}

T1={A}

T1={A}

T2={Q}

a

 

a

T1a

 

b

 

bT6

 

T2

Tb

T2={Q}

T3={Z,B}

T4={Z.D}

T5={D}

T6={B}

T6={B}

T5={D}

 

b

T5

 

b

b

 

T3

 

a

 

最后,将此DFA化简后如下:

a

a

a

=>T0

a,b

T3

T0

b

a

b

T5

 

b

 

—7

精选文库

 

8.给出下述文法所对应的正规式:

S→0A|1B

A→1S|1

B→0S|0

解:

由题意得:

A=1S|1,B=0S|0,S→0A|1B,将A,B右端代入S的产生式得:

S→0(1S|1)|1(0S|0)=01S|01|10S|10=(01|10)|(01|10)S

∴S→(01|10)|(01|10)S

∴S=(01|10)|(01|10)*

∴该文法所对应的正规式为:

(01|10)|(01|10)*

 

11.构造下述文法G[S]的确定自动机,并给出该文法的语言的正规式。

S∷=Aa|ε

A∷=Aa|Sb|a

解:

由左线型正规文法到

NFA的转换规则可得该文法的

NFA状态转换图为:

=>

a

A

a

Q

a

ε

b

S

转换关系矩阵如下表:

C

Ta

Tb

T={Q,S}

T={A}

T

={A}

0

1

1

T={A}

T={A,S}

Φ

1

2

T2={A,S}

T2={A,S}

T1={A}

所得DFA图如下:

b

=>

a,b

T1

a

T0

T2

a

 

第5章自顶向下语法分析方法

5.6练习(P90)

 

2.对下面的文法G:

E→TE′

E′→+E|ε

T→FT′

T′→T|ε

F→PF′

F′→*F′|ε

P→(E)|a|b|^

 

—8

精选文库

 

(1)计算这个文法的每个非终结符的FIRST集和FOLLOW集。

(2)证明这个文法是LL

(1)的。

(3)构造它的预测分析表。

解:

(1)由题意分析得可推导出ε的非终结符表为:

EE′TT′FF′P

否是否是否是否

各非终结符的FIRST集为:

FIRST(E)=FIRST(T)={(,a,b,^}

FIRST(E′)={+}∪{ε}={+,ε}

FIRST(T)=FIRST(F)={(,a,b,^}

FIRST(T′)=FIRST(T)∪{ε}={(,a,b,^,ε}

FIRST(F)=FIRST(P)={(,a,b,^}

FIRST(F′)={*}∪{ε}={*,ε}

FIRST(P)={(,a,b,^}

∴最终求得各非终结符的FIRST集为:

FIRST(E)={(,a,b,^}

FIRST(E′)={+,ε}

FIRST(T)={(,a,b,^}

FIRST(T′)={(,a,b,^,ε}

FIRST(F)={(,a,b,^}

FIRST(F′)={*,ε}

FIRST(P)={(,a,b,^}

各非终结符的FOLLOW集为:

FOLLOW(E)={#}∪FOLLOW(E′)∪{)}

FOLLOW(E′)=FOLLOW(E)

FOLLOW(T)=FOLLOW(T′)∪(FIRST(E′)-{ε∪})FOLLOW(E)

FOLLOW(T′)=FOLLOW(T)

FOLLOW(F)=(FIRST(T′)-{FOLLOW(F′)=FOLLOW(F)FOLLOW(P)=(FIRST(F′)-{

ε∪})FOLLOW(T)

∪FOLLOW(F′)

ε∪})FOLLOW(F)

∴最终求得各非终结符的FOLLOW集为:

FOLLOW(E)={#,)}

FOLLOW(E′)={#,)}

FOLLOW(T)={#,+,)}

FOLLOW(T′)={#,+,)}

FOLLOW(F)={(,a,b,^,#,+,)}

FOLLOW(F′)={(,a,b,^,#,+,)}

FOLLOW(P)={*,(,a,b,^,#,+,)}

(2)各产生式的SELECT集为:

SELECT(E→TE′)=FIRST(TE′)=FIRST(T)={(,a,b,^}SELECT(E′→+E)=FIRST(+E)={+}

SELECT(E′→ε)=(FIRST(-{ε)∪})FOLLOW(E′)=FOLLOW(E′)={#,)}SELECT(T→FT′)=FIRST(FT′)=FIRST(F)={(,a,b,^}

SELECT(T′→T)=FIRST(T)={(,a,b,^}

 

—9

精选文库

 

SELECT(T′→ε)=(FIRST(-{ε)∪})FOLLOW(T′)=FOLLOW(T′)={#,+,)}

SELECT(F→PF′)=FIRST(PF′)=FIRST(P)={(,a,b,^}

SELECT(F′→*F′)=FIRST(*F′)=FIRST(P)={*}

SELECT(F′→ε)=(FIRST(-{ε)∪})FOLLOW(F′)=FOLLOW(F′)={(,a,b,^,#,+,)}

SELECT(P→(E))=FIRST((E))={(}

SELECT(P→a)=FIRST(a)={a}

SELECT(P→b)=FIRST(b)={b}

SELECT(P→^)=FIRST(^)={^}

∴由以上结果得相同左部产生式的SELECT交集为:

SELECT(E′→+E)∩SELECT(E′→ε)={+}∩{#,)}

SELECT(T′→T)∩SELECT(T′→ε)={(,a,b,^)∩{#,+,)}=ΦSELECT(F′→*F′)∩SELECT(F′→ε)={*}∩{(,a,b,^,#,+,)}=Φ

SELECT(P→(E))∩SELECT(P→a)∩SELECT(P→b)∩SELECT(P→^)={(}∩{a}∩{b}∩{^}=Φ

∴相同左部产生式的SELECT集合的交集为空。

∴这个文法是LL

(1)的。

(3)由以上算出的SELECT集可以构造该文法的预测分析表如下:

+*()ab^#

E→TE′→TE′→TE′→TE′

E′→+E→ε→ε

T→FT′→FT′→FT′→FT′

T′→ε→T→ε→T→T→T→ε

F→PF′→PF′→PF′→PF′

F′→ε→*F′→ε→ε→ε→ε→ε→ε

P→(E)→a→b→^

 

7.对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL

(1)文法?

试对下面

文法进行改写,并对改写后的文法进行判断。

(2)A→aABe|a

(1)

B→Bb|d

(2)

(3)S→Aa|b

(1)

A→SB

(2)

B→ab(3)

解:

对于一个文法若消除了左递归,提取了左公因子后不一定是LL

(1)文法。

(2)将产生式

(1)提取左公因子后得:

A→a(ABe|ε)

进一步变换为文法G1:

A→aA′

A′→Abe

A′→ε

B→Bb|d

消除

(2)中的直接左递归,将B→Bb|d变换为:

B→dB′

B′→bB′|ε

 

—10

精选文库

 

该文法最终改写成的形式为:

A→aA′

A′→Abe|ε

B→dB′

B′→bB′|ε

对此改写后的文法进行判断其是否是LL

(1)文法。

由分析得可推导出ε的非终结符表为:

AA′BB′

否是否是

各非终结符的FIRST集为:

FIRST(A)={a}

FIRST(A′)=FIRST(A)∪{ε}={a,ε}

FIRST(B)={d}

FIRST(B′)={b}∪{ε}={b,ε}

各非终结符的FOLLOW集为:

FOLLOW(A)={#}∪(FIRST(B)-{ε})={#,d}

FOLLOW(A′)=FOLLOW(A)={#,d}

FOLLOW(B)={e}

FOLLOW(B′)=FOLLOW(B′)∪FOLLOW(B)={e}

各产生式的SELECT集为:

SELECT(A→aA′)=FIRST(aA′)={a}

SELECT(A′→ABe)=FIRST(ABe)=FIRST(A)={a}

SELECT(A′→ε)=(FIRST(-{ε)∪})FOLLOW(A′)=FOLLOW(A′)={#,d}

SELECT(B→dB′)=FIRST(dB′)={d}

SELECT(B′→bB′)=FIRST(bB′)={b}

SELECT(B′→ε)=(FIRST(-{ε)∪})FOLLOW(B′)=FOLLOW(B′)={e}

由以上结果得相同左部产生式的SELECT交集为:

SELECT(A′→ABe)∩SELECT(A′→ε)={a}∩{#,d}=Φ

SELECT(B′→bB′)∩SELECT(B′→ε)={b}∩{e}=Φ

∴相同左部产生式的SELECT集合的交集为空。

∴改写后的文法是LL

(1)的。

(3)该文法的非终结符S,A为间接左递归,以S,A,B为序消除一切左递归。

(1)的右部代入

(2)得:

A→AaB|bB

消除其直接左递归得:

A→bBA′

A′→aBA′|ε

此时文法变成如下形式:

S→Aa|b

(1)

A→bBA′

(2)

A′→aBA′|ε

B→ab

此文法中的

(1),

(2)产生式存在隐含的左公因子,消除隐含的左公因子后文法变成如下的形式:

 

—11

精选文库

 

S→bS′

S′→BA′a|ε

A→bBA′

A′→aBA′|ε

B→ab

此形式中A→bBA′是不可达的产生式,是多余的,所以应将其去掉。

所以文法最终改写成的形式为:

S→bS′

S′→BA′a|ε

A′→aBA′|ε

B→ab

相同左部产生式的SELECT集为:

SELECT(S′→BA′a)={a}

SELECT(S′→ε)={#}

SELECT(A′→aBA′)={a}

SELECT(A′→ε)={a}

相同左部产生式的SELECT交集为:

SELECT(S′→BA′a)∩SELECT(S′→ε)={a}∩{#}=Φ

SELECT(A′→aBA′)∩SELECT(A′→ε)={a}∩{a}≠Φ

∴关于A′的相同左部其产生式的SELECT集的交集不为空

∴此改写后的文法不是LL

(1)的。

第6章自底向上优先分析法

6.4练习(P116)

 

1.已知文法G[S]为:

S→a|^|(T)

T→T,S|S

(1)计算FIRSTVT和LASTVT。

(2)构造G[S]的算符优先关系表并说明G[S]是否为算符优先文法。

(3)计算G[S]的优先函数。

(4)给出输入串(a,a)#和(a,(a,a))#的算符优先分析过程。

解:

(1)由题意得:

FIRSTVT(S)={a,^,(}

FIRSTVT(T)=FIRSTVT(T)

∪{

,}∪FIRSTVT(S)={a,^,(,,}

LASTVT(S)={a,^,)}

LASTVT(T)=LASTVT(S)=

∪{

,}={{a,^,),,}

(2)由文法G[S]可知:

.关系有:

(.

.关系有:

∵有(T

∴(.

FIRSTVT(T)

.即(.

a.(

.

^

.

.

.

.

∵有,S

∴,

FIRSTVT(S)

即,

a

^

.

关系有:

.

.

.

.

.

∵有T)

∴LASTVT(T)

a

.

.

.

.

.

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1