金融指標編譯解釋系統(tǒng)的分析與設(shè)計_第1頁
金融指標編譯解釋系統(tǒng)的分析與設(shè)計_第2頁
金融指標編譯解釋系統(tǒng)的分析與設(shè)計_第3頁
金融指標編譯解釋系統(tǒng)的分析與設(shè)計_第4頁
金融指標編譯解釋系統(tǒng)的分析與設(shè)計_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要

在股票軟件投資中,金融指標已經(jīng)成為了投資者輔助分析行情的必要工具。也是一款股票行情軟

件必備的功能。我們公司在研發(fā)自主PC金融客戶端期間就十分重視金融指標工具給用戶代碼的價值。

指標系統(tǒng)支持用戶自定義公式,來篩選符合條件的股票,如果在幾T一只股票中,一只只篩選,不但

費時費力,而且,有時還會錯過好的個股。通過選股指標公式的編寫與使用,可以幫助快速選出符合條

件的個股。這樣,可以將更多的時間與精力,放在對選出個股的進一步分析與選定上。

對于選定后考慮買入的個股,有時,可能會因為各種原因,錯過最佳的買入時機。通過編寫和使用

買入信號預(yù)警指標公式,就能在盤中自動提示買入預(yù)警信號的出現(xiàn),以幫助防止錯過最佳的買入時機。

對于持有的個股,有時,也有可能會因為各種原因,而錯過最佳的賣出時機。通過編寫和使用賣出

信號預(yù)警公式,能在盤中自動提示賣出預(yù)警信號的出現(xiàn),以幫助防止錯過最佳的賣出時機。

最重耍的是,掌握指標公式的編寫,可以將自己所掌握的、有效的交易技術(shù),編寫成程序化交易系

統(tǒng)公式,以進行機械化交易。

基于以上給用戶帶來的巨大價值的多種原因,木課題應(yīng)運而生。本系統(tǒng)采用C++作為主要編程語言,

其中應(yīng)用了Flex作為詞法分析庫實現(xiàn)了,詞法分析和宏預(yù)處理器。同時bison庫實現(xiàn)了語法分析。最后

通過詞法分析?,語法分析將指標公式解釋成LUA腳本,通過c++/kia相互通信實現(xiàn)了,實現(xiàn)了金融數(shù)

據(jù)導出。通過執(zhí)行LUA腳本,實現(xiàn)了用戶自定義公式所要達到的功能。

關(guān)鍵詞;c++,lua,flex,bison.

第1章前言

1.1課題的來源和目的

指標公式就是在股票軟件中,所開發(fā)使用的程序。掌握指標公式的編寫,可以將自己所掌握的交易

技術(shù),編寫成交易系統(tǒng)公式,基于歷史數(shù)據(jù),對其進行回測驗證,以了解其獲勝率如何。這樣,避免了

對技術(shù)的盲目使用。

對于獲勝率較高的交易技術(shù),可以據(jù)其編寫出看盤指標公式,使得相關(guān)信號在盤面中能夠直觀、即

時地顯示,方便了看盤及盤面分析。

1.1.1金融指標在股票投資中的應(yīng)用

學習與掌握指標公式的編寫,又非常之簡單。指標解析系統(tǒng)將復雜的算法進行了封裝,僅僅導出簡

單的APL讓用戶無需學習復雜的語法規(guī)則。且本系統(tǒng)中所采用的語法規(guī)則完全兼容目前市場主流軟件

的指標公式,比如大智慧,同花順,通達信等。具有簡單,通用,兼容等特性。

金融指標在金融投資中是如何別具體應(yīng)用的呢?比如MACD指標有“指標之王”的美譽,其技術(shù)

不僅自成體系,還可與任何技術(shù)結(jié)合運用。MACD指標可以幫助確立交易區(qū)間,可以幫助判斷底部、

可以幫助判斷頂部、可以幫助判斷回調(diào)的開始與結(jié)束、可以幫助判斷反彈的開始與結(jié)束、可以幫助把握

到相對精準的買賣點……。再比如隨機指標KDJ一般是用于股票分析的統(tǒng)計體系,根據(jù)統(tǒng)計學原理,

