编译原理复习.docx

上传人:b****6 文档编号:2922285 上传时间:2022-11-16 格式:DOCX 页数:22 大小:164.97KB
下载 相关 举报
编译原理复习.docx_第1页
第1页 / 共22页
编译原理复习.docx_第2页
第2页 / 共22页
编译原理复习.docx_第3页
第3页 / 共22页
编译原理复习.docx_第4页
第4页 / 共22页
编译原理复习.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

编译原理复习.docx

《编译原理复习.docx》由会员分享,可在线阅读,更多相关《编译原理复习.docx(22页珍藏版)》请在冰豆网上搜索。

编译原理复习.docx

编译原理复习

1已知有限自动机如图

0.1

 

(1)以上状态转换图表示的语言有什么特征

(2)写出其正规式.

(3)构造识别该语言的确定有限自动机DFA.

[答案]

(1)至少含有两个连续的1的0,1组合

⑵(0I1)*11(0I1)*

0

1

A

A

AB

AB

A

ABC

ABC

AC

ABC

AC

AC

ABC

重新命名,令AB为B、ABC为C、AC为D

0

1

A

A

B

B

A

C

C

D

C

D

D

C

DFA:

2.试构造与下列文法G[S]等价的无左递归文法

G[S]:

S—SalNbIc

N—SdINeIf

[答案]

S—SaINbIc

N—NeISdIf

消除N—NeISdIf左递归:

N—SdNIfN'③

N—eN‘I£④

代入S—SaINbIc:

S—SaISdNbfNbc

消除S—SaISdNbIfN^blc左递归:

S—fN‘bS'lcS①

3.考虑下面文法G1:

S—aIAI(T)

T—T,SIS

消去G1的左递归。

然后对每一个终结符,写出不带回溯的递归子程序。

[答案]

S—aIAI(T)

T—ST'

T,ST'I&

Voidmatch(tokent)

{if(lookahead==t)

lookahead=nexttoken;

elseerror();}

voidS()

