編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成_第1頁
編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成_第2頁
編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成_第3頁
編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成_第4頁
編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上編譯技術(shù)課程設(shè)計(jì) 班 級 學(xué) 號 姓 名 指導(dǎo)老師 年 月目 錄 一、目的-2 二、任務(wù)及要求-2 三、實(shí)驗(yàn)環(huán)境-4 四、實(shí)現(xiàn)過程說明-4 1.詞法分析器-4 (1)單詞符號表-4 (2)數(shù)據(jù)結(jié)構(gòu)-5 (3)函數(shù)說明-5 (4)流程圖-6 2.語法分析器-6 (1)分析方法說明-6 (2)文法-6 (3)數(shù)據(jù)結(jié)構(gòu)-7 (4)函數(shù)說明-7 3.中間代碼生成器-10 (1)屬性文法-10 (2)數(shù)據(jù)結(jié)構(gòu)-11 (3)函數(shù)說明-11 (4)流程圖-11 五、程序運(yùn)行結(jié)果-12 六、總結(jié)-16一、目的<<編譯技術(shù)>>是理論與實(shí)踐并重的課程,而其課程設(shè)計(jì)

2、要綜合運(yùn)用一、二年級所學(xué)的多門課程的內(nèi)容,用來完成一個(gè)小型編譯程序。從而鞏固和加強(qiáng)對詞法分析、語法分析、語義分析、代碼生成和報(bào)錯(cuò)處理等理論的認(rèn)識和理解;培養(yǎng)學(xué)生對完整系統(tǒng)的獨(dú)立分析和設(shè)計(jì)的能力,進(jìn)一步培養(yǎng)學(xué)生的獨(dú)立編程能力。二、任務(wù)及要求基本要求:1 詞法分析器 產(chǎn)生下述小語言的單詞序列這個(gè)小語言的所有的單詞符號,以及它們的種別編碼和內(nèi)碼值如下表:單詞符號種別編碼助記符內(nèi)碼值while1while¾if2if¾else3else¾switch4switch¾case5case¾標(biāo)識符6id符號表入口地址常數(shù)7num常數(shù)表入口地址=8=¾

3、;+9+¾*10*¾*11*¾-12-¾/13/¾>14relopMT>=14relopME<14relopLT<=14relopLE=14relopEQ!=14relopUEQ;15;¾,16,¾(17(LB)17)RB對于這個(gè)小語言,有幾點(diǎn)重要的限制:首先,所有的關(guān)鍵字(如ifwhile等)都是“保留字”。所謂的保留字的意思是,用戶不得使用它們作為自己定義的標(biāo)示符。例如,下面的寫法是絕對禁止的: if(5)=x 其次,由于把關(guān)鍵字作為保留字,故可以把關(guān)鍵字作為一類特殊標(biāo)示符來處理。也就是說,對于關(guān)

4、鍵字不專設(shè)對應(yīng)的轉(zhuǎn)換圖。但把它們(及其種別編碼)預(yù)先安排在一張表格中(此表叫作保留字表)。當(dāng)轉(zhuǎn)換圖識別出一個(gè)標(biāo)識符時(shí),就去查對這張表,確定它是否為一個(gè)關(guān)鍵字。再次,如果關(guān)鍵字、標(biāo)識符和常數(shù)之間沒有確定的運(yùn)算符或界符作間隔,則必須至少用一個(gè)空白符作間隔(此時(shí),空白符不再是完全沒有意義的了)。例如,一個(gè)條件語句應(yīng)寫為 if i>0 i= 1;而絕對不要寫成 ifi>0 i=1;因?yàn)閷τ诤笳?,我們的分析器將無條件地將ifi看成一個(gè)標(biāo)識符。這個(gè)小語言的單詞符號的狀態(tài)轉(zhuǎn)換圖,如下圖: 2 語法分析器 能識別由加+ 乘* 乘方* 括號()操作數(shù)所組成的算術(shù)表達(dá)式,其文法如下:EE+T|TTT*

