程序设计语言编译原理第3版课后答案docx.docx

上传人:b****7 文档编号:26320226 上传时间:2023-06-17 格式:DOCX 页数:45 大小:530.75KB
下载 相关 举报
程序设计语言编译原理第3版课后答案docx.docx_第1页
第1页 / 共45页
程序设计语言编译原理第3版课后答案docx.docx_第2页
第2页 / 共45页
程序设计语言编译原理第3版课后答案docx.docx_第3页
第3页 / 共45页
程序设计语言编译原理第3版课后答案docx.docx_第4页
第4页 / 共45页
程序设计语言编译原理第3版课后答案docx.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

程序设计语言编译原理第3版课后答案docx.docx

《程序设计语言编译原理第3版课后答案docx.docx》由会员分享,可在线阅读,更多相关《程序设计语言编译原理第3版课后答案docx.docx(45页珍藏版)》请在冰豆网上搜索。

程序设计语言编译原理第3版课后答案docx.docx

程序设计语言编译原理第3版课后答案docx

第二章

P36-6

L(G)是o~9组成的数字串

最左推导:

N=ND二NDD二NDDD=DDDD二ODDD二01DD=012D二0127

N=ND二DD二3D=34

N=ND二NDD二DDD二5DD=56D=568

最右推导:

N=ND二N7=ND7二N27二ND27=N127二D127=0127

N=ND二N4二D4二34

N=ND二N8=ND8=N68=D68二568

P36-7

G(S)

O>1|3|5|7|9

N>2|4|6|8|O

D>0|N

S>O|AO

A—;AD|N

P36-8

文法:

ETTE+T|E—T

TtFT*F|T/F

F>(E)|i

最左推导:

E=ET=TT=FT=iT=iT*F=iF*F=ii*F=ii*i

E二T=T*F二F*F二i*F=i*(E)二i*(ET)二i*(TT)二i*(FT)

=i*(iT)二i*(iF)=i*(ii)

最右推导:

E=ET~ET*F=ET*i=EF*i=Ei*i=Ti*i=Fi*i=ii*i

E=T=F*T=F*F=F*(E)=F*(ET)=F*(EF)=F*(Ei)

二F*(Ti)二F*(Fi)二F*(ii)=i*(ii)

^语法树./********************************

E

TFi

E

FFi

E

TFi

i

i+i+i

i-i-i

i

i+i*i

***************

**/

 

 

P36-9

句子iiiei有两个语法树:

S=iSeS=iSei=iiSei=iiieiS=iS=iiSeS=iiSei=iiiei

P36-10

/**************

S>TS|T

T>(S)|()

***************/

P36-11

/***************

L1:

S>AC

A—aAb|abC—cC|;

L2:

S>AB

A—:

aA|;

B—bBc|bc

L3:

S>AB

AraAb|;

B>aBb|;

L4:

S>A|B

A)0A1|;

B>1B0|A

*************

**/

 

 

第三章习题参考答案

 

P64-7

 

确定化:

0

1

{X}

0

{1,2,3}

0

0

0

{1,2,3}

{2,3}

{2,3,4}

{2,3}

{2,3}

{2,3,4}

{2,3,4}

{2,3,5}

{2,3,4}

{2,3,5}

{2,3}

{2,3,4,Y}

{2,3,4,Y}

{2,3,5}

{2,3,4,}

 

最小化:

{0,1,2,3,4,5},{6}

{0,123,4,5}。