{if(lookahead=='a')match(‘a');

elseif(lookahead==A'

match(‘'

elseif(lookahead=='(')

{match(‘(');

T();

if(lookahead==')')match(‘)');

elseerror();}

elseerror();}voidT(){S();

T'();}

voidT'()

{if(lookahead==',')

{match(‘,');

S();

T'();}}

4.设有以下文法:

G[S]:

S—eEfGh|g

LFSG|h

F—SEc|cG|&

G^Sh|&

(1)求出该文法每一个非终结符的FOLLOW集。

(2)它是LL

(1)文法吗?

为什么?

[答案]

(1)

FIRST(S)={e,g}

FIRST(E)={h,c,e,g,}

FIRST(F)={c,e,g,&

FIRST(G)={e,g,&

FOLLOW(S)={#,e,g,h,c,f}

FOLLOW(E)={f,c}

FOLLOW(F)={e,g}

FOLLOW(G)={h,f,c,e,g}

(2)

e

f

g

h

c

#

S

SteEfGh

STg

E

Etfsg

Et£SG

Etfsg

Erh

Erfsg

Et£sg

F

FtSEc

FtSEc

FtcG

Ft£

Ft£

G

G^Sh

G^s

ASh

G^e

G^e

G^S

G^e

不是LL

(1)文法

5.设有文法:

G[S]:

StaBc|bAB

AtaAb|b

Btb|£

构造其LL

(1)分析表,并分析符号串baabbb是否是该文法的句子

[答案]

FIRST(S)={a,b}

FIRST(A)={a,b}

FOLLOW(S)={#}

FOLLOW(A)={b,#}

FIRST(B)={b,&FOLLOW(B)={c,#}

a

b

c

#

S

StaBc

StbAB

A

AtaAb

Atb

B

Btb

Bt£

Bt£

 

步骤

下推栈

输入串

动作

查分析表

1

#S

baabbb#

pop(S),push(bAB)

StbAB

2

#BAb

baabbb#

pop(b),next(ip)

匹配b

3

#BA

aabbb#

pop(A),push(aAb)

AtaAb

4

#BbAa

aabbb#

pop(a),next(ip)

匹配a

5

#BbA

abbb#

pop(A),push(aAb)

AtaAb

6

#BbbAa

abbb#

pop(a),next(ip)

匹配a

7

#BbbA

bbb#

pop(A),push(b)

Atb

8

#Bbbb

bbb#

pop(b),next(ip)

匹配b

9

#Bbb

bb#

pop(b),next(ip)

匹配b

10

#Bb

b#

pop(b),next(ip)

匹配b

11

#B

#

pop(B)

Bt£

12

#

#

正确结束

所以符号串baabbb是该文法的句子

6.下面文法是否是LL

(1)文法,说明理由

(1)S^Ab

2a|B|£

B^b|£

(2)S^aSe|B

B^bBe|C

SaCe|d

7.对下列文法G:

S'—S

P—S|i

S—D(R)

D—i

R—R;P|P

求出每个非终结符的FIRSTVT集和LASTVT集,并构造算符优先

关系表。

FIRSTVT(S')={(,i}

FIRSTVT(P)={i,(}

LASTVT(S')={)}

LASTVT(P)={),i}

i

7

#

i

>

>

>

<

>

<

>

<

<

<

=

):

>

>

>

#

<

<

=

LASTVT(R)={;,),i}

FIRSTVT(R)={;,i,(}

8.有文法G[S]:

SV

VT|ViT

TF|T+F

F)V*|(

(1)给出(+(i(的规范推导。

⑵指出句型F+Fi(的短语,句柄,素短语。

(3)G[S]是否为算符优先文法?

若是,给出

(1)中句子的分析过程

[答案]

(1)S=>V=>ViT=>ViF=>Vi(=>Ti(=>T+Fi(=>T+(i(=>F+(i(=>(+(i(

⑵句型F+Fi(的语法树:

TF

/IXI

T+F(

I

F

短语:

F,F+F,(,F+Fi(

句柄:

F

素短语:

(,F+F

(3)FIRSTVT禾口LASTVT

FIRSTVT

LASTVT

S

i,+,),(

i,+,*,(

V

i,+,),(

i,+,*,(

T

+,),(

+,(,*

F

),(,

*,(

(2)算符优先关系

i

+

*

#

i

>

<

>

<

<

>

+

>

>

>

<

<

>

*

>

>

>

>

>

>

>

>

<

<

<

<

#

<

<

<

<

因为任意两个终结符的优先关系唯一,所以该文法为算符优先文法

(3)(+(i(的分析过程

步骤

下推栈

输入串

动作

1

#

(+(i(#

#<(

移进

2

#(

+(i(#

(>+

归约F(

3

#F

+(i(#

#<+

移进

4

#F+

(i(#

+<(

移进

5

#F+(

i(#

(>i

归约F(

6

#F+F

i(#

+>i

归约TT+F

7

#T

i(#

#

移进

8

#Ti

(#

i<(

移进

9

#Ti(

#

(>#

归约F(

10

#TiF

#

i>#

归约VViT

11

#V

#

#=#

接受

9.设文法G(S)

S'—A

A—aA|b

构造识别文法G(S的所有活前缀的DFA.

[答案]

10=closure({Si.A})

10:

S'—.A

A—.aA

A—.b

11=closure(goto(IO,A))

I1:

S'—A.

12=closure(goto(I0,a))

I2:

A—a.A

A—.aA

A—.b

13=closure(goto(I0,b))

I3:

A—b.

14=closure(goto(I2,A))I4:

A—aA.closure(goto(I2,a))=I2closure(goto(I2,b))=I3

10.设文法G,试构造G的LR(0)分析表

G:

(1)S—CC

(2)C—cC

(3)C—d

[答案]

拓广为:

S—S

S—CC

C—cC

C—d

10=closure({S—・S})

10:

S'—・S

S—・CC

C—・cC

11=closure(goto(IO,S))

I1:

S'—S・

I2=closure(goto(I0,C))

I2:

S—C.C

C—.cC

C—.d

I3=closure(goto(I0,c))

I3:

C—c.C

C—.cC

C—.d

14=closure(goto(I0,d))I4:

C—d.

15=closure(goto(I2,C))I5:

S—CC.

closure(goto(I2,c)片I3closure(goto(I2,d))=I4

16=closure(goto(I3,C))I6:

C—cC.

closure(goto(I3,c)片I3closure(goto(I3,d))=I4

 

 

action

goto

c

d

#

S

C

0

S3

S4

1

2

1

acc

2

S3

S4

5

3

S3

S4

6

4

r3

r3

r3

5

r1

r1

r1

6

r2

r2

r2

11.对于文法A-aA|a构造SLR

(1)分析表

[答案]

(1)A—aA

(2)A—a

拓广为:

A'ta

AtaA

Ata

10=closure({A‘T.a})

I0:

A't.A

At.aA

At.a

11=closure(goto(IO,A))

I1:

A'tA.

12=closure(goto(I0,a))

I2:

Ata.A

At.aA

At.a

Ata.

13=closure(goto(I2,A))

I3:

AtaA.

closure(

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

当前位置:首页 > 表格模板 > 调查报告

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

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