5、F|FFP*F|PP(E)|i 使用的算法可以是:預(yù)測分析法;遞歸下降分析法;LR分析法等。3 中間代碼生成器 產(chǎn)生上述算術(shù)表達(dá)式的中間代碼(四元式序列)較高要求:1 擴(kuò)充上述小語言的單詞;2 增加語法分析器的功能,能識別條件語句和循環(huán)語句等;3 增加中間代碼生成器的功能,能產(chǎn)生條件語句和循環(huán)語句等的中間代碼(四元式序列)4 報(bào)錯(cuò)基礎(chǔ)上增加錯(cuò)誤信息;5 將中間代碼翻譯成匯編語言。三、實(shí)驗(yàn)環(huán)境開發(fā)環(huán)境VC+;Visual Studio;Java開發(fā)環(huán)境語言C;C+;C#;Java說明:課程設(shè)計(jì)可以使用任何一種語言工具,課程設(shè)計(jì)報(bào)告中請按照自己實(shí)際采用的開發(fā)工具及技術(shù)來寫。四、實(shí)現(xiàn)過程說明1.詞法

6、分析器(1)單詞符號表單詞符號種別編碼助記符內(nèi)碼值while1while¾if2if¾else3else¾switch4switch¾case5case¾標(biāo)識符6id符號表入口地址常數(shù)7num常數(shù)表入口地址=8=¾+9+¾+9+¾+=9+= ¾*10*¾*11*¾-12-¾/13/¾/=13/=¾>14relopMT>=14relopME<14relopLT<=14relopLE=14relopEQ!=14relopUEQ;15;&

7、#190;,16,¾(17(LB)17)RB!18!¾20¾20¾21¾21¾:22:¾' '24' '¾(2) 數(shù)據(jù)結(jié)構(gòu)用words10存放構(gòu)成單詞符號的字符串,并且用于判斷是否為關(guān)鍵字。flags500 存放單詞符號的種別碼。Number存放整數(shù)值,words存放標(biāo)識符,關(guān)鍵字或者其他符號。cntnum按順序存放讀到的字符,為下面語義分析做準(zhǔn)備。Status用于判斷是否為關(guān)鍵字,1是,0不是。(3) 函數(shù)說明在Scan ()子函數(shù)中,先全部初始化,然后讀一個(gè)字符,分析它是什么類型

8、:如果是字母類型,則接著往下讀,直到讀到非字母的字符,存入words10中,依次對比關(guān)鍵字表中的元素,如果相同,則將flags置為相應(yīng)的種別碼,如果全都掃描后沒發(fā)現(xiàn)相同的關(guān)鍵字,則為普通的標(biāo)識符,返回主函數(shù)輸出。如果是數(shù)字類型,首先分析第一個(gè)符號,接著讀下一個(gè)字符串,直到讀到一個(gè)不是數(shù)字的字符串位置,每讀一個(gè)數(shù)字字符,就將他們轉(zhuǎn)化為相應(yīng)的數(shù)字,使用輾轉(zhuǎn)相乘法,每次都讓number先自乘10,然后加上這個(gè)數(shù)字,這樣就將字符串表示的數(shù)字轉(zhuǎn)化成了相應(yīng)的數(shù),返回主函數(shù)輸出。如果是其他單詞表的符號,則將他們的flags置為相應(yīng)的種別碼,并將字符存到words 中返回主函數(shù)輸出。(4) 流程圖 2.語法分