={135}{0,123,4,5^={1,2,4©

{0,1,2,3,4},{5},{6}

{0,123,4}。

二{1,3,5}

{0,1,23,{4},{5},{6}

{0,1,23°二{1,3}{0,1,2,3}厂{1,2,4}

{0,1},{2,0}{4},{$,{6

{0,1}0={1}{0,1}厂{1,2}

{2,3}厂{3{23厂{4}

{0},{1},{2,3},{4},{5},{6}

P64-8

(1)

(1|0)*01

⑴2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|(0|5)

0*1(0|10*1)*|1*0(0|10*1)*

P64-12

 

a

b

{0}

{0,1}

{1}

{0,1}

{0,1}

{1}

{1}

{0}

0

0

0

0

 

给状态编号:

a

b

0

1

2

1

1

2

2

0

3

3

3

3

{0,1},{2,3}

{0,1}a二{1}{0,叽二⑵

{2,3}a二{0,3}{2,3}b二{3}

{0,1},{2},{3}

已经确定化了,进行最小化

最小化:

{{0,1},{2,3,4,5}}

{0,1}a={1}{0,叽二{2,4}

{2,3,4,5爲={1,3,0,5}{2,3,4,5}b二{2,3,4,5}

{2,4}a二{1,0}{2,4}b二{3,5

{3,5}a二{3,5}{3,恥={2,4}

{0,1}严{2,4}

{2,4打二{3,5

{3,5}厂{2,4}

{{0,1},{2,4},{3,5}}

{0,1}a二{1}

{2,4}a二{1,0}

{3,5}a二{3,5}

确定化:

0

1

{X,1,Y}

{1,Y}

{2}

{1,Y}

{1,Y}

{2}

{2}

{1,Y}

0

0

0

0

给状态编号:

 

0

1

0

1

2

1

1

2

2

1

3

3

3

3

 

最小化:

{0,1},{2,3

{0,1}0二{1}{0,1}1二{2}

{2,3}o={1,3}{2,3}^{3}

{0,1},{2},{3}

P81-1

(1)按照T,S的顺序消除左递归

G(S)

S>aFI仃)

T>ST

TrSTI;

递归子程序:

procedureS;

begin

ifsym='a'orsym='人'

thenabvanee

elseifsym='('

thenbegin

advance;T;

ifsym=')'thenadvanee;elseerror;

end

elseerror

end;

procedureT;

begin

S;T

end;

procedureT;

begin

ifsym=','

thenbegin

advanee;

S;T

end

end;

其中:

sym:

是输入串指针IP所指的符号

advanee:

是把IP调至下一个输入符号error:

是出错诊察程序

FIRST(S)={a],(}

FIRST(T)={af,(}

FIRST(T)={,,;}

FOLLOW(S)={),,,#}

FOLLOW(T)={)}

FOLLOWT)={)}

预测分析表

a

A

J

#

S

Sta

St八

St(T)

T

:

TtS「

:

TtST

TtST

TJ名

T't,ST

是LL

(1)文法

P81-2

文法:

E>TE

E|;

T>FT

T》T|;

F-PF

F>*F|;

P>(E)|a|bF

(1)

FIRST(E)={(,a,bf}

FIRST(E')={+,£}

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

FIRST(T')={(,a,b,A,£}

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

FIRST(F')={*,£}

FIRST(P)={(,a,bf}

FOLLOW(E)={#,)}

FOLLOW(E')={#,)}

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

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

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

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

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

考虑下列产生式:

E,E|;

TJT|:

FJ*F|:

P>(E)|A|a|b

FIRST(+E)AFIRST(£)={+}n{£}=$

FIRST(+E)AFOLLOW(E')={+}A{#,)}=$

FIRST(T)AFIRST(£)={(,a,b,A}A{£}=$FIRST(T)AFOLLOW(T')={(,a,b,A}A{+,),#}=$

FIRST(*F')AFIRST(£)={*}A{£}=$

FIRST(*F')AFOLLOW(F')={*}A{(,a,b,A,+,),#}=$

FIRST((E))AFIRST(a)AFIRST(b)AFIRST(A)=$所以,该文法式LL

(1)文法.

+

*

a

b

A

#

E

EtTE'

EtTE'

EtTE'

EtTE'

E'

EJ+E

EJ名

EJs

T

TtFTh

TtFTh

TtFTh

TtFT

T'

TJE

TJT

T't名

TJT

T'tT

TJT

TJs

F

FtPF*

FtPL

FtPL

FtPF'

F'

FJs

F't*F‘

:

FJE

FJ呂

FJg

FJs

FJ名

FJ名

P

Pt(E)

Pta

Ptb

Pta

procedureE;

begin

ifsym='('orsym='a'orsym='b'orsym='人'thenbeginT;E'endelseerror

end

procedureE:

begin

ifsym='+'

thenbeginadvanee;Eend

elseifsym<>')'andsym<>'#'thenerrorend

procedureT;

begin

ifsym='('orsym='a'orsym='b'orsym='人'thenbeginF;T'endelseerror

end

procedureT';

begin

ifsym='('orsym='a'orsym='b'orsym='人'thenT

elseifsym='*'thenerror

end

procedureF;

begin

ifsym='('orsym='a'orsym='b'orsym='人'thenbeginP;F'endelseerror

end

procedureF';

begin

ifsym='*'

thenbeginadvanee;F'end

end

procedureP;

begin

ifsym='a'orsym='b'orsym='A'

thenadvanee

elseifsym='('then

begin

advanee;E;

ifsym=')'thenadvanee

elseerror

end

elseerror

end;

P81-3

/***************

(1)是,满足三个条件。

(2)不是,对于A不满足条件3。

(3)不是,A、B均不满足条件3。

(4)是,满足三个条件。

***************/

第五章

P133-1

E=ET二ET*F

短语:

E+T*F,T*F,

直接短语:

T*F

句柄:

T*F

P133-2

文法:

S>afl(T)

T>T,S|S

(1)

最左推导:

S=(T)二(T,S)=(S,S)二(a,S)=(a,(T))=(a,(T,S))=(a,(S,S))=(a,(a,S))二(a,(a,a))

S=(T,S)二(S,S)二((T),S)=((T,S),S)=((T,S,S),S)=((S,S,S),S)二(((T),S,S),S)

=(((T,S),S,S)),S)=(((S,S),S,S),S)=(((a,S),S,S),S)=(((a,a),S,S),S)

=(((a,a),A,S),S)=(((a,a),A,(T)),S)=(((a,a),A,(S)),S)=(((a,a),A,(a)),S)

二(((a,a)f,(a)),a)

最右推导:

S二(T)二(T,S)二(T,(T))二(T,(T,S))二(T,(T,a))二(T,(S,a))二(T,(a,a))

=(S,(a,a))=(a,(a,a))

s=(T,s)二(T,a)二(S,a)二((T),a)二((T,S),a)二((T,(T)),a)=((T,(S)),a)

=((T,(a)),a)二((T,S,(a)),a)二((T,\(a)),a)二((S,\(a)),a)二(((T)“,(a)),a)=(((T,S)“,(a)),a)=(((T,a)“,(a)),a)二(((S,a)“,(a)),a)二(((a,a)“,(a)),a)⑵

(((a,a),A,(a)),a)

(((S0],(a)),a)

(((T,a),A,(a)),a)(((LSV,(a)),a)

(((TL,A,(a)),a)

((S,A,(a)),a)((T,A,(a)),a)

((TS,(a)),a)

((T,(a)),a)

((T,(S)),a)

((T,(T)),a)

((TS),a)

((IL,a)

(S,a)

(TS)

(T)_

S

“移进-归约”过程:

步骤

输入串

动作

0

#

(((a,a),A,(a)),a)#

预备

1

#(

((a,a),A,(a)),a)#

2

#((

(a,a),A,(a)),a)#

3

#(((

a,a),A,(a)),a)#

4

#(((a

a),A,(a)),a)#

5

#(((S

a),A,(a)),a)#

6

#(((T

a),A,(a)),a)#

7

#(((T,

a),A,(a)),a)#

8

#(((T,a

),A,(a)),a)#

9

#(((T,S

),A,(a)),a)#

10

#(((T

),A,(a)),a)#

