编译原理课后习题答案_第1页
编译原理课后习题答案_第2页
编译原理课后习题答案_第3页
编译原理课后习题答案_第4页
编译原理课后习题答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章参考答案:

1,2,3;解答:略!

4.解答:

A:①B:③C:①D:②

5.解答:

用E表示〈表达式,,T表示v项〉,F表示〈因子〉,上述文法可以写为:

E一T|E+T

T—F|T*F

F-(E)|i

最左推导:

E=>E+T=>E+T+T=>T+T+T=>F+T+T=>i+T+T=>i+F+T=>i+i+T

=>i+i+F=>i+i+i

E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*i

最右推导:

E=>E+T=>E+F=>E+i=>E+T+i=>E4-F+i=>E+i+i=>T+i+i

=>F+i+i=>i+i+i

E=>E+T=>E+T*F=>E+T*i=>E+F*i=>E+i*i=>T+i*i=>F+i*i=>i+i*i

i+i+i和i+i*i的语法树如下图所示。

DTT

/—

✓\—

E+TF

^

11^-

T

F1FF

n.

1^

F1-

^11

i—

i+i+i、i+i*i的语法树

6.解答:

(1)终结符号为:{or,and,not,(,),true,false}

非终结符号为:{bexpr,bterm,bfactor}

开始符号为:bexpr

(2)句子not(trueorfalse)的语法树为:

bexpr

I

bterm

bfactor

bexprorbterm

II

btermbfactor

II

bfactorfalse

I

true

7.解答:

(1)把a%"分成a%11和J两部分,分别由两个非终结符号生成,因此,生成此文法的

产生式为:

S—AB

A—>aAb|ab

B一CB|E

(2)令S为开始符号,产生的w中a的个数恰好比b多一个,令E为一个非终结符号,

产生含相同个数的a和b的所有串,则产生式如下:

S^aE|Ea|bSS|SbS|SSb

E—>aEbE|bEaE|c

(3)设文法开始符号为S,产生的w中满足lalWlblW2lal。因此,可想到S有如下的产生

式(其中B产生1到2个b):

S-aSBS|BSaS

B—b|bb

(4)解法一:

S一〈奇数头〉〈整数〉〈奇数尾〉

I〈奇数头〉〈奇数尾〉

I〈奇数尾〉

〈奇数尾〉-1|3|5|7|9

〈奇数头〉一2|4|6|8|〈奇数尾〉

〈整数〉一〈整数〉〈数字〉I〈数字〉

〈数字〉->0|〈奇数头〉

解法二:文法G=({S,A,B,C,D},{0,1,2,3,4,5,6,7,8,9},P,S)

S—ABIB

A—ACID

BT113151719

D—2I4I6I8IB

C—OID

(5)文法G=({N,S,N,M,D},{0,l,2,3,4,5,6,7,8,9},S,P)

S—NO|N5

N一MD归

M->1|2|3|4|5|6|7|8|9

D-DO|DM|E

(6)G[S]:S->aSaIbSbIcScIaIbIcIs

8.解答:

(1)句子abab有如下两个不同的最左推导:

S=>aSbS=>abS=>abaSbS=>ababS=>abab

S=>aSbS=>abSaSbS=>abaSbS=>ababS=>abab

所以此文法是二义性的。

(2)句子abab的两个相应的最右推导:

S=>aSbS=>aSbaSbS=>aSbaSb=>aSbab=>abab

S=>aSbS=>aSb=>abSaSb=>abSab=>abab

(3)句子abab的两棵分析树:

(4)此文法产生的语言是:在{a,b}上由相同个数的a和b组成的字符串。

9,10:解答:略!

第3章习题解答:

i.解答:

(1)V(2)V(3)X(4)X(5)V(6)V

2.[分析]

有限自动机分为确定有限自动机和非确定有限自动机。确定有限自动机的确定性表现

在映射6:QXVT—>q是单值函数,也就是说,对任何状态qGQ和输入字符串aGV”8(q,a)

唯一确定下一个状态。显然,本题给出的是一个确定的有限自动机,它的状态转换图是C