9、析器(1)分析方法說明 采用遞歸下降分析法(2) 文法EE+T|E-T|TTT*F|E/F|FFP*F|PP(E)|i改造后的文法ETE|TEE+TE|E-TE|TFT|FTT*FT|T/FT|FPFF*F|P(E)|i(3)數(shù)據(jù)結(jié)構(gòu)與函數(shù)說明 在main函數(shù)調(diào)用E()函數(shù),如果調(diào)用之后返回時(shí),如果(flagstemp=0)&&is_right)為真,就輸出“分析成功”,否則輸出“分析失敗”。其中is_right為設(shè)定的標(biāo)志,初值為1,如果在調(diào)用子函數(shù)的過程中如果有錯(cuò)誤,則置is_right為0。 E函數(shù): 調(diào)用T函數(shù),調(diào)用F函數(shù), 調(diào)用P函數(shù),返回后看是否是+或-,如果是,則

10、調(diào)用 E1函數(shù),再調(diào)用E2函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。 E1函數(shù):判斷是不是”+”或者“-” 如果是,調(diào)用F函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。代碼:void E()cout<<"E->TE''"<<endl;T();E2();void E1()if(flagstemp=9) /加號cout<<"E'->+T"<<endl;temp+;T();else if(flagstemp=12)/減號cout<<"E

11、'->-T"<<endl;temp+;T();elseis_right=0;void E2()if(flagstemp=9|flagstemp=12)/如果是加或減cout<<"E''->E'E''"<<endl; E1(); E2();else if (flagstemp!=0|flagstemp!=17)/如果是非#或非 cout<<"E''->"<<endl; return ; elseis_rig

12、ht=0; T函數(shù): 調(diào)用F函數(shù), 調(diào)用P函數(shù),返回后看是否是*或/,如果是,則調(diào)用T1函數(shù),再調(diào)用T2函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。 T1函數(shù):判斷是不是”*”或者“/” 如果是,調(diào)用F函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。代碼:void T()cout<<"T->FT''"<<endl;F();T2();void T1()if(flagstemp=10) /乘號cout<<"T'->*F"<<endl;temp+;F();els

13、e if(flagstemp=13) /除號cout<<"T'->/F"<<endl;temp+;F();else is_right=0;void T2()if(flagstemp=10|flagstemp=13)/如果是乘或除cout<<"T''->T'T''"<<endl;T1();T2();else if (flagstemp!=0|flagstemp!=17)/如果是非#或非) cout<<"T''-&

14、gt;"<<endl; return ; else is_right=0; F函數(shù):調(diào)用P函數(shù),F(xiàn)1函數(shù)。 F1函數(shù):判斷是不是”*”,如果是,調(diào)用F函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。代碼:void F()cout<<"F->PF'"<<endl;P(); F1();void F1() if(flagstemp=11) /乘?方? cout<<"F'->*F"<<endl;temp+;F(); Elseif(flagstemp!=0&am

15、p;&flagstemp!=17&&flagstemp!=9&&flagstemp!=12&&flagstemp!=10&&flagstemp!=13)/非#非)非+非-非*非/ cout<<"F'->?"<<endl;is_right=0; P函數(shù): 檢查是否標(biāo)識符,如果是,調(diào)用P1函數(shù),如果不是,檢查是否是數(shù)值,如果是,調(diào)用P1函數(shù),如果不是,檢查是否是(,如果不是,進(jìn)行出錯(cuò)處理,置is_right為0。如果是,調(diào)用E函數(shù),返回后檢查是否是),如果不是,進(jìn)行出錯(cuò)

16、處理,置is_right為0。如果是,調(diào)用F1函數(shù),返回。代碼:void P()if(flagstemp=6|flagstemp=7) /標(biāo)識符或常數(shù)cout<<"P->i"<<endl;temp+;else if(flagstemp=17) /(cout<<"P->(E)"<<endl;temp+;E();if(flagstemp=17) /)cout<<"P->(E)"<<endl;temp+;elseis_right=0;else is_r