11

#(((T)

A,(a)),a)#

12

#((S

A,(a)),a)#

13

#((T

A,(a)),a)#

14

#((T,

A,(a)),a)#

15

#((T,a

(a)),a)#

16

#((T,S

(a)),a)#

17

#((T

(a)),a)#

18

#((T,

(a)),a)#

19

#((T,(

a)),a)#

20

#((T,(a

)),a)#

21

#((T,(S

)),a)#

22

#((T,(T

)),a)#

23

#((T,(T)

),a)#

24

#((T,S

),a)#

25

#((T

),a)#

26

#((T)

a)#

27

#(S

a)#

28

#(T

a)#

29

#(T,

a)#

30

#(T,a

)#

31

#(T,S

)#

32

#(T

)#

33

#(T)

#

34

#S

#

P133-3

(1)

FIRSTVT(S)={a],(}FIRSTVT(T)={,,a】,(}LASTVT(S)={a],)}LASTVT(T)={,,a】,)}⑵

a

A

5

a

>

>

A

>

>

<

<

<

=

<

>

>

5

<

<

<

>

>

G6是算符文法,并且是算符优先文法

 

(3)优先函数

a

A

5

f

4

4

2

4

4

g

5

5

5

2

3

 

 

(4)

输入字符串

动作

#

