编译原理作业0515答案.docx

上传人:b****5 文档编号:4958442 上传时间:2022-12-12 格式:DOCX 页数:11 大小:97.43KB
下载 相关 举报
编译原理作业0515答案.docx_第1页
第1页 / 共11页
编译原理作业0515答案.docx_第2页
第2页 / 共11页
编译原理作业0515答案.docx_第3页
第3页 / 共11页
编译原理作业0515答案.docx_第4页
第4页 / 共11页
编译原理作业0515答案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

编译原理作业0515答案.docx

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

编译原理作业0515答案.docx

编译原理作业0515答案

第3章作业【编辑人:

陈芳芳】

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

要求:

(1)允许0打头;

(2)不允许0打头。

【解】:

(1)允许0打头且含0的偶正整数集合的文法为:

N—>(0|D|E)N|(E|0)

D—>1|3|5|7|9

E—>2|4|6|8

(2)不允许0打头的偶正整数集合的文法为:

R—>(D|E)N|E

N—>(0|D|E)N|(E|0)

D—>1|3|5|7|9

E—>2|4|6|8

(3)允许0打头的偶正整数集合的文法为:

S—>0S|R

R—>(D|E)N|E

N—>(0|D|E)N|(E|0)

D—>1|3|5|7|9

E—>2|4|6|8

 

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

S

ABS

 

aSBBAa

Ɛbba

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

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

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

【解】:

(1)最左推导:

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

最右推导:

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

(2)产生式集合P:

S—>ABS|Aa|Ɛ

A—>a

B—>SBB|b

(3)短语:

a,Ɛ,b,bb,aa,abbaa

直接短语:

a,Ɛ,b

句柄:

a

 

3、给出生成下述语言的上下文无关文法:

(1){anbnambm|n,m>=0}

(2){1n0m1m0n|n,m>=0}

【解】:

(1)S—>AA

A—>aAb|Ɛ

(2)S—>1S0|A

A—>0A1|Ɛ

第4章课后作业

1.构造一个状态数最小的DFA,它接受∑={0,1}上所有倒数第二个字符为1的字符串。

(编辑:

张超)

解:

①构造正规式:

(0│1)*1(0│1)

②由正规式构造NFA:

③NFA转化为DFA:

T0=ε-closure({0})={0}

用子集构造法求DFA状态,T0为初态,T2,T3为终态。

状态

ε-closure(move(Ti,0))

ε-closure(move(Ti,1))

T0={0}

{0}

{0,1}

T1={0,1}

{0,2}

{0,1,2}

T2={0,2}

{0}

{0,1}

T3={0,1,2}

{0,2}

{0,1,2}

用0,1,2,3代表T0,T1,T2,T3,得到如下DFA:

④最小化DFA:

P0=({0,1},{2,3})

P1=({0},{1},{2},{3})

∴无等价状态。

∵没有找到多余状态,∴无多余状态。

∴上图为最小化的DFA。

2、将下图的NFA确定化为DFA,并最小化。

(编辑:

张超)

解:

用子集构造法求DFA状态,T0为初态,T3为终态。

状态

ε-closure(move(Ti,a))

ε-closure(move(Ti,b))

T0={X,1,2}

{1,2}

{1,2,3}

T1={1,2}

{1,2}

{1,2,3}

T2={1,2,3}

{1,2,Y}

{1,2,3}

T3={1,2,Y}

{1,2}

{1,2,3}

用0,1,2,3代表T0,T1,T2,T3,得到如下DFA:

最小化:

①{0,1,2}{3}

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

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

0和1是等价的,∴得到最小化的DFA如下:

第5-7章课后作业(含答案)

1、将文法G[S]改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

G[S]:

S→bSAe|bAA→Abd|dc|a

【解】:

G[S]:

S→bS’S’→SAe|A

A→(dc|a)A’A’→bdA’|ε

2、有文法G[S]:

S→ABfA→BbS|eB→dAg|ε

证明文法G是LL

(1)文法,并构造预测分析表

【解】:

①计算FIRST、FOLLOW、SELECT集

产生式

FIRST

FOLLOW

SELECT

左部

右部

S

ABf

dbe

#gdf

dbe

A

BbS

db

gdf

db

e

e

e

B

dAg

d

bf

d

ε

ε

bf

 

由上表可知:

该文法中,所有相同左部不同右部的产生式SELECT集两两相交均为空集,所以该文法为LL

(1)文法。

②构造预测分析表

f

b

e

d

g

#

S

ABf

ABf

ABf

A

BbS

e

BbS

B

ε

ε

dAg

3、已知文法G[S]:

S→(A)│a│bA→AcS│S构造文法的算符优先矩阵,并判断该文法是否是算符优先文法。

【解】:

①拓展该文法:

S’→#S#S→(A)│a│bA→AcS│S

②计算FIRSTVT与LASTVT:

FIRSTVT

LASTVT

S’

#

#

S

(ab

)ab

A

c(ab

c)ab

③计算算符优先关系:

#=#(=)

#

LASTVT(S)>#LASTVT(A)>)LASTVT(A)>c

④构造算符优先矩阵(注:

按终结符出现顺序列表):

a

b

c

#

<

=

<

<

<

>

>

>

a

>

>

>

b

>

>

>

c

<

>

<

<

>

#

<

<

<

=

⑤因为该文法G为2型文法,且不含空产生式,没有形如U→…VW…的产生式,其中V,W∈VN,所以G为算符文法;又因为G中任意两个终结符间至多有一种算符优先关系存在(算符优先矩阵无冲突,见上表),所以G为算符优先文法。

4、课后习题P122:

4

(2)

已知文法:

S→S;G|GG→G(T)|HH→a|(S)T→T+S|S

求句型a(T+S);H;(S)的短语、直接短语、句柄、素短语与最左素短语。

【解】:

①该句型的对应的语法树如下:

②短语:

aT+SH(S)a(T+S)a(T+S);Ha(T+S);H;(S)

直接短语:

aT+SH(S)

句柄:

a

素短语:

aT+S(S)

最左素短语:

a

5.给定文法G[A]:

A→(A)│a,构造出该文法的LR

(1)分析表。

【解】

①对该文法拓广,得其拓广文法G[S’]:

(0)S’→A

(1)A→(A)

(2)A→a

②计算其LR

(1)项目集规范族如下:

I0={[S’→.A,#],[A→.(A),#],[A→.a,#]}

I1=GOTO(I0,A)={[S’→A.,#]}

I2=GOTO(I0,()={[A→(.A),#],[A→.(A),)],[A→.a,)]}

I3=GOTO(I0,a)={[A→a.,#]}

I4=GOTO(I2,A)={[A→(A.),#]}

I5=GOTO(I2,()={[A→(.A),)],[A→.(A),)],[A→.a,)]}

I6=GOTO(I2,a)={[A→a.,)]}

I7=GOTO(I4,))={[A→(A).,#]}

I8=GOTO(I5,A)={[A→(A.),)]}

GOTO(I5,()=I5;GOTO(I5,a)=I6

I9=GOTO(I8,))={[A→(A).,)]}

③构造LR

(1)分析表:

Action表

Goto表

a

#

A

0

S2

S3

1

1

acc

2

S5

S6

4

3

r2

4

S7

5

S5

S6

8

6

r2

7

r1

8

S9

9

r1

6、证明文法S→bBB→B*aB→a

不是LR(0)文法,而是SLR

(1)文法。

【解】

①对该文法拓广,得其拓广文法G[S’]:

(0)S’→S

(1)S→bB

(2)B→B*a(3)B→a

②计算其LR(0)项目集规范族如下:

I0=closure{S’→.S}={S’→.S,S→.bB}

I1=GOTO(I0,S)={S’→S.}

I2=GOTO(I0,b)={S→b.B,B→.B*a,B→.a}

I3=GOTO(I2,B)={S→bB.,B→B.*a}

I4=GOTO(I2,a)={B→a.}

I5=GOTO(I3,*)={B→B*.a}

I6=GOTO(I5,a)={B→B*a.}

③因为该文法的LR(0)项目集规范族中有一个项目集I3同时存在移进项目与归约项目,即“移进-归约”冲突,所以不是LR(0)文法。

I3={S→bB.,B→B.*a}

而,FOLLOW(S)={#}

Follow(S)∩{*}=φ

即可采用Follow集能解决其冲突,所以该文法是SLR

(1)文法。

7.给出下面赋值语句的逆波兰式:

x:

=a*(b+c)-d/e

【解】xabc+*de/–:

=

8.把下列语句翻译成四元式(四元式的编号从100开始)。

whileA∨B∧~C∨Ddo

ifa>bthenx:

=m-k

elsey:

=m+k;

【解】对应的四元式序列为:

100(Jnz,A,,108)

101(J,,,102)

102(Jnz,B,,104)

103(J,,,106)

104(Jnz,C,,106)

105(J,,,108)

106(Jnz,D,,108)

107(J,,,116)

108(J>,a,b,110)

109(J,,,113)

110(-,m,k,T1)

111(:

=,T1,,x)

112(J,,,100)

113(+,m,k,T2)

114(:

=,T2,,y)

115(J,,,100)

116

 

友情提示:

部分文档来自网络整理,供您参考!

文档可复制、编制,期待您的好评与关注!

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

当前位置:首页 > 高等教育 > 军事

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

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