17、ight =0;3.中間代碼生成器(1)屬性文法 EE+T E.val=E.val+T.valEE-T E.val=E.val-T.valET E.val=T.valTT*F T.val=T.val*F.valTT/F T.val=T.val/F.valTF T.val=F.valFP*F F.val=P.val*F.valFP F.val=P.valP(E) P.val=E.valFi F.val=i,lexval(2)數(shù)據(jù)結(jié)構(gòu)與函數(shù)說明Strn用來存放臨時(shí)變量的序號。temp用來存放數(shù)組的下表,在主程序中語法分析結(jié)束后,置0.定義函數(shù)newtemp()用于門生一個(gè)新的臨時(shí)變量的名字,具體實(shí)

18、現(xiàn)時(shí)每產(chǎn)生一個(gè)T,就及時(shí)送到符號表中,也可以不進(jìn)符號表,直接將單詞值用整數(shù)碼表示。定義函數(shù)siyuan(),輸出一個(gè)四元式。定義函數(shù)YE() 進(jìn)行中間代碼生成(3)流程圖 5、 程序運(yùn)行結(jié)果注:本程序?qū)τ谛稳鏰1的標(biāo)識符無法作為整體識別詞法測試:表達(dá)式正確:2*3+4/(as-5)*6#詞法分析:語法分析四元式: 表達(dá)式錯(cuò)誤:2*(3-2#六、總結(jié)這次課程設(shè)計(jì)使我對編譯原理有了進(jìn)一步的了解,更加鞏固了所學(xué)習(xí)的知識。編譯原理是一門比較抽象的課程,也比較難以學(xué)得透,有很多東西很模糊的。編譯這個(gè)概念有一定的了解。由于課堂上,學(xué)習(xí)的東西比較淺,難免眼高手低,故而,通過實(shí)驗(yàn)和課程,遇到了很多課本上面見不

19、到的問題,完成實(shí)驗(yàn)后,個(gè)人在成就感的同時(shí),也學(xué)習(xí)到了編程的具體過程中的很多知識。程序代碼:/#include <stdafx.h>#include <iostream>#include<string>using namespace std;#include<stdio.h>#include<stdlib.h> #include<sstream>int i,j,k,flag,number,status;/*status which is use to judge the string is keywords or not!*

20、/char ch;char words10 = " "char program500;int flags500; /存儲(chǔ)輸入句子string cnt500;/標(biāo)括識符int temp=0; /數(shù)組下標(biāo)int is_right; /判斷輸出信息/-詞法分析-int Scan(char program) char *keywords5 = "while","if","else","switch","case" /關(guān)鍵字number=0;status=0;j=0;ch=progra

21、mi+; /遍歷if (ch >= 'a') && (ch <= 'z' )|(ch>='A')&&(ch<='Z') /字母 while (ch >= 'a') && (ch <= 'z' )|(ch>='A')&&(ch<='Z') wordsj+=ch; ch=programi+; i-; wordsj+ = '0'for (k = 0

22、; k < 5; k+)if (strcmp (words,keywordsk) = 0) /判斷是否為關(guān)鍵字switch(k)case 0:flag = 1;status = 1;break;case 1:flag = 2;status = 1;break;case 2:flag = 3;status = 1;break;case 3:flag = 4;status = 1;break;case 4:flag = 5;status = 1;break;if (status = 0)flag = 6; /標(biāo)識符else if (ch >= '0') &&am

23、p; (ch <= '9') /數(shù)字 number = 0; while (ch >= '0' ) && (ch <= '9' ) number = number*10+(ch-'0'); ch = programi+;flag = 7;i-;else switch (ch) /運(yùn)算符和標(biāo)點(diǎn)符號case '=': if (ch = '=') wordsj+ = ch; wordsj = '0' ch = programi+; if (ch = 

24、9;=') wordsj+ = ch; wordsj = '0' flag = 14; else i-; flag = 8; break; case'>': if (ch = '>') wordsj+ = ch; wordsj = '0' ch = programi+; if (ch = '=') wordsj+ = ch; wordsj = '0' flag =14; else i-; flag = 14; break; case'<': if (ch =

25、 '<')wordsj+ = ch;wordsj = '0'ch = programi+;if (ch = '=')wordsj+ = ch;wordsj = '0'flag = 14;elsei-;flag = 14;break;case'!':if (ch = '!')wordsj+ = ch;wordsj = '0'ch = programi+;if (ch = '=')wordsj+ = ch;wordsj = '0'flag = 14;

