编译原理及编译程序构造部分课后答案Word格式.docx

上传人:b****5 文档编号:20724082 上传时间:2023-01-25 格式:DOCX 页数:23 大小:97.41KB
下载 相关 举报
编译原理及编译程序构造部分课后答案Word格式.docx_第1页
第1页 / 共23页
编译原理及编译程序构造部分课后答案Word格式.docx_第2页
第2页 / 共23页
编译原理及编译程序构造部分课后答案Word格式.docx_第3页
第3页 / 共23页
编译原理及编译程序构造部分课后答案Word格式.docx_第4页
第4页 / 共23页
编译原理及编译程序构造部分课后答案Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

编译原理及编译程序构造部分课后答案Word格式.docx

《编译原理及编译程序构造部分课后答案Word格式.docx》由会员分享,可在线阅读,更多相关《编译原理及编译程序构造部分课后答案Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

编译原理及编译程序构造部分课后答案Word格式.docx

cc,bcc,bbcc,bbbc&

L[G]

(1)〈A>=>cc

(2)〈A〉=>b〈A〉=>bcc

(3)〈A>=>b〈A>=>bb〈A>=>bbcc

(4)〈A>=>b〈A>=>bb〈A>=>bbb〈A>=>bbbcc

又tcc,bcc,bbcc,bbbccEVt*

二由语言定义,cc,bcc,bbcc,bbbcdEL[G]

5试对如下语言构造相应文法:

(1){a(bn)a|n=0,1,2,3,……},其中左右圆括号为终结符。

(2){(an)(bn)|n=1,2,3,}

(1)文法[G〈S>]:

S:

=a(B)a

B:

=bB|&

(2)文法[G〈S>]:

--错了,两个n不等

S:

二(A)(B)

A:

=aA|a

=bB|b

7•对文法G3[〈表达式〉]

〈表达式〉:

二〈项〉|〈表达式〉+〈项〉|〈表达式〉-〈项〉

〈项〉:

=〈因子〉|〈项〉*〈因子〉|〈项〉/〈因子〉

〈因子〉:

=(〈表达式〉)|i

列出句型〈表达式〉+〈项〉*〈因子〉的所有短语和简单短语

<表达式>=><表达式>+<项>

=><表达式>+<项>*<因子>

<表达式〉

<表达式〉+<项>

<项>*<因子〉

短语有:

〈表达式〉+〈项〉*〈因子〉和〈项〉*〈因子〉简单短语是:

〈项〉*〈因子〉

8文法V:

=aaV|bc的语言是什么?

?

L(G[V])={a2nbc|n二0,1,2,……}

V?

aaV?

aaaaV?

....?

a2nbc(n>

1)

bc(n=0)

练习2.4

5.已知文法G[E]:

E:

=ET+|T

T:

=TF*|F

F:

=FP?

|P

P:

=(E)|i有句型TF*PPf+,问此句型的短语,简单短语,和句柄是什么?

解:

此句型的短语有:

TF*PPf+,TF*,PPf,P简单短语有:

TF*,P句柄是:

TF*

8.证明下面的文法G是二义的:

=iSeS|iS|i

由文法可知iiiei是该文法的句子,

又由文法可知iiiei有两棵不同的语法树所以该文法是二义性文法。

第三章

练习3.1

1画出下述文法的状态图

〈Z>

:

〈B>

e

=

〈A>

f

e|〈A>

使用该状态图检查下列句子是否是该文法的合法句子

f,eeff,

eefe

J*"

>

■^1.、"

s.

S—-―>

AV―B1—MZ'

eeff不是该文法的合法句子,eefe是该文法的合法句子

2、有下列状态图,其中S为初态,Z为终态。

(1)写出相应的正则文法:

(2)写出该文法的V,Vn和Vt;

(3)该文法确定的语言是什么?

(1)Z—A1|0A—A0|0

(2)V={A,Z,0,1}

Vn={A,Z}

Vt={0,1}