通過一個特定的周期(常為9日、9周等)內(nèi)出現(xiàn)過的最高價、最低價及最后一個計算周期的收盤價及

這三者之間的比例關(guān)系,來計算最后一個計算周期的未成熟隨機值RSV,然后根據(jù)平滑移動平均線的

方法來計算K值、D值與J值,聲繪成曲線圖來研判股票走勢。

正確的應(yīng)用金融指標可以幫助投費進行股票篩選,投資預(yù)警,投資前的市場分析和股票預(yù)測,所以

金融指標編譯解釋系統(tǒng)對用戶來說有這極大的實用價值。

1.2開發(fā)工具的選擇

1.2.1qtcreatorC++簡介

QiCreator是跨平臺的QtIDE,QtCreator是Ql被Nokia收購后推出的一款新的輕量級集成開

發(fā)環(huán)境(IDE)o此IDE能夠跨平臺運行,支持的系統(tǒng)包括Linux(32位及64位)、MacOSX以

及Windows。根據(jù)官方描述,QlCreator的設(shè)計目標是使開發(fā)人員能夠利用Qt這個應(yīng)用程序框架更加

快速及輅易的完成開發(fā)仔務(wù).

QiCreator包括項目生成向?qū)?、高級的C++代碼編輯器、瀏覽文件及類的工具、集成了Ql

Designer、QtAssistantsQtLinguist%圖形化的GDB調(diào)試前端,集成qmake構(gòu)建工具等。

QtCreator主要是為「幫助新Qt用戶更快速入門并運行項目,還可提高有經(jīng)驗的Qt開發(fā)人員的工

作效率。使用強大的C++代碼編輯器可快速編寫代碼。語法標識和代碼完成功能輸入時進行靜態(tài)代碼

檢驗以及提示樣式上下文相關(guān)的幫助代碼折疊括號匹配和括號選擇模式高級編輯功能。集成了領(lǐng)先的版

本控制軟件,包括Git>Perforce司Subversion開放式文件,無須知曉確切的名稱或位置搜索類和文件

跨不同位置或文件沿用符號在頭文件和源文件,或在聲明和定義之間切換。成了特定于Qt的功能,如

信號與槽(Signals&Slots)圖示調(diào)試器,對Qt類結(jié)構(gòu)可一目了然集成了QtDesigner可視化布局和格

式構(gòu)建播只需單擊一卜就叼生成和運彳丁Qt項目。

1.2.2Flex,bison簡介

Flex和bison是兩個用來生成程序的工具,它們生成的程序分別叫做詞法分析器和語法分析器,工

作中主要是用來生成SQL語句的詞法和語法分析器。

詞法/語法

編譯

分析器的可

執(zhí)行程序

詞法分析器和語法分析器是如何工作的?任何一種語言,都是有一定的語法規(guī)則的,不管是人類的語言,

還是計算機語言(如C/C++編程語言等),因此,可以利用這些已知的規(guī)則,來對相應(yīng)的語言進行分析。

舉個例子,漢語中的一個句子,基本的格式是:主(名詞/代詞)+謂(動詞)+賓(名詞/代詞),當你

在說一句話的時候,我們把你說的話(輸入)先拆分成一個個有意義的字或者詞組,然后對照該語法,

看詞性及組合,是否符合既定的語法規(guī)范,如果符合,則可以知道你說的話是符合規(guī)范的。比如,你說

“我吃飯1輸入會被依次拆成“我…吃2飯'?,它們分別是代訶、動詞、名訶,因此符合」.面的語法規(guī)次,

因此這句話是OK的。而如果說“我飯吃”,則會發(fā)現(xiàn)與上面的規(guī)范不符合(也沒有其他符合的規(guī)范),

因此這句話語法上市有問題的。Flex和bison生成的詞法和語法分析器就是干這兩件事的,F(xiàn)lex生成的

詞法分析器將輸入拆分成一個個記號(token),bison生成的語法分析器根據(jù)已有的規(guī)則,分析這些token