26、elsei-;flag = 18;break;case'+':if (ch = '+')wordsj+ = ch;wordsj = '0'ch = programi+;if (ch = '=')wordsj+ = ch;wordsj = '0'flag = 9;else if (ch = '+')wordsj+ = ch;wordsj = '0'flag = 9;elsei-;flag = 9;break;case'-':if (ch = '-')wo

27、rdsj+ = ch;wordsj = '0'ch = programi+;if (ch = '=')wordsj+ = ch;wordsj = '0'flag = 12;else if( ch = '-')wordsj+ = ch;wordsj = '0'flag = 12;elsei-;flag = 12;break;case'*':if (ch = '*')wordsj+ = ch;wordsj = '0'ch = programi+;if (ch = '

28、;*')wordsj+ = ch;wordsj = '0'flag = 11;elsei-;flag = 10;break;case'/':if (ch = '/')wordsj+ = ch;wordsj = '0'ch = programi+;if (ch = '=')wordsj+ = ch;wordsj = '0'flag = 13;elsei-;flag = 13;break;case'':wordsj = ch;wordsj+1 = '0'flag

29、= 15;break;case'(':wordsj = ch;wordsj+1 = '0'flag = 17;break;case')':wordsj = ch;wordsj+1 = '0'flag = 17;break;case'':wordsj = ch;wordsj+1 = '0'flag = 21;break;case'':wordsj = ch;wordsj+1 = '0'flag = 21;break;case'':wordsj = ch;

30、wordsj+1 = '0'flag = 20;break;case'':wordsj = ch;wordsj+1 = '0'flag = 20;break;case':':wordsj = ch;wordsj+1 = '0'flag = 22;break;case',':wordsj = ch;wordsj+1 = '0'flag = 16;break;case'#':wordsj = ch;wordsj+1 = '0'flag = 0;break;

31、case' ':/空格 wordsj ='_' wordsj+1 = '0' flag = 24; break;/case'$':/wordsj = '#'/wordsj+1 = '0'/flag = 0;/break;/default:flag = -1;break;return flag;/-語法分析(遞歸下降)-void E();void E1();void E2();void T(); void T1();void T2();void F();void F1();void P();void

32、E()cout<<"E->TE''"<<endl;T();E2();void E1()if(flagstemp=9) /加號cout<<"E'->+T"<<endl;temp+;T();else if(flagstemp=12)/減號cout<<"E'->-T"<<endl;temp+;T();elseis_right=0;void E2()if(flagstemp=9|flagstemp=12)/如果是加或減co

33、ut<<"E''->E'E''"<<endl; E1(); E2();else if (flagstemp!=0|flagstemp!=17)/如果是非#或非) cout<<"E''->"<<endl; return ; elseis_right=0;void T()cout<<"T->FT''"<<endl;F();T2();void T1()if(flagstemp=10

34、) /乘號cout<<"T'->*F"<<endl;temp+;F();else if(flagstemp=13) /除號cout<<"T'->/F"<<endl;temp+;F();else is_right=0;void T2()if(flagstemp=10|flagstemp=13)/如果是乘或除cout<<"T''->T'T''"<<endl;T1();T2();else if (

35、flagstemp!=0|flagstemp!=17)/如果是非#或非) cout<<"T''->"<<endl; return ; else is_right=0;void F()cout<<"F->PF'"<<endl;P(); F1();void F1() if(flagstemp=11) /乘方 cout<<"F'->*F"<<endl;temp+;F(); else if (flagstemp!=0&am

