2023年TEST語言語法分析詞法分析實驗報告_第1頁
2023年TEST語言語法分析詞法分析實驗報告_第2頁
2023年TEST語言語法分析詞法分析實驗報告_第3頁
2023年TEST語言語法分析詞法分析實驗報告_第4頁
2023年TEST語言語法分析詞法分析實驗報告_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

編譯原理實驗報告實驗名稱:分析調(diào)試語義分析程序TEST抽象機模擬器完整程序保證能用??!!!!一、實驗?zāi)康耐ㄟ^度析調(diào)試TEST語言的語義分析和中間代碼生成程序,加深對語法制導(dǎo)翻譯思想的理解,掌握將語法分析所辨認的語法范疇變換為中間代碼的語義翻譯方法。二、實驗設(shè)計程序流程圖語法分析程序代碼:Main.cpp#include<stdio.h>#include<ctype.h>externboolTESTparse(char*pFileName);externintTESTScan(FILE*fin,FILE*fout);FILE*fin,*fout;//用于指定輸入輸出文獻的指針intmain(){?charszFinName[300];?charszFoutName[300];?printf("請輸入源程序文獻名(涉及途徑):"); scanf("%s",szFinName); printf("請輸入詞法分析輸出文獻名(涉及途徑):");?scanf("%s",szFoutName); if((fin=fopen(szFinName,"r"))==NULL)?{ printf("\n打開詞法分析輸入文獻犯錯!\n");??return0; }?if((fout=fopen(szFoutName,"w"))==NULL) { printf("\n創(chuàng)建詞法分析輸出文獻犯錯!\n"); return0; } intes=TESTScan(fin,fout);?fclose(fin);?fclose(fout); if(es>0) printf("詞法分析有錯,編譯停止!共有%d個錯誤!\n",es);?elseif(es==0)?{ ?printf("詞法分析成功!\n");? intes?=?0; es =?TESTparse(szFoutName);//調(diào)語法分析 if(es==true)printf("語法分析成功!\n"); elseprintf("語法分析錯誤!\n"); }?else printf("詞法分析出現(xiàn)未知錯誤!\n");}Parse.cpp#include<stdio.h>#include<string.h>#include<ctype.h>#include<conio.h>#include<vector>//functionboolTESTparse();boolcompound_Stat();boolprogram();boolstatement();boolexpression_stat();boolexpression();boolbool_expr();booladditive_expr();boolterm();boolfactor();boolif_stat();boolwhile_stat();boolfor_stat();boolwrite_stat();boolread_stat();booldeclaration_stat(yī)();booldeclaration_list();boolstat(yī)ement_list();boolcompound_stat();chartoken[20],token1[40];?? //token保存單詞符號,token1保存單詞值FILE*fp;? ? ??//用于指向輸入文獻的指針intEsLine = 0;typedefstruct{ intes; intline;}EsInf;std::vector<EsInf>?StackEs;//語法分析程序voidProcessError(intes){?EsInf temp;?temp.es??= es; temp.line =?EsLine;?StackEs.push_back(temp);}boolReadFile(char*tok,char*tok1){?if(feof(fp)) returnfalse;?fscanf(fp,"%s\t%s\n",tok,tok1);?printf("%s\t%s\n",tok,tok1);?EsLine++; returntrue;}boolTESTparse(char*pFileName){?booles?= true; if((fp=fopen(pFileName,"r"))==NULL) {??printf("\n打開%s錯誤!\n",pFileName); returnfalse; }?else??program(); if(!feof(fp)) ?ProcessError(9);?fclose(fp); printf("=====語法分析結(jié)果!=====\n");?if(StackEs.size()==0)?{??printf("語法分析成功!\n");??returntrue;?}?else?{ ?inti; for(i=0;i<StackEs.size();i++)??{?? printf("在第%d行",StackEs[i].line); switch(StackEs[i].es) ?{?? ?case1:printf("缺少{!\n");break; ? ?case2:printf("缺少}!\n");break; ? case3:printf("缺少標(biāo)記符!\n");break; ? case4:printf("缺少分號!\n");break; ???case5:printf("缺少(!\n");break;? ??case6:printf("缺少)!\n");break;??? case7:printf("缺少操作數(shù)!\n");break;?? case8:printf("文獻為空!\n");break; ? case9:printf("文獻尾有多余字符!\n");break; ? case10:printf("\n打開%s錯誤!\n",pFileName);break; }? }? returnfalse;?}}//《程序》::={<聲明序列><語句序列>}//program::={<declarat(yī)ion_;list><statement_list>}boolprogram(){ booles=true;?if(ReadFile(token,token1)==false) { ProcessError(8); ? //文獻結(jié)束? returnfalse; } if(strcmp(token,"{")) ??//判斷是否為‘{’ ?ProcessError(1);?if(ReadFile(token,token1)==false)?//文獻中僅有{? ProcessError(2); ? ? es = declaration_list(); if(es==false)? returnfalse; es =?statement_list();?if(es==false) returnfalse;?if(strcmp(token,"}"))?? //判斷是否為‘}’??ProcessError(2);?returntrue;}//<聲明序列>::=<聲明序列><聲明語句>|<聲明語句>//<declaration>::=//<declaration_list><declaration_stat>|ε//改成<declarat(yī)ion_list>::={<declaration_stat(yī)>}booldeclaration_list(){?booles=true;?while(strcmp(token,"int")==0)?{ ?es =?declaration_stat(); ?if(es==false) ?returnfalse; } returnes;}//<聲明語句>::=int<變量>;//<declarat(yī)ion_stat>::=intID;booldeclarat(yī)ion_stat(){ booles=true; if(ReadFile(token,token1)==false)?{ ?ProcessError(2); ?//缺少} returnfalse; ?? //文獻結(jié)束 }?if(strcmp(token,"ID")) ?ProcessError(3);//不是標(biāo)記符 if(ReadFile(token,token1)==false) {? ProcessError(2); //缺少}??returnfalse; ? //文獻結(jié)束?}?if(strcmp(token,";")) ProcessError(4); if(ReadFile(token,token1)==false) { ?ProcessError(2); //缺少} returnfalse; ?//文獻結(jié)束 } return(es);}//<語句序列>::=<語句序列><語句>|ε//<statement_list>::=<statement_list><statement>|ε//改成<statement_list>::={<statement>}boolstat(yī)ement_list(){?booles =?true; if(feof(fp)) ?returnfalse; while(strcmp(token,"}")) { ?es =?statement(); ?if(es==false)? return(es); } return(es);}//<語句>::=<if語句>|<while語句>|<for語句>|<read語句>//|<write語句>|<復(fù)合語句>|<表達式語句>//<stat(yī)ement>::=<if_sttat>|<while_stat(yī)>|<for_stat(yī)>//|<compound_stat>|<expression_stat>boolstat(yī)ement(){ booles?= true; if(strcmp(token,"if")==0) ?es=if_stat(); ? ??//<if語句>?elseif(strcmp(token,"while")==0)??es=while_stat();?? //<while語句>?elseif(strcmp(token,"for")==0) ?es=for_stat();?? ??//<for語句> elseif(strcmp(token,"read")==0) es=read_stat();? ? ? //<read語句> elseif(strcmp(token,"write")==0)??es=write_stat();? ? //<write語句> elseif(strcmp(token,"{")==0) es=compound_stat(); ? ??//<復(fù)合語句> elseif(strcmp(token,"ID")==0||strcmp(token,"NUM")==0||strcmp(token,"(")==0) ?es=expression_stat(yī)();?? ?//<表達式語句> return(es);}//<if語句>::=if(<表達式>)<語句>[else<語句>]//<if_stat>::=if(<expressiion>)<statement>[else<stat(yī)ement>]boolif_stat(){ booles = true;? ? //if if(ReadFile(token,token1)==false)?{ ?ProcessError(2);? ?//缺少} ?returnfalse;?? //文獻結(jié)束 }?if(strcmp(token,"("))? ProcessError(5);? ? //少左括號 if(ReadFile(token,token1)==false)?{? ProcessError(2);?? //缺少} ?returnfalse;? ??//文獻結(jié)束?} es=expression();?if(es==false)? return(es);?if(strcmp(token,")")) ?ProcessError(6);?? //少右括號?if(ReadFile(token,token1)==false) { ?ProcessError(2); ??//缺少}? returnfalse; ???//文獻結(jié)束?} es=statement(); if(es==false) ?return(es); if(strcmp(token,"else")==0) //else部分解決 {??if(ReadFile(token,token1)==false)? { ? ProcessError(2); //缺少}???returnfalse;????//文獻結(jié)束? }? es=stat(yī)ement(); ?if(es==false)? return(es);?} return(es);}//<while語句>::=while(<表達式>)<語句>//<while_stat>::=while<espr><statement>boolwhile_stat(){?booles=true; if(ReadFile(token,token1)==false) { ?ProcessError(2);?? //缺少}??returnfalse;????//文獻結(jié)束 }?if(strcmp(token,"(")) ProcessError(5); ?? //少左括號?if(ReadFile(token,token1)==false)?{? ProcessError(2); ??//缺少} returnfalse; ?//文獻結(jié)束?} es?=?expression();?if(es==false)??return(es);?if(strcmp(token,")"))? ProcessError(6); //少右括號 if(ReadFile(token,token1)==false)?{ ProcessError(2);?? //缺少} ?returnfalse;? ??//文獻結(jié)束 }?es=statement(); if(es==false)??returnes; return(es);}//<for語句>::=for(<表達式>;<表達式>;<表達式>)<語句>//<for_stat>::=for(<expression>;<expression>;<expression>)<statement>boolfor_stat(){?booles?= true; if(ReadFile(token,token1)==false) { ProcessError(2);???//缺少} ?returnfalse;? ?//文獻結(jié)束?} if(strcmp(token,"("))ProcessError(5);//少左括號?if(ReadFile(token,token1)==false)?{ ProcessError(2);???//缺少} returnfalse; ? //文獻結(jié)束 } es=expression(); if(es==false)return(es); if(strcmp(token,";"))ProcessError(4);//少分號?if(ReadFile(token,token1)==false)?{ ?ProcessError(2);???//缺少}??returnfalse;?? //文獻結(jié)束 } es=expression(); if(es==false)return(es); if(strcmp(token,";"))ProcessError(4);//少分號?if(ReadFile(token,token1)==false)?{ ProcessError(2); ? //缺少} ?returnfalse;? ?//文獻結(jié)束?}?es=expression(); if(es==false)return(es);?if(strcmp(token,")"))ProcessError(6);//少右括號?if(ReadFile(token,token1)==false)?{??ProcessError(2); //缺少}??returnfalse;????//文獻結(jié)束 }?es=statement(); if(es==false)return(es);?returnes;}//<write_語句>::=write<表達式>;//<write_stat>::=write<expression>boolwrite_stat(){ booles=true;?if(ReadFile(token,token1)==false)?{ ProcessError(2); ?//缺少} ?returnfalse;? ??//文獻結(jié)束 }?es=expression(); if(es==false)return(es); if(strcmp(token,";"))ProcessError(4);//少分號 if(ReadFile(token,token1)==false)?{??ProcessError(2);? //缺少}? returnfalse;? ??//文獻結(jié)束?} returnes;}//<read_語句>::=read<變量>//<read_stat>::=readId;boolread_stat(){ booles?= true;?if(ReadFile(token,token1)==false) {??ProcessError(2);???//缺少}? returnfalse; ?//文獻結(jié)束 }?if(strcmp(token,"ID")) ProcessError(3);//少標(biāo)記符if(strcmp(token,";")) ProcessError(4);//少分號 if(ReadFile(token,token1)==false) { ProcessError(2); ? //缺少} returnfalse; ?? //文獻結(jié)束?}?returnes;}//<復(fù)合語句>::{<語句序列>}//<compound_stat>::={<statement_list>}boolcompound_stat()//復(fù)合語句函數(shù){ booles?= true; if(ReadFile(token,token1)==false)?{??ProcessError(2); ??//缺少}??returnfalse;??? //文獻結(jié)束?} es =?statement_list();?if(es==false)? returnes; //--------------new----------?if(strcmp(token1,"}")!=0) ??ProcessError(2); else?{??if(ReadFile(token,token1)==false)??{? ?ProcessError(2);???//缺少}? returnfalse; ???//文獻結(jié)束??} }?//---------------new---------- returnes;}//<表達式語句>::=<<表達式>;|;//<expression_stat>::=<expression>;|;boolexpression_stat(yī)(){?booles?= true;?if(strcmp(token,";")==0) { if(ReadFile(token,token1)==false) ?{ ProcessError(2);? //缺少} ??returnfalse; ?//文獻結(jié)束??}? returnes;?} es=expression(); if(es==false)returnes; if(strcmp(token,";")==0) {??if(ReadFile(token,token1)==false) ?{???ProcessError(2); ??//缺少}? returnfalse;? ??//文獻結(jié)束??}? returnes; }?else {??ProcessError(4);//少分號 } returnes;}//<表達式>::=<標(biāo)記符>=<布爾表達式>|<布爾表達式>//<expression>::=ID=<bool_expr>|<bool_expr>boolexpression(){?booles = true;?intfileadd;?chartoken2[20],token3[40]; if(strcmp(token,"ID")==0)?{ ?fileadd=ftell(fp);//記住當(dāng)前文獻位置 ?if(ReadFile(token2,token3)==false)??{? ProcessError(2); ??//缺少}???returnfalse; ?? //文獻結(jié)束 }??if(strcmp(token2,"=")==0)//'='? { ?if(ReadFile(token,token1)==false)?? {????ProcessError(2);?? //缺少}?? returnfalse; ???//文獻結(jié)束? ?} ? es=bool_expr(); if(es==false)returnes;??}??else??{???fseek(fp,fileadd,0);//若非‘=’,則文獻指針回到‘=’前的標(biāo)記符 ? EsLine--; ?es=bool_expr();? if(es==false)returnes; ?}?}?else?{ es=bool_expr();??if(es==false)returnes;?} returnes;}//<布爾表達式>::= <算術(shù)表達式>[(>|<|>=|<=|==|!=)<算數(shù)表達式>]? //<bool_expr>::=?<additive_expr>[(>|<|>=|<=|==|!=)<additive_expr>]boolbool_expr(){ booles =?true;?es=additive_expr(); if(es==false)returnes;?if(strcmp(token,">")==0||strcmp(token,">=")==0 ?||strcmp(token,"<")==0||strcmp(token,"<=")==0??||strcmp(token,"!=")==0||strcmp(token,"==")==0)?{ ?if(ReadFile(token,token1)==false) {???ProcessError(2); ? //缺少} ??returnfalse;?? //文獻結(jié)束? }??es=additive_expr(); ?if(es==false)returnes;?}?returnes;}//<算數(shù)表達式>::=<項>{(+|-)<項>}//<additive_expr>::=<term>{(+|-)<term>}booladditive_expr(){?booles =?true; es=term(); if(es==false)returnes;?while(strcmp(token,"+")==0||strcmp(token,"-")==0) { if(ReadFile(token,token1)==false) { ProcessError(2);?? //缺少}? returnfalse; ? ?//文獻結(jié)束 ?} ?es=term(); ?if(es==false)returnes; }?returnes;}//<項>::=<因子>{(*|/)<因子>}//<term>::=<factor>{(*|/)<factor>}boolterm(){ booles?= true;?es=factor();?if(es==false)returnes; while(strcmp(token,"*")==0||strcmp(token,"/")==0)?{ ?if(ReadFile(token,token1)==false)??{? ProcessError(2); ??//缺少} ?returnfalse; ? //文獻結(jié)束 } es=factor(); if(es==false)returnes; } returnes;}//<因子>::=(<表達式>)|<標(biāo)記符>|<無符號整數(shù)>//<factor>::=(<expression>)|ID|NUMboolfactor(){?booles =?true;?if(strcmp(token,"(")==0) { ?if(ReadFile(token,token1)==false)??{?? ProcessError(2);???//缺少} ??returnfalse; ??//文獻結(jié)束??} es=expression();??if(es==false)returnes;? if(strcmp(token,")"))ProcessError(6);//少右括號 if(ReadFile(token,token1)==false) { ? ProcessError(2);???//缺少} ??returnfalse; ? ?//文獻結(jié)束 }?}?else { ?if(strcmp(token,"ID")==0||strcmp(token,"NUM")==0) {? if(ReadFile(token,token1)==false)???{ ? ProcessError(2);?? //缺少} ??returnfalse;?? ?//文獻結(jié)束? ?}???returnes;??}? else? { ProcessError(7);//缺少操作數(shù) ?}?}?returnes;}Scan.cpp#include<ctype.h>#include<cstring>#include<stdio.h>//保存字#define?KEYWORDNUM 8char *pKeyword[KEYWORDNUM]?=?{"if","else","for","while","do","int","read","write"};//單分界符char?szSingleWord[50]?=?"+-(){};,:";//雙分界符char szDoubleWord[10] = "<>!";//其他符char *szDivide? ?= "/";char *szStar ? =?"*";char?*szEqual?? = "=";#defineSTATUSNUM? 16 ?//狀態(tài)個數(shù)#defineDATANUM 10 //數(shù)據(jù)流個數(shù)//數(shù)據(jù)流類型typedefunsignedintDATA;#defineOTHER? ?0? //wronginput#defineLETTER ? 1 ?//字母#defineDIGIT ? 2 //數(shù)字#defineSINGLEWORD? 3 ?//單分界符#defineDOUBLEWORD 4? //雙分界符#defineDIVIDE? ?5 ?///#defineEQUAL ??6??//=#defineSTAR?? 7??//*#defineSPACE ?8 ?//空白#defineFILEOVER??9? //狀態(tài)類型typedefunsignedintSTATUS;#defineNOSTATUS??0 //wronginput#defineSTART 1#defineCASE_ID? ?2?#defineEND_ID ? 3 #defineCASE_NUM 4 #defineEND_NUM?? 5#defineCASE_SINGLE ?6#defineEND_SINGLE? 7 #defineCASE_DOUBLE??8#defineCASE_DOUBLE2 9#defineEND_DOUBLE ?10 #defineCASE_DIVIDE??11#defineCASE_NOTE 12#defineEND_NOTE 13#defineCASE_ERROR??14#defineEND_ERROR ?15 //狀態(tài)轉(zhuǎn)換表// :到達終結(jié)狀態(tài)的數(shù)據(jù)不保存在輸出串中int?reflect[STATUSNUM][DATANUM] ={ ? ?//OTHER? LETTER DIGIT ?SINGLEWORD DOUBLEWORD DIVIDE ?EQUAL? STAR SPACE FILEOVER/*NOSTATUS*/?{NOSTATUS,?NOSTATUS,?NOSTATUS, NOSTATUS,?NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS},/*START*/??{CASE_ERROR,CASE_ID,?CASE_NUM, CASE_SINGLE,CASE_DOUBLE,CASE_DIVIDE,CASE_DOUBLE,CASE_SINGLE,START,??START},/*CADE_ID*/ ?{END_ID,?CASE_ID,?CASE_ID, END_ID,? END_ID,??END_ID, ?END_ID, END_ID,? END_ID,??END_ID},/*END_ID*/??{NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS, NOSTATUS},/*CASE_NUM*/?{END_NUM,?END_NUM,?CASE_NUM,?END_NUM, END_NUM,?END_NUM, END_NUM,?END_NUM, END_NUM, END_NUM},/*END_NUM*/??{NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS, NOSTATUS,?NOSTATUS},/*CASE_SINGLE*/{END_SINGLE,END_SINGLE,?END_SINGLE, END_SINGLE, END_SINGLE,?END_SINGLE,?END_SINGLE, END_SINGLE, END_SINGLE, END_SINGLE},/*END_SINGLE*/ {NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS},/*CASE_DOUBLE*/ {END_SINGLE,END_SINGLE,?END_SINGLE,?END_SINGLE, END_SINGLE,?END_SINGLE, CASE_DOUBLE2,END_SINGLE,END_SINGLE, END_SINGLE},/*CASE_DOUBLE2*/{END_DOUBLE,END_DOUBLE, END_DOUBLE,?END_DOUBLE,?END_DOUBLE, END_DOUBLE, END_DOUBLE,?END_DOUBLE,?END_DOUBLE,?END_DOUBLE},/*END_DOUBLE*/ {NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS, NOSTATUS,?NOSTATUS,?NOSTATUS},/*CASE_DIVIDE*/ {END_SINGLE,END_SINGLE, END_SINGLE, END_SINGLE,?END_SINGLE,?END_SINGLE, END_SINGLE,?CASE_NOTE,?END_SINGLE, END_SINGLE},/*CASE_NOTE*/ {END_NOTE, END_NOTE,?END_NOTE, END_NOTE, END_NOTE, END_NOTE,?END_NOTE, END_NOTE,?END_NOTE, END_NOTE},/*END_NOTE*/?{NOSTATUS,?NOSTATUS,?NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS, NOSTATUS,?NOSTATUS,?NOSTATUS},/*CASE_ERROR*/ {END_ERROR,?END_ERROR,?END_ERROR,?END_ERROR,?END_ERROR,?END_ERROR,?END_ERROR, END_ERROR, END_ERROR, END_ERROR},/*END_ERROR*/ {NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS,?NOSTATUS, NOSTATUS,?NOSTATUS}};//若在pString中找到word則返回true,否則,返回falseboolSearchChar(charword,constchar*pString){?intn =?strlen(pString); for(inti=0;i<n;i++)?{? if(word==pString[i])? returntrue;?}?returnfalse;}//得到word的數(shù)據(jù)流類型DATAGetDataByword(charword){ if(word==EOF) returnFILEOVER;?if(isalpha(word))? returnLETTER; if(isdigit(word)) returnDIGIT;?if(SearchChar(word,szSingleWord))? returnSINGLEWORD;?if(SearchChar(word,szDoubleWord))? returnDOUBLEWORD; if(SearchChar(word,szDivide)) returnDIVIDE;?if(SearchChar(word,szEqual))? returnEQUAL;?if(SearchChar(word,szStar))? returnSTAR; if(isspace(word)) ?returnSPACE; returnOTHER;}//得到從status狀態(tài)輸入word后到達的狀態(tài)STATUSGetNextStatus(STATUSstat(yī)us,DATAword){ returnreflect[status][word];}//返回值表達錯誤個數(shù)。當(dāng)返回值為-1時,表達出現(xiàn)未知錯誤intTESTScan(FILE*fin,FILE*fout){?if(fin==NULL||fout==NULL) //若fin或fout為空,則此法分析失敗 return0; ?intes=0; ?//記錄結(jié)果中錯誤的個數(shù)?char?szScanout[40];?//存放要寫入文獻的內(nèi)容?DATA data; //初始化?STATUS status =?START;?int i=0; charw

溫馨提示

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

評論

0/150

提交評論