(a,(a,a))#

预备

#(

a,(a,a))#

#(a

(a,a))#

#(t

(a,a))#

#(t,

(a,a))#

#(t,(

a,a))#

#(t,(a

a))#

#(t,(t

a))#

#(t,(t,

a))#

#(t,(t,a

))#

#(t,(t,s

))#

#(t,(t

))#

#(t,(t)

)#

#(t,s

)#

#(t

)#

#(t)

#

#s

#

success

P134-5

(1)

0.SrS1.SrS■2.S'AS3.SrAS

4.SrAS-5.Srb6.Srb■7.ArSA

8.A—「SA9.ArSA-10.Ara11.A—「a-

 

确定化:

S

A

a

b

{0,2,5,7,10}

{1,2,5,7,8,10

}

{2,3,5,7,10}

{11}

{6}

{1,2,5,7,8,10

{2,5,7,8,10}

{2,3,5,7,9,10

{11}

}

}

{2,3,5,7,10}

{2,4,5,7,8,10

}

{2,3,5,7,10}

{11}

{6}

{2,5,7,8,10}

{2,5,7,8,10}

{2,3,5,7,9,10

}

{11}

{6}

{2,3,5,7,9,10

}

{2,4,5,7,8,10

}

{2,3,5,7,10}

{11}

{6}

{2,4,5,7,8,10

}

{2,5,7,8,10}

{2,3,5,7,9,10

}

{11}

{6}

{11}

0

0

0

0

{6}

0

0

0

0

DFA

构造LR(O)项目集规范族也可以用GO函数来计算得到。

所得到的项目集规范族与上图中的

项目集一样:

l0={SrS,SrAS,Srb,A「SA,A「a}

G0(|0,a)={A—a}=li

GO(10,b)={Srb}=12

G0(|0,S)={SrS,ArSA,ArSA,A「a,SrAS,Srb}=I3

G0(|0,A)={

S>AS,

S

>AS,

S>

b,

A》SA,

A>

a}=I

4

GO(13,a)={

A—;a

}=I

1

G0(|3,b)={

Srb

}=I

2

GO(13,S)={

A—:

SA,

S>

AS,

S>

b,A_SA,

A>

a}=I5

G0(|3,A)={

A>SA,

S>

AS,

S>

AS,

S—b,

A>

SA,

A>

a

}=I6

G0(|4,a)={

Ara

}=I

1

G0(|4,b)={

S》b

}=I

2

G0(|4,S)={

S>AS■,

A>

SA,

S)

AS,

Srb,

A)

SA,

A>

a

}=I7

G0(I4,A)={

S>AS,

S

>AS,

S>

b,

A》SA,

A>

a}=I

4

G0(15,a)={

Ara

}=I

1

G0(15,b)={

Srb

}=I

2

G0(I5,S)={

A—:

SA,

S>

AS,

S>

b,A—rSA,

A>

a}=15

G0(l5,A)={

A>SA,

S>

AS,

S>

AS,

Srb,

A>

SA,

A>

a

}=I6

G0(16,a)={

A—a

}=I

1

G0(16,b)={

Srb

}=I

2

G0(I6,S)={

S■■AS■,

A>

SA,

S—

AS,

Srb,

A>

SA,

A>

a

}=I7

GOg,A)={

S>AS,

S—

>AS,

S—

b,,

A》SA,

A>

a}=I

4

G0(17,a)={

A—a

}=I

1

G0(17,b)={

S」b

}=I

2

G0(I7,S)={

A>SA,

S—

AS,

S—

b,ArSA,

A>

a}=15

G0(l7,A)={

A—SA■,

S—■

AS,

S—■

AS,

Srb,

A>

SA,

A>

a

}=I6

项目集规范族为

C={11,I

2,I

3,I4,

I5,

丨6,1

17}

⑶不是SLR文法

状态3,6,7有移进归约冲突

状态3:

FOLLOW')={

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

当前位置:首页 > 解决方案 > 营销活动策划

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

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