的組合,是否符合語法規(guī)范。

e

d,

嵌究K常程型也以

e數(shù)可

了研u余通過類e

q(函l

為個i百言向用b

r;a

是一n一面通)t

e語e。

的的H種r

僅土持u和等

s

目里z僅宿支一o包

)il載

計ou由。了c

rL后(閉重

設(shè)i;供

e譯樣包過和

其n和提

a編制一閉承

Js只通

,e,機

el能;:;繼

放de放和

C功理配持,

開o開口

ir的管匹支數(shù)

式Ra接)

fm式置存式函

形oe形展程

yd內(nèi)內(nèi)模虛

tl擴線

碼ia碼置,

s就動

代rW代的內(nèi)的象

e、來自

語配,語源vy源用言持抽

ih木;

的匹宣的以。nc以使)語支據(jù)

:+Us是g

電」

f飛笄3成法并cm并于n所

tofns謂能iii;數(shù)

4)生器+合句ll易像m

寫功oa寫m象統(tǒng)如

n析主個hs常就a

o編制tu編r對系比

si分則一ar非,g

言定Ce言o,作,

b法規(guī)是ll

語和a語了們r合操制

cop

CitC供它l

展fra集非機

in

準擴te準提用o,并鍵

nbai

oot

標的PR標u使c表,關(guān)

(Ln

用活:用以u希程些

學:f

,靈有展可(哈一

大它進

言供員,擴a程,的

教u同

語提成級可L編組協(xié)要

本序主組量。,式數(shù)(需

腳程小輕里能數(shù)現(xiàn)程所

的用該,序功函實線程

內(nèi)和

巧應(yīng),種程些以多編

小為熱的幾的程可供象計

這編

量而約發(fā)下別)它提對

供d

輕里開以入c;向設(shè)

從i用

提n

種,西年有嵌)c,值面統(tǒng)

+i)

一中巴3性的re個持

介+o

90C-l系

渝是序是9o特便cb一支

aa1dara

a程e方ut做地章