中的②。

它所接受的语言可以用正则表达式表示为00(01D*,表示的含义为由两个0开始的

后跟任意个(包含0个)0或1组成的符号串的集合。

2.解答:A:④B:③C:②D:②E:④

3,4.解答:略!

5.解答:

Starr

other;

6.解答:

(1)(011),01

(2)((1121...19)(011121...19)*1£)(015)

(3)(011)*(011)(011)*

(4)1*11*0(0110)*(lie)

(5)ab"c\..z"

(6)(0110,1)*1

(7)(00111)*((01110)(00111)*(01110)(00111)*)*

(8)[分析]

设S是符合要求的串,|S|=2k+l(k-0)。

则S-SOSzl,Sl=2k(k>0),IS21=2k(k20)。

且Si是{0,1}上的串,含有奇数个。和奇数个1。

Sz是{0,1}上的串,含有偶数个0和偶数个1。

考虑有一个自动机小接受那么自动机曲如下:

和L(MJ等价的正规式,即,为:

((00111)|(0110)(00111)*(01110))*(01110)(00|11),

类似的考虑有一个自动机比接受$2,那么自动机Mz如下:

和L(岫)等价的正规式,即S为:

((00|11)|(01|10)(0011)-(01110))*

因此,S为:

((00|11)|(01|10)(00|11)*(01110))*(01110)(00111)*0!

((0011)|(01|10)(00|11)*(01|10))*1

7.解答:

(1)以0开头并且以0结尾的,由0和1组成的符号串。

(2){alaG{0,l}*}

(3)由0和1组成的符号串,且从右边开始数第3位为0。

(4)含3个1的由0和1组成的符号串。{alaG{01}+,且a中含有3个1}

(5)包含偶数个0和1的二进制串,即{alaW{0,l}*,且a中有偶数个0和1}

8.解答:口

Q。*可

QiQ3Q。

Q2Q。Q3

&Q1Q2

9.解答:

(1)DFAM=({0,1},{q(),qI,q2},qo>3},3)

其中3定义如下:

8(q0,0)=q(8(q()>l)=qo

8(qi,0)=q28(qi>l)=qo

5(q2.0)=q2S(q2>l)=qo

状态转换图为:

(2)正规式

DFAM=({0,1),{q。,q”q2,q?},q(),{q3)>8),其中B定义如下:

8(q(),O)=qi8(q(),l)=q()

8(qP0)=q28(qi,l)=qi

S(q2>0)=q3§(q2>l)=q2

8(q3-l)=q3

状态转换图为:

10.解答:

(1)DFAM=({0,1}>{qo>qi>q2>qs}>qo,{q3},8),其中6定义如下:

8(qo<0)=qi8(qo-l)=q2

6(qi>0)=qi8(qi,l)=q3

8(q2,0)=q38(q2>l)=qi

状态转换图为:

(2)DFAM=({0,1},{q0}.q0.{q0}«8),其中3定义如下:

8(q0,0)=qo8(q0.l)=q0

状态转换图为:

11解答:

(1)(alb)*a(alb)

①求出NFAM:

②确定化,得到DFAM:

③化简:在第②步中求出的DFAM中没有等价状态,因此它就是最小化的DFAMo

⑵(a)b)*a(alb)(alb)

①求NFAM:

②确定化,得到DFAM:

③化简,在第②步中求出的DFAM中没有等价状态,因此它已经是最小化的DFAM了。

12.解答:

对应的NFA为:

增加状态X、Y,再确定化:

ILlb

{x,5}{A.T.Y}(}

{A,T,Y){A,T,Y}{B}

{B}{){B,T,Y}

{B,T,Y}{){T.Y}

{T.Y)(}{}

得到的DFA为:

最小化:该自动机已经是最小化的DFA了。

13.解答:

14.解答:

正规式为:(011)*(00101)化简:(011)*0(011)

确定化,并最小化得到:

正规文法为:

S-1SIOA

A-OB1011CI1

B-0B1011CI1

C-1SI0A

15.解答:

①正规式:(dd*:l£)dd"(.dd*l£),d代表a〜z的字母

②NFA为:

③DFA为:

16.解答:

词法分析器对源程序采取非常局部的观点,因此象C语言的语句

fi(a==f(x))...

中,词法分析器把fi当作一个普通的标识符交给编译的后续阶段,而不会把它看成是关键

字if的拼写错。

PASCAL语言要求作为实型常量的小数点后面必须有数字,如果程序中出现小数点后面

没有数字情况,它由词法分析器报错。

17.解答:

此时编译器认为

/*thenpart

returnq

else

/*elsepart7

是程序的注释,因此它不可能再发现else前面的语法错误。

分析这是注释用配对括号表示时的一个问题。注释是在词法分析时忽略的,而词法分

析器对程序采取非常局部的观点。当进入第一个注释后,词法分析器忽略输入符号,一直到

出现注释的右括号为止,由于第一个注释缺少右括号,所以词法分析器在读到第二个注释的

右括号时,才认为第一个注释处理结束。

为克服这个问题,后来的语言一般都不用配对括号来表示注释。例如Ada语言的注释

始于双连字符(-),随行的结束而终止。如果用Ada语言的注释格式,那么上面函数应写

longgcd(p,q)

longp,q;

(

if(p%q==0)

-thenpart

returnq

else

-elsepart

returngcd(q,p%q);

)

18.解答:略!

第4章习题解答:

1,2,3,4解答略!

5.解答:

(1)X(2)V(3)X(4)V(5)V(6)V⑺X(8)X

6.解答:

(DA:④B:③C:③D:@E:②

(2)A:④B:④C:③D:③E:②

7.解答:

(1)消除给定文法中的左递归,并提取公因子:

bexpr—>bterm{orbterm}

bterm—>bfactor{andbfactor}

bfacto—notbfactor|(bexpr)|true|false

(2)用类C语言写出其递归分析程序:

voidbexpr();voidbfactor();

((

bterm();if(llokahead=="nof)then(

WHILE(lookahead=='or'){match('not');

match('or');bfactor();

bterm();1

)elseif(lookahead=V)then{

)match(*(');

bexpr();

voidbterm();match(')');

1\

\I

bfactor();elseif(lookahead='true')

WHILE(lookahead=='and'){thenmatch('true)

match('and');elseif(lookahead=false')

bfactor();thenmatch('false');

)elseerror;

)

8.解答:

消除所给文法的左递归,得G:

S一(L)|a

L-SL'

,SL'|e

实现预测分析器的不含递归调用的一种有效方法是使用一张分析表和一个栈进行联合

控制,下面构造预测分析表:

根据文法G有:

First(S)={(,a)Follow(S)={),,,#}

First(L)={(,a)Follow(L)={)}

First(L')={,}Follow(L1)={)}

按以上结果,构造预测分析表M如下:

输入符号

m留结符

()।a#

SSa

LL^SL'L->SU

UU3,su

文法G是LL(1)的,因为它的LL(D分析表不含多重定义入口。

预测分析器对输入符号串(a,(a,a))做出的分析动作如下:

步骤栈剩余输入串输出

1#s(a,(a,a))##

2#)L(a,(a,a))#s-(L)

3#)La,(a,a))#

4#)L*Sa,(a,a))#L—SU

5#)L'aa,(a,a))#S—>a

6#)L',(a»a))#

7#)L'S,,(a,a))#U1,SL'

8#)L'S(a,a))#

9#)L')L((a,a))#S-(L)

10#)L*)La,a))#

11#)L)LSa,a))#L—SU

12#)L)L'aa,a))#S—a

13#)L)L',a))#

14#)L)US,,a))#L'T,SL,

15#)L)LSa))#

16#)L)L'aa))#S—a

17#)L)U))#

18#)L)))#

19#)L,)#

20#))#L'f

21##

9.解答:

各非终结符的First集:

First(S)={First(A)\{£}}U{First(B)\{s}}U{s}U{b}={a,b,£}

First(A)={b}U{£}={b,E}

First(B)={£)U{a}={a,E)

First(C)={First(A)\{s}}UFirst(D)UFirst(b)={a,b,c}

First(D)={a}U{c}={a,c}

各个候选式的First集为:

First(AB)={a,b,£)First(bC)={b}

First(E)z={£}First(b)={b}

First(aD)={a}First(AD)={a,b,c}

First(b)={b)First(aS)={aJ

First(c)={c}

各非终结符的Follow集的计算:

Follow(S)={#}UFollow(D)={#}

Follow(A)=(First(B)\{£})UFollow(S)UFirst(D)={a,#,c}

Follow(B)=Follow(S)={#}

Follow(C)=Follow(S)={#}

Follow(D)=Follow(B)UFollow(C)={#}

10.解答:

(1)求First和Follow集

First(E)=First(T)={(,a,b,Al⑦

First(E')={+,£}⑥

First(T)=First(F)={(,a,b,A)④

First(T')={(,a,b,A,8)⑤

First(F)=First(P)={(,a,b,A)③

First(F*)={*,8)②

First(P)={(,a,b,Al①(计算顺序)

Follow(E)={#,)}

Follow(E')=FolIow(E)={#,)}(1)(使用的产生式)

Follow(T)=First(E')\{c}UFollow(T')(1,2)

={+}U{),#}={+,),#)

Follow(T')=Follow(T)={+,},#}(3)

Follow(F)=First(T')\{s}UFollow(T)(3,4)

={(,a,b,A,+.),#)

Follow(F')=Follow(F)(5)

={(,a,b,A,+.),#}

Follow(P)=First(F')\{s}UFollow(F)(5,6)

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

⑵证明:

•「a文法不含左递归;

b.每个非终结符的各个侯选式的First集不相交;

c.First(E,)nFollow(E')={+,e}n{#,),}=①

First(T')AFollow(T')={(,a,b,A,e}n{+,)}=①

First(F')nFollow(F')={*,s}n{,a,(A,+,},#}=①

改造后的文法满足LL(1)文法的三个条件,是LL(1)文法。

(3)预测分析表如下所示。

ab*+A()#

EE-TFE一TE,E->TE

E*EJ+EE'fE'f

TJFTT-FTT—FFTTFT

T'T'TTT—TT'->TT—Tr->8Tf

FF-PFF—PFF—PFF-PF

FFT£FTF—*FF-£F'fFfFfF'->£

PP-♦aP-bP—AP-(E)

11.解答:

(1)

a.文法不含左递归;

S—>/be

b.S,A,B各候选式的First集不相交;

A—a|s

c.First(A)AFollow(A)={a,s}A{b)=<I>

B—>b|s

First(B)AFolk)w(B)={b,£}A®=<t>

...该文法为LL(1)文法。

(2)

a.文法不含左递归;

b.S,A,B各候选式的First集不相交;

c.First(A)DFollow(A)={a,b,E}A{b}={b厚中

该文法不是LL(1)文法。

12.解答:

①最右推导:

E=>T=>F=>(E)=>(E+T)=>(E+F)=>(E+i)=>(T+i)=>(T*F+i)

语法树:

b

T

图4.1句型(T*F+i)的语法树

②短语:(T*F+i),T*F+i,T*F,i

素短语:T*F,i

最左素短语:T*F

③由于E=>E+T=>E+T*F,故E+T*F为该文法的句型

短语:T*F、E+T*F

直接短语:T*F

句柄:T*F

13.解答:

最左推导:

S=>(T)=>(T,S)=>(S,S)->(a,S)->(a,(T))=>(a,(T,S))

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

最右推导:

S=>(T)=>(T,S)=>(T,(T))=>(T,(T.S))=>(T,(T,a))

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

文法中S和T的FirstVT和LastVT集为:

FirstVT(S)={a,(}FirstVT(T)={,,a,()

lastVT(S)={a,)}lastVT(T)={,,a,)}

文法G[S]的算符优先关系表:

a()t#

a•>•>•>

(<•<•

)•>■>■>

1<••>•>

#<•工

根据优先关系表,对每个终结符或#建立符号f与g,把f(和g)分成一组。根据G|S]的算

符优先关系表,画出如下的有向图。

优先函数如下:

a()#

f20220

933010

用算符优先分析法分析句子(a,(a,a))。

栈输入动作

u(a.(a.a))#初始

#(a,(a,a))#移进

#(a,(a.a))#移进

#(N,(a.a))#归约

#(N.(a.a))#移进

#(N,(a.a))#移进

#(N,(a.a))#移进

#(N.(N.a))#归约

#(N,(N,a))#移进

#(N,(N.a))#移进

#(N,(N.N))#归约

#(N.(N))#归约

U(N,(N)冲移进

#(N,N)#归约

津归约

#(N)移进

#N归约,接受

给定的输入符号串是文法的一个句子。

14.解答:

(1)该文法的拓广文法3为

0,S'-S

1.S-aSAB

2.S-BA

3.AaA

4.AfB

5.B-b

其LR(0)项目集规范族和识别活前缀的DFA如下:

I()={S'—SS—aSAB,STBA,B—b}

L={S'TS.}

I2={B->b)

I3={S-aSAB,S—aSAB,S—BA,B—b}

I4={S-B,A,A-,aA,A—>>B,B—>,b}

I5={S—>aS-AB,A—>-aA,A—>B,B—b}

I6={S->aSAB,B->b}

I7={A-aA,A一aA,A—>B,B—>b}

I8={A^B}

b={S—BA}

Iio={S—>aSAB-)

In={A—aA。}

显然,上述状态中没有出现冲突。显然,该文法是LR(O)的文法,因此也是SLR(l)的。

求各个非终结符的Follow集,以便构造分析表:

Follow(S*)={#}Follow(S)={a,b,#}

Follow(A)={a,b,#}Follow(B)={a,b,#}

构造的SLR(l)分析表如下:

actiongoto

ab#sAB

0S3S214

1acc

2巧r5r5

3S3S254

4S7S298

5S7S268

6S210

7S7S2118

8r4r4r4

9已r2r2

10r1r1r1

11r3r3r3

(2)该文法的拓广文法G为

0.S,fS

1.SfSab

2.S-bR

3.R-S

4.R-a

其LR(0)项目集规范族和识别活前缀的DFA如下:

一一

Io={S'—SSSab,SbR}

Ii={S'-S・,S-S・ab}

【2={S-bR,R-S,R—*a,S-Sab,S—>bR}

{S—Sab}

I4={S->bR}

k二{R—S,S一Sab}

k={R-a・}

L={S一Sab・}

显然,h和I5存在移进-归约冲突。求S和R的Follow集:

Follow(S')={#)

Follow(R)=Follow(S)={a,#}

在b中,出现的移进一归约冲突,且Follow(R)n{a}={a},不能用SLR(l)方法解决。

因此,此文法不是SLR(l)文法。

15.解答:

(1)构造其拓广文法G'的产生式为

0.S'fS

1.S-A

2.A—BA

3.A-*8

4.BfaB

5.Bfb

构造其LR(0)项目集规范族和goto函数(识别活前缀的DFA)如下:

Io={[S—S,#],[ST,A,#],[A--BA,#,[A--,#],

[B——aB,a/b/#|,|B-^b,a/b/#]}

Ii={[SJS•,知

I2={[S^A-,#]}

h={[ATB-A,#],[A^-BA,#],[Af,#],

[B—・aB,a/b/#],[B-»-b,a/b/#]}

L={[BTr,a/b/#]}

I5={[B->aB,a/b/#],[B-^aB,a/b/#],

[Bfb,a/b/#]}

I6={[A^BA-,#]}

I7=|[B^aB-,a/b/#]}

该文法的LR(1)项目集规范族中没有冲突,所以该文法是LR(1)文法。

构造LR(1)分析表如下:

actiongoto

状态

ab#sAB

0S5S4r3123

1acc

2r1

3S5S4r363

4r5巧r57

5S5S4

6r2

7r4r4r4

以上分析表无多的定义入口,所以该文法为LR(1)文法。

(3)对于输入串abab,其分析过程如下:

步骤状态栈输入动作

(i)0abab#移进

(2)0a5bab#移进

(3)0a5b4ab#用B-b归约

(4)0a5B7ab#用BfaB进行归约

(5)0B3ab#移进

(6)OB3a5b#移进

(7)OB3a5b4用B-b归约

(8)0B3a5B7#用B-aB进行归约

(9)0B3B3#用A-£进行归约

(10)0B3B3A6#用A-BA进行归约

(11)0B3A6*用A-BA进行归约

(12)0A2#用S-A进行归约

(13)0S1#接受

16.解答:

(1)对于产生式S—AaAb|BbBa来说

First(AaAb)nFirst(BbBa)={a}n{b}=(D

A,BGVN仅有一条候选式。

因此,这个文法是LL(1)的。

(2)下面构造这个文法的识别活前缀的DFA。

Io={S'->S,S——AaAb,S—BbBa,A—・,B——}

L={S'—S-}

I2={S_AaAb}

【3={S-BbBa}

I4={S—>Aa,Ab,A—*,}

I5={S->BbBa,Bf}

k={S—>AaAb}

L={S—BbBa}

h={S_AaAb}

k={S—BbBa}

下D©

由于Follow(A)=Follow(B)={a,b},因此项目集Io中存在归约-归约冲突。在I。状态下,当

输入符号是a或是b时,不知用ATE还是BTE进行归约。故此文法不是SLR(l)的。但是,

此文法时LR⑴的。

17.解答:

该文法的拓广文法G为

0.S'TS

1.ST(SR

2.S—►a

3.R一,SR

4.R一)

构造其LR(O)项目集规范族和goto函数(识别活前缀的DFA)如下:

Io={S-S,S一(SR,S—a}

!

II={S->S-}

b={S—(SR,S1(SR,S->a}

h={S—a,}

k={S一(SR,RfSR,R—)}

k={S_(SR}

I6={RT)}

b={RT,SR,SI(SR,S—a}

[8={RfSR,R—,SR,R—•)}

b={R一,SR}

,R

每个LR(O)项目集中没有冲突。因此,此文法是LR(O)文法。其分析表如下:

actiongoto

状态

a()9#5R

0S3S21

1acc

2S3S24

3r2r2r2r2r2

4S6S75

5r1r1r1r1r1

6r5r5r5r5r5

7S2S28

8S6S79

9r4r4r4r4r4

18.解答:略!

第5章习题解答:

1,2,3解答:略!

4.解答:

(1)设S,L,B的值的属性用val表示:

S'-S{printf(S.val)}

S->L'.L2{S.val:=L、Val+L2.val/2UJen8th)

STL{S.val:=L.val}

L->L'B{L.val:=L1.val*2+B.val,

L.length=L'.length+l}

L—B{L.val:=B.val),

L.length:=l}

B—0{B.val:=0}

BT1{B.val:=l}

(2)为S,L引入属性h,用来记录配对的括号个数:

S'—S{printf(S.h)}

S—a{S.h:=0}

S—(L){S.h:=S.h+l}

L—L⑴,S{L.h:=L?).h+S.h}

L—S{L.h:=S.h)}

(3)为D引入一个综合属性h,用来记录D中含id的个数

P—>D{printf(D.h)}

D^DI;D2{D.h:=D'.h+D2.h}

D—id:T{D.h:=1}

D-^procid;D';S{D.h:=D'.h+l}

5.解答:

输入率为bcccaadadadb时的语法树为:

采用修剪语法树的方法,按句柄方式自下而上归约该语法树,在归约时调用相应的语义

规则,由此得到最终的翻译结果为:34242421.

6.解答:

(a+b)+(c+d/(e-3))*8

7.解答:

(1)ab-c+*

(2)AnotCDnotornotor

(3)abcde/+*+

(4)ABandCnotDoror

(5)a-bc-d+*+

(6)ABorCDnotEandorand

8.解答:

三元式四元式

①(+,a,b)1.(+,a,b,Ti)

②(-,1,-)2.(-,T,T2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论