36、p;&flagstemp!=17&&flagstemp!=9&&flagstemp!=12&&flagstemp!=10&&flagstemp!=13)/非#非)非+非-非*非/ cout<<"F'->"<<endl;is_right=0; void P()if(flagstemp=6|flagstemp=7) /標(biāo)識符或常數(shù)cout<<"P->i"<<endl;temp+;else if(flagstemp=17)

37、 /(cout<<"P->(E)"<<endl;temp+;E();if(flagstemp=17) /)cout<<"P->(E)"<<endl;temp+;elseis_right=0;else is_right =0;/-語義分析以及中間代碼生成-int YE();int TE1(int a);int YE2(int a);int YT();int YT1(int a);int YT2(int a);int YF();int YF1(int a);int YP();int v=-1;int

38、 num=0;int ww;string strn;int nn;int newTemp()num+;nn+; stringstream stream;stream<<nn;stream>>strn;stream.clear();cntnum-1="temp" cntnum-1.operator+=(strn);/把字符串s連接到當(dāng)前字符串的結(jié)尾 /cntnum-1=strcat("Temp",strn); / cntnum-1="temp"return num-1;void siyuan(int a,int

39、b,int c,int d)/輸出四元cout<<"("<<cnta<<","<<cntb<<","<<cntc<<","<<cntd<<")"<<endl;int YE()int rt,t1;rt=YT();t1=rt;rt=YE2(t1);return rt;int YE1(int a)int rt,t1;t1=a; if(flagstemp=9) /加法temp+;int

40、 tt=v+1;v+;int t2=YT();int rr=newTemp();siyuan(tt,t1,t2,rr);rt=rr;return rt;else if(flagstemp=12) /減法temp+;int tt=v+1;v+;int t2=YT();int rr=newTemp();siyuan(tt,t1,t2,rr);rt=rr;return rt;else return t1;int YE2(int a)int rt,t1;t1=a;if(flagstemp=9|flagstemp=12)/+或- rt=YE1(t1); t1=rt; rt=YE2(t1); return

41、 rt; else if (flagstemp!=0|flagstemp!=17) return t1; else return t1;int YT()int rt,t1;rt=YF();t1=rt;rt=YT2(t1);return rt;int YT1(int a)int rt,t1;t1=a;if(flagstemp=10) /乘法int tt=v+1;v+;temp+;int t2=YF();int rr=newTemp();siyuan(tt,t1,t2,rr); rt=rr;return rt;else if(flagstemp=13) /除法temp+;int tt=v+1;v+

42、; int t2=YF();int rr=newTemp();siyuan(tt,t1,t2,rr);rt=rr; return rt;else return t1;int YT2(int a)int rt,t;t=a;if(flagstemp=10|flagstemp=13)/乘或除rt=YT1(t);t=rt; rt=YT2(t);return rt;else return t;int YF()int t1,rt; rt=YP();t1=rt; rt=YF1(t1); return rt;int YF1(int a) /乘方int rt,t1;t1=a; if(flagstemp=11)t

43、emp+;int tt=v+1;v+;int t2=YF();int rr=newTemp();siyuan(tt,t1,t2,rr);rt=rr;return rt;else return t1;int YP()int rt,t1;if(flagstemp=6|flagstemp=7)/標(biāo)識符或常數(shù)v+;rt=v; temp+; return rt;else if(flagstemp=17) /(v+; temp+; rt=YE();if(flagstemp=17) /)v+; temp+;return rt;else return ww;else return ww;void main()

44、 printf(" -單詞號對應(yīng)的種別編碼-n"); printf("n"); printf("(while,1) (if,2) (else,3) (switch,4) (case,5)n"); printf("n"); printf("(標(biāo)括識符,6) (常數(shù),7) (=,8) (+,9) (+,9)n"); printf("n"); printf("(+=,9) (*,10 ) (*,11) (-,12) (/,13)n"); printf("n"); printf("(/=,13) (>,14) (>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論