uuuru或d(

li很c

L用L于eLc看便

3uCo表2

.2應(yīng)組g以r以方

.ip

1入小F可是(的可很第

宏預(yù)處理詞法分析器

用戶輸入腳本

2.1功能設(shè)計

金融指標編譯解釋系統(tǒng)通過C++語言開發(fā)詞法分析,語法分析主要模塊。采用面向?qū)ο蟮拈_發(fā)模式。

整個系統(tǒng)分為詞法分析器,宏預(yù)處理器,語法分析器和lua執(zhí)行模塊等。

整個系統(tǒng)設(shè)計中主要由forniula_parser,formulas,fonnulaediter二個主要庫構(gòu)成,其中fO持與C++進

行交互規(guī)則的lua腳本。其中formulas主要負責指標算法,API注入到編譯器。接收formuki_parser模

塊返回的lua腳本,并調(diào)用lua編譯器編譯lua腳本,生成字節(jié)碼。通過運行字節(jié)碼后,C++和LUA直

接交互,實現(xiàn)行情數(shù)據(jù)傳遞。fonmilaediier主要用戶公式指標編輯,編譯,測試等功能,編輯器主要提

供了指標輸入,后期可以擴展API智能提示。界面上還提供了支持用戶查詢對應(yīng)API。用戶編輯上指標

后,可以測試指標運行。

formula_parser模塊設(shè)計如下:

詞法分析淵

SourceCode源代碼管理

MacroTaFormulaLexerble宏生成表

IEiTor()utput錯誤輸出

lAPiQucry外部注入API查詢

Driver解析引擎

TextBuilderlua腳本構(gòu)造器

Sematic語法分析器

用于語法解析的復雜操作,本身不做太多解析,調(diào)用builder做解析;主要負責將匹配的表達式傳

給builder做解析,并且將結(jié)果重新壓入棧中

整個流程說明:

1lexer根據(jù)正則表達式將字符信息壓入臨時棧1中

2在規(guī)約一個產(chǎn)生式時,parser從臨時棧1中取出信息,放入臨時棧2中

3parser調(diào)用sematic的規(guī)約處理,sematic從臨時棧2中取出信息

4sematic調(diào)用builder的處理函數(shù),將結(jié)果返回給sematic

5sematic負責從臨時棧2中彈出處理過的信息,將結(jié)果信息放入臨時棧2中

6當整個文本解析完成后,sematic調(diào)用builder輸出各個結(jié)果信息。

Formulas模塊設(shè)計如下:

ClndiCalcCenter指標對外計算接口

Environmenl運行環(huán)境

API注冊相關(guān):Arith,Base,Constant?Covariance,Data,IndexData,Indicate.Logi?MarketQuot,

Math,Memory,Notice.Order,Statistic,Time。

Formulaediter模塊設(shè)計如下:

QAbstractListModel

QDialog

3

HZLocalFunctionDlg

HZFormulaEditerQWidget

A

2.2語法設(shè)計

2.2.1終結(jié)符定義

關(guān)鍵詞設(shè)定

fortodowntowhiledobeginplotifthenelsenumbercolorlinstypeiinethickprecisentrposbreak

%tokentENDPO"endoffile"

%tokcn(FOR"for"(TO"to"(DOWNTO"downto"(WHILE"while"(END"end"(DO"do"(BEGIN"begin,

%tokentPLOT"plot"

%token(IF"if(THEN"then"tELSE"else"

%tokcn<cda(a>(PROCEDURE_IDtFUNCTION_ID(STRFUNC_IDlSPECIAL」D

%token<id>tSTRIDUD(STRINGtQUOTE

%token<id>(NUMBER"number"

%tokcn(VARIABLE"variblc"(LBRACiRBRACtREFLINE"rcflinc"(DATA2"da(a2"tDOT

%token<id>tCOLOR"color"tLINE_TYPE"linetype"tLINE_THICK"linethick"tLINE.PRECIS"precis"

%token<id>tLINE_ALIGN"align"tLINE.ATTR"hideval"tLINE_LAYER"layer"tLINE_MOVE"move"

%tokcn<id>tENTERPLACE"cnicrpos"

%token(COMMAtCOLON"tASSIGN(BREAK"break"

%tokentNEWLINE"\n"【SEMICOLON丁iLPARENiRPAREN〉UNPUT"input"

?4上QP/**-HU外▲0=expressionsrace***/

.22

.23?EOF?(returntoken::tENDP;)

.24{F}{O}{R}returntoken::tFOR;;

.25(T)(0)returntoken::cTO;;

.26{D}{0}{W}{N}{T}{0}returntoken::tD0WNT0;;

.27(WHHHIKLHEIreturntoken::rWHILE;;

.28(D)(O)returntoken::tDO;;

.29

.300](BKEHGKIJ{N>(

.31/*yylval.nData=line_no;returntoken::tBEGIN;;*/

.32returntoken::tBEGIN;

.33

.34

.35{E}{N}{D}returntoken::tEND;

.36(B)(R)(E)(A){K}returntoken::t3REAK;

.37{T}{H}{E}{N}returntoken::cTHEN;;

.38(EHLKSHEIreturntoken::cELSE;;

.39{1}{N}(P){U}{T}returntoken::tINPUT;;

.40{V}{A}{R}{1}{A}{EHL}{E}returntoken::tVARIABLE:;

.41(0)(R)returntoken::COR;;

.42{A}{N}{D}returntoken::tAND;;

.43{P}{L}{0}{1}returntoken::cPLOT;;

.44(R)(E)(F)(L)(I){N}{E}returntoken::tREFLINE;;

.45{D}{A}{T}{A}:returntoken::tDATA2;;

.46

-符目兔父,漱李案

returntoker.::tASSIGN;;

returntoken::tCOLON;;

1?tvreturniokcn::tCOMMA;;

returntoken::tSEMICOLON;;

returnloken::tEQU;;

">="returntokcr.::(GTE;;

returntoken::tGT;;

"<="returntoker.::tIJTE;;

1,<2returntokcn::tLT;;

"<>"returntoker::tNE;;

It111returnioken::tPLUS;;

11IIreturntokcn::tMINUS;;

II/”returntoken::tDIV;;

returnioken::tMUL;;

upireturntoken::lLBRAC;;

Hillreturntoken::tRBRAC;;

returnioken::tLPAREN;;

"),1returniokcn::tRPAREN;;

"%"returntoken::tPERCENT;;

ItItreturnloken::tDOT;:

A[aA]

B[bB]

C[cC]

D[dD]

E[eEl

F[fF]

G[gG]

HfhH]

HilJ

JUJ]

K[kK]

L11L]

M[mM]

N[nN]

O[oO]

P[pP]

QfqQl

R[rR|

S[sS]

T[tT]

U[uU]

V[vV]

W(w\V]

X[xX]

Y[yY]

Z[zZ]

NQUOTE[A,]

BREAKLINE[\n]

COMMENT

STRING,(\l|[A\\'\n])*[,\n]

WHITE[\t\r\f]

NUMBER([0-9]+)|([0-9]*',.,'[0-9]+)|([0-9]+".,,[0-9]*)

WORDla-zA-Z\x80-\xFF_Jla-zA-Z0-9\x80-\xFFJ*

FLOAT([0-9]+)|([0-9]*,,."[0-9]+)|([0-9]+,,."[0-9]*)

QUOTE

2.2.2規(guī)則部分

說明:冒號左邊的是非終結(jié)符,右邊的是終結(jié)符或者非終結(jié)符,終結(jié)符有對應(yīng)的處理。

%startProgram;

件規(guī)則:production{action}*/

/?整個公式文本*/

Program:param_partvar_partstatement」isttENDP

(

/*

判斷輸出個數(shù),不能少于一個

處理整個臨時生成的文本,輸出給builder

通知builder已經(jīng)完成

*/

if(sematic.sym_table_.GetOutputVarNum()==0

&&sematic.draw_statement_count_==0)

(

ERROR_PARSER(FE_ATLEAST_1.OUTPUT);

)

sematic.OutputStaten;ent($1,yylloc);

sematicOiitputStaterrent($7,yylloc):

scniatic.Ou(piitS(atcircnt($3,yylloc);

sematic.Finished();

YYACCEPT;

}

/*共用*/

語句結(jié)尾,分號;*/

statement_end:(SEMICOLON{/*donothing*/;}

|not_semicolon

{ERROR_PARSER(FE_NEED_SEMICOLON,driver.lcxer_->YYTcx(());}

/*右括號)*/

parcn_end:tRPAREN{Z*donothing*/;}

|not_semicolon

|(SEMICOLON

{ERROR_PARSER(FE_NEED_RPAREN.driver.lexcr_->YYText());}

/*不是分號*/

not_scmicolon:var_namc

ItENDP{/*donothing*/$$=0;)

/*數(shù)字,包含正負數(shù)*/

number:tNUMBER

{

/*

從lexer中取到數(shù)據(jù),放入parser中

*/

S$=sematic.PushFromLcxer($1);

}

I(MINUStNUMBER%prec(UMINUS

(

/*

從lexer中取到數(shù)據(jù),放入parser中

處理負數(shù)

*/

S2=sematio.PushFromLcxcr($2);

if(!sematic.BuildLJminus($$,$2,yylIoc))YYERROR;

var_name:(ID{$$

sematic.PushFromLexer($I);}

ItFUNCTION_ID

{ERROR_PARSER(FE_RESERVED_WORD,$l->func_name.c_str());)

|tPROCFDIJREJD

{ERROR_PARSER(FE_RESERVED_WORD,$1->func_namc.c_str());}

|lSTRFUNC_ID

{ERROR_PARSER(FE_RESERVED_WORD,$l->func_name.c_str());}

ItNUMBER

|tSTRING

{ERROR_PARSER(FE_NUMBER_IS_VAR,(sematic.LexerAt($l)->GetName().c_str()));}

/*input:a(.

param_part:{/*可以為空*/;$$=/;}

ItINPUT(COLONparam_liststa(cmcnt_cnd

(

/*

處理input語句

輸出生成的inpul語句

*/

if(!sematic.BuildInput($S,$3.yylloc))YYERROR;

)

|tINPUT

(

/*

input需要

*/

ERROR_PARSER(FE_NEED_COLON,"PARAM");

)

param」ist:param_listtCOMMAparam_def

/*

愉入?yún)?shù)個數(shù)"

if(輸入?yún)?shù)個數(shù)超過MAX_FUNC_PARAM(16個))

crrorO

end

處理輸入?yún)?shù)定義的逗號

*/

sematic.param_num_++;

if(sematic.param_num_>MAX_FUNC_PARAM)

(

ERROR_PARSER(FE_PARAM_MORE_NUMBER);

}

if(!sematic.BuildVarList($$,$1,$3,yylloc))YYERROR;

}

|param_def

I

/*輸入?yún)?shù)個數(shù)為1*/

sematic.param_num_=1;

$$=$);

)

param_def:var_nametLPARENparam_dataparen_end

(

/*

處理參數(shù)定義

*/

if(!sematic.BuildParam(S$,$1,yylloc))YYERROR;

)

param_data:param_datatCOMMAnumber

{

/*

輸入?yún)?shù)的參數(shù)個數(shù)++

if(輸入?yún)?shù)的參數(shù)個數(shù)超過MAX_PARAM_DEF(4個))

error()

end

記錄參數(shù)的位置

*/

sematic.param_var_.push_back(S3);

if(sematic.parani_var_.size()>MAX_PARAM_DEF)

{

ERROR_PARSER(FE_MORE_PARAM_DEF);

}

S$=-1;

)

Inumber

(

sematic.param_var_.clear();

sematic.param_var_.push_back($1);

S$=-l;

/*varible:a=10,b[10]=l;variable:d=l;*/

var_part:{/*可以為空*/$$=/;)

|var_sta(cmcnts{/*donothing*/$$=$1:)

var_statements:var_statementsvar_declare{if(!sematic.Plus2Exp($$,$1,$2,

yylloc))YYERROR;}

|var_deciare!$$=$1;)

var_declarc:(VARIABLE(COLONvar」iststatcmcnt_end{if(!scmatic.BuildVariablc($$.

$3,yylloc))YYERROR;}

ItVARIABLE

{ERROR_PARSER(FE_NEED_COLON;'variable");}

varjist:vajlisttCOMMAvar_def

{if(!scmatic.BuildVarList($$,Sl,$3.yylloc))YYERROR;}

|var_def{S$=$l;)

var_dcf:var_nametEQUnumber

(

/*

處理全局變量定義

*/

if(!semadc.BuildVarAssign($$,Si,$3.yylloc))YYERROR;

)

|var_nametEQUtSTRING

(

S3=sematic.PushFromLexer($3);

if(!sematic.BuildVarAssign($$,SI.$3,yylloc))YYERROR;

}

|var_nametLBRACnumbertRBRACtEQUnumber

{

if(!sematic.BuildVarArrayAssign(S$,$1,$3,$6,yylloc))YYERROR:

)

|var_nametLBRACnumber(RBRACtEQUtSTRING

(

S6=sematic.PushFromLexer($6);

if(!sematic.BuildVarArrayAssign(S$,$I,$3,$6,yylloc))YYERROR;

)

|var_nametLBRACnumbertRBRAC

|var_name

{ERROR_PARSER(FE_VAR_NOT_TYPED,sematic.FronlAt($l)->GetName().c_str());)

/?statementlist*/

statementlist:statementliststatement

初始化語句屬性

語句相加

*/

sematic.InitStatementAttrO;

if(?sematicPhis?Fxp($$,$1,$2,yylloc))YYFRROR:

)

|statement

(

/*

初始化語句屬性

*/

scmatic.InitStatcmcntAurO;

S$=$l;

)

statement:simple_statementstatement_end

(

/*簡單語句*/

if(!sematic.BuildStatement($$,SI,yylkx:))YYERROR;

}

Icomplcx_sta(cnicnt

(

/*復雜語句*/

S$=$l;

)

|tBREAK

(

/*break*/

if

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論