(3)L(G[S])={0或On1,n》1}

L(G[S])={0|00*1}

练习3.2

1.令A,B,C是任意正则表达式,证明

以下关系成立:

A|A=A

(A*)*=A*

A*=&

|AA*

(AB)*A=A(BA)*

(A|B)*=(A*B*)*=(A*|B*)

证明:

⑴AIA={xIx€L(A咸x€L(A)}={

xIx€L(A)}=A

A*)*=(A*)0U(A*)1U(A*)2U-U(A*)n

=&

U(AOUA1UA2U-UAn)U(A1…)

UAOUA1UA2U-UAn

=A*

⑶e|AA*所表示的语言是:

}ULA•LA*

=LAOULA(LAOULA1ULA2U…)

=LAOULA1ULA2U-=LA*

故£

|AA*=A*

(LALB)*LA=(£

{}UL(A)LBULALBLALBULALBLALBLALB

U…)LA

=LAULALBLAULALBLALBLUALALBLALBL

ALBULA…

=LAU({£

}ULBLAULBLALBLAJ…)

=LA(LBLA)

•••(AB)*A=A(BA)*

⑸三个表达式所描述的语言都是LALB中

任意组合

•(A|B)*=(A*B*)=(A*|B*)*

2.构造下列正则表达式相应的DFA

(1)1(O|1)*|O

(2)1(1O1O*|1(O1O)*1)*O

•⑴与1(0|1)*|0对应的NFA为:

4.

 

4

fl

1

[OJ;

i|

0J

!

}

(OJ!

inI

b

]

(T

每个1

5.构造一DFA它接受艺={0,1}上所有满足如下条件的字符串:

都有0直接跟在右边。

A

*-

L

Jj0

第四章

练习4.2

2.有文法G[A]:

=(B)|dBe

=c|Bc

试设计自顶向下的语法分析程序

消除左递归:

=c{c}procedureB;

ifCLASS='

c'

thenbeginnextsym;

whileCLASS='

donextsym;

end;

elseerror;

programG;

begin

nextsym;

A;

procedureA;

('

thenbeginnextsym;

B;

)'

thennextsym;

elseerrorend;

else

d'

e'

thennextsym;

end;

else

error;

3.有文法G[Z]:

Z:

=AcB|Bd

=AaB|c

(1)试求各选择(候选式)的FIRST集合;

(2)该文法的自顶向下的语法分析程序是否要编成递归子程序?

为什么?

(3)试用递归下降分析法设计其语法分析程序。

解:

(1)FIRST(B)={a}FIRST(A)={c}FIRST(Z)={a,c}FIRST(AcB)={c}FIRST(Bd)={a}

FIRST(AaB)={c}FIRST(c)={c}

FIRST(aA)={a}FIRST(a)={a}

(2)要编成递归子程序,因为文法具有递归性

(3)改写文法:

Z:

=c{aB}

=a[A]

voidZ(){

=AcB|Bd

A:

if(sym=4c,)

j

=a|A|

i

AO;

if(sym=叱J

voidA()

voidBO

{”

{

KctsymO;

iffsym==P"

iffsym!

=4ha,)

B();

error();

getsyniQ;

J

eke

whilefsym——妝)

crror();

getsym();

geteymO;

iRsym=

elseiffsym=W)

B();

A();

I

if(svin!

-

errorO;

vise

voidmain()

getsymO;

getnym();

Z();

*——

练习4.3

1.对下面的文法G[E]:

EfTE'

E'

f+E|£

TfFT'

T'

fT|£

FfPF'

F'

f*F'

Pf(E)|a|b|A

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

⑵证明这个文法是LL(1的

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

(1)

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

FOLLOW(E)={#,)}

FIRST(E'

)={+,门

FOLLOW(E'

)={#,)}

FIRST(T)={(,a,bA,}

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

FIRST(T'

)={(,a,bA,£

}

FOLLOW(T'

)={#,),+}

FIRST(F)={(,a,bA,}

FOLLOW(F)={(,a,bA,,#,),+}

FIRST(F'

)={*,£

FOLLOW(F'

)={(,a,bA,,#,),+}

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

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

(2)证明:

FIRST(+E)AFIRST£

)={+}A{&

}=/

FIRST(+E)AFOLLOW(E'

)={+}A{#,)}=/

FIRST(T)AFIRST£

)={(,a,b,A}A{£

}=/

FIRST(T)AFOLLOW(T'

)={(,a,bA}门倂,),+}=/

FIRST(*F'

)AFIRST£

)={*}A{&

)AFOLLOW(F'

)={*}{(,a,b,A,#,),+}=/

FIRST((E)AFIRST(a)AFIRST(b)AFIRSTA)二/

所以此文法是LL

(1)文法

(3)分析表

+

*

)「

a

#

E

EtTE'

E-k

TE

E—>

TEh

EtTE'

Er

E1t+E

EJe

T

T「IT

T—

FT1

TtFT

TtF『

TJ;

T1->

T—s

TJT

丁JT

TJe

F

FtPF

Ftpp

FJe

T*F

->

e

Fj

F->

FT

TE

FJe

Pt(E)

P->

P—>

2.对于文法G[S]:

S—aABbcd|&

A—ASd|£

B—SAh|eC|£

C—Sf|Cg|£

D—aBD|£

(1)对每一个非终结符号,构造FOLLOW集;

(2)对每一产生式的各侯选式,构造FIRST!

;

(3)指出此文法是否为LL

(1)文法。

(1)FIRST(S)={a£

FIRST(A)={a,d,£

FIRST(C)={a,f,g,门

FIRST(D)={a,门

FOLLOW(S)={d,a,f,h#}

FOLLOW(A)={a,h,e,b,d}

FOLLOW(B)={b,a}

FOLLOW(C)={g,b,a}

(2)FIRST(aABbcd)={a}

FIRST(£

)={£

FIRST(ASd)={a,d}

FIRST(SAh)={a,d,h}

FIRST(eC)={e}

FIRST(Sf)={a,f}

FIRST(Cg)={a,f,g}

⑶不是LL(1文法,因

FIRST(Sf)AFIRST(Cg)={a,f}{a,f,g产

或FOLLOW(S)AFIRST(aABbcd){d,a,f,h#}A{a}^/或FOLLOW(A)AFIRST(ASd){a,h,e,b,d}A{a,d或FOLLOW(B)AFIRST(SAh){a,b}A{a,d,h}*或FOLLOW(C)AFIRST(Sf){g,a,b}A{a,fH

或FOLLOW(C)QFIRST(Cg){g,a,b}A{a,f,g}^/

6.一个文法G是LL(1的必要与充分条件是什么?

试证明之。

充要条件是:

对于G的每一个非终结符A的任何两条不同规则A:

=a

|B,有:

(1)FIRSTa)AFIRST0)=/

⑵假若B=*=>

£

贝卩FIRSTa)AFOLLOW(A)二

充分性:

条件(

条件

(1)

(2)成立反证:

若分析表中存在多重入口,即

)成立

反证:

M[B,a]={B:

=a1,B:

=a2},表明FIRSTS1)AFIRSTa2)T或M[B,a]={B:

=a2},其中a2=£

或a2=+=>

表明FIRSTa1)AFOLLOW(B)^/

与条件

(1)

(2)矛盾。

必要性:

文法是

)矛盾。

文法是LL

(1)文法,即分析表中不含多重入口

若条件

文法,即分析表中不含多重入口

若条件

(1)不成立,即存在某非终结符B的两条规则B:

=a1|a2,

FIRST®

1)nFIRST®

2)/

则对任意的a€FIRST®

2),有

=a2},矛盾

若条件(

矛盾

若条件

(2)不成立,即存在某非终结符B的两条规则B:

a2=*=>

有first®

1)nFOLLOW(B)M^

1)nFOLLOW(B)有

练习4.4

4.有文法G[E]:

E:

=E+T|T

=T*F|F

=(E)|i

列出下述句型的短语和素短语:

E、T、i、T*F、F*F、i*F

、F*i、F+F+F

句型

短语

素短语

«

■■

V

t*f

T*F

F*F

RF

i*F

i,i*F

F*i

F,i,F*i

F+F+F

F,F,F,F+F,F+F+F

F+F

练习4.5

1.考虑具有下列规则的文法

S—E#E—T|E+TT—P|PfTP—F|P*FF—i|(E)

(a)下列句型的最右推导步骤中,其活前缀的集合是什么?

(1)E+i*i#

(2)E+Pf(i+i)#

(b)

为下列输入串构造最右推导的逆:

(1)i+i*i#

(2)i+if(i+i)#

(a)

(1)句柄为i,所以活前缀集合为:

E,E,E+i

(2)句柄为i,所以活前缀集合为:

E,E+,E+P,E+Pf,E+Pf(,E+P

f(I

(b)

(1)

i+i*i#

<

F+i*i#

P+i*i#

T+i*i#

E+i*i#

E+F*i#

E+P*i#

E+P*F#

E+P#

E+T#

E#

S

练习4.6

1.给定具有如下产生式的文法

S—E#EtE-T|TTtF|FfTF—i|(E)

试求下列活前缀的有效项目集:

(a)Ff(b)E-((c)E-T

(a)Ef

{Tt.FTtFf.TTt.FfTFt.iFt.(E)}

(b)E-(

{Ft(.E),Et.E-T,Et.T,Tt.F,Tt.FfT,Tt.i,T

t.(E)}

(c)E-T

{EtE-T.}

练习4.7

1.给定下列产生式的文法:

StEEtT|E+TTtP|T*PPtF|FfPFti|(E)

(1)为该文法构造SLR

(1)分析表。

状态

P

co

Cl

C2

C3

C4

S5

S6

S7

rl

S8

r3

r5

S9

C5

r7

C6

CIO

C7

Cll

56

C8

C12

C9

C\3

r2

r4

C13

r6

C14

rS

rX

第五章

练习5

3.如下非分程序结构语言的程序段,画出编译该程序段时将生成的有序符号表。

BLOCK

REALX,Y,Z1,Z2,Z3;

INTEGERIJKLASTI;

STRINGLIST-OF-NAMES;

LOGICALENTRY-ONEXIT-OFF;

ARRAYREALVAL(20);

ARRAYINTEGERMIN-VAL-IND(20);

ENDOFBLOCK;

变量名

类型

维数

E\TRY-()\

LOGICAL

EXIT-OFF

INTEGER

K

LASTI

LIST'

OFNAMES

STRING

MTN-VAI.-IND

VAL

REAL

X

Y

Z1

Z2

Z3

5.画出下面的分程序结构的程序段当程序段3和4的编译即将完成

以前的栈式符号表的图形(包括有效部分和失效部分)。

第六章

练习6.2

2考虑下面的类ALGO程序,画出当程序执行到①和②时,运行栈

内容的图像。

第七章

练习7

2.

转换成三元式,间接

将下面的语句A:

=(B+C)fE+(B+C)*F

三元式和四元式序列

三元式

四元式

⑴+B,C

(1)+B,C,T1

(2)t(l)kE

(2)TTbE,T2

(3)+B,C

(3)+B.CT3

(4)*(3),卩

(4)*T3,F,T4

(5)+

(2),⑷

(5)+T2,T冬T5

⑹:

二A,(5)

(6):

=A,T5

间接三元式

操作

(I)

2、

(2)

3>

(3)

5、

6.

⑴+

C

(2)T

(1)t

⑶*

(1),

(4)+

(2),

(5):

A,

第九章

练习9.1

1.试

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

当前位置:首页 > 解决方案 > 其它

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

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