專(zhuān)利名稱(chēng):腳本的執(zhí)行方法及系統(tǒng)的制作方法
腳本的執(zhí)行方法及系統(tǒng)技術(shù)領(lǐng)域:
本發(fā)明涉及軟件處理領(lǐng)域,特別涉及腳本的執(zhí)行方法及系統(tǒng)。背景技術(shù):
腳本語(yǔ)言,如Py thon(面向?qū)ο?、直譯式程序設(shè)計(jì)語(yǔ)言),TCL(Tool Command Language,腳本語(yǔ)言)等,又稱(chēng)動(dòng)態(tài)語(yǔ)言,其是一種解釋性的語(yǔ)言,不需要編譯,可直接運(yùn)行。腳本語(yǔ)言由解釋器來(lái)負(fù)責(zé)解釋執(zhí)行,易掌握,具備良好的快速開(kāi)發(fā)效率,在自動(dòng)化測(cè)試領(lǐng)域應(yīng)用廣泛。
將腳本語(yǔ)言編輯成腳本,腳本被執(zhí)行時(shí),傳統(tǒng)的方法是使用腳本引擎解釋執(zhí)行腳本,然而采用這種方法,腳本執(zhí)行效率低。其中,腳本引擎是計(jì)算機(jī)編程語(yǔ)言的解釋器。
發(fā)明內(nèi)容
基于此,有必要提供一種能提高腳本執(zhí)行效率較的腳本的執(zhí)行方法。
一種腳本的執(zhí)行方法,包括以下步驟
預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系;
讀取腳本源代碼;
根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼;
將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼;
執(zhí)行所述可執(zhí)行代碼。
優(yōu)選地,還包括步驟將所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。
優(yōu)選地,在所述讀取腳本源代碼的步驟之后還包括解析所述腳本源代碼,獲取所述腳本源代碼中的關(guān)鍵字;
根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼的步驟為根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。
優(yōu)選地,所述聞級(jí)語(yǔ)目為C/C++語(yǔ)目或Java語(yǔ)目。
優(yōu)選地,當(dāng)高級(jí)語(yǔ)言為C/C++語(yǔ)言時(shí),將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體為調(diào)用編譯工具GCC/G++將C/C++語(yǔ)言編譯為可執(zhí)行代碼;
當(dāng)高級(jí)語(yǔ)言為Java語(yǔ)言時(shí),將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體為調(diào)用編譯工具Javac將Java語(yǔ)言編譯為可執(zhí)行代碼。
此外,還有必要提供一種能提高腳本執(zhí)行效率的腳本的執(zhí)行系統(tǒng)。
一種腳本的執(zhí)行系統(tǒng),包括
存儲(chǔ)模塊,用于預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系;
解析模塊,用于讀取腳本源代碼;
轉(zhuǎn)換模塊,用于根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼;
編譯模塊,將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼;
執(zhí)行模塊,用于執(zhí)行所述可執(zhí)行代碼。
優(yōu)選地,所述存儲(chǔ)模塊還用于將所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。
優(yōu)選地,所述解析模塊還用于解析所述腳本源代碼,獲取所述腳本源代碼中的關(guān)鍵字;所述轉(zhuǎn)換模塊還用于根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。
優(yōu)選地,所述聞級(jí)語(yǔ)目為C/C++語(yǔ)目或Java語(yǔ)目。
優(yōu)選地,當(dāng)聞級(jí)語(yǔ)目為C/C++語(yǔ)目時(shí),所述編譯模塊還用于調(diào)用編譯工具GCC/G++ 將C/C++語(yǔ)言編譯為可執(zhí)行代碼;
當(dāng)高級(jí)語(yǔ)言為Java語(yǔ)言時(shí),所述編譯模塊還用于調(diào)用編譯工具Javac將Java語(yǔ)言編譯為可執(zhí)行代碼?!?br>
上述腳本的執(zhí)行方法及系統(tǒng),將腳本源代碼轉(zhuǎn)換為某種高級(jí)語(yǔ)言源代碼,再將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼執(zhí)行,因最后執(zhí)行編譯后的可執(zhí)行代碼,不需解釋腳本源代碼,因此能提高腳本執(zhí)行的效率。
圖1為一個(gè)實(shí)施例中腳本的執(zhí)行方法的流程圖2為一個(gè)實(shí)施例中腳本的執(zhí)行系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合具體的實(shí)施例及附圖對(duì)腳本的執(zhí)行方法及系統(tǒng)的技術(shù)方案進(jìn)行詳細(xì)的描述。
如圖1所示,在一個(gè)實(shí)施例中,一種腳本的執(zhí)行方法,包括以下步驟
步驟SI 10,預(yù)先存儲(chǔ)腳本語(yǔ)目與聞級(jí)語(yǔ)目之間的語(yǔ)法對(duì)應(yīng)關(guān)系。
為了將腳本語(yǔ)言轉(zhuǎn)換為高級(jí)語(yǔ)言,需預(yù)先建立兩者之間的語(yǔ)法對(duì)應(yīng)關(guān)系,如建立關(guān)鍵字之間的對(duì)應(yīng)關(guān)系,條件語(yǔ)句之間的對(duì)應(yīng)關(guān)系、邏輯語(yǔ)句之間的對(duì)應(yīng)關(guān)系等,將建立的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ),方便調(diào)用。其中,聞級(jí)語(yǔ)目可為C/C++語(yǔ)目或Java語(yǔ)目。腳本語(yǔ)目可支持各種邏輯語(yǔ)句,如if、else、for、while等。
以高級(jí)語(yǔ)言為C++語(yǔ)言為例說(shuō)明,關(guān)鍵字之間的對(duì)應(yīng)關(guān)系,如腳本語(yǔ)言描述采用 “var a = 3”,C++語(yǔ)言描述為“Object a = 3”;條件語(yǔ)句之間的對(duì)應(yīng)關(guān)系,如腳本語(yǔ)言描述為 “if (a = I or b = 2) ”,C++ 語(yǔ)言描述為 “if (a. equals (I) | | b. equals (2)) ”,邏輯語(yǔ)句之間的對(duì)應(yīng)關(guān)系,如腳本語(yǔ)言“or”,C++語(yǔ)言描述為“ I I ”。
在一個(gè)實(shí)施例中,將腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。采用語(yǔ)法對(duì)應(yīng)表存儲(chǔ)兩者之間的語(yǔ)法對(duì)應(yīng)關(guān)系,方便查找、調(diào)用。采用表的形式存儲(chǔ)僅是一個(gè)實(shí)現(xiàn)方式,但并不限于此種方式。
步驟S120,讀取腳本源代碼。
執(zhí)行腳本時(shí),首先讀取腳本源代碼。
在一個(gè)實(shí)施例中,步驟S120之后,還包括步驟解析該腳本源代碼,獲取該腳本源 代碼中的關(guān)鍵字。如讀取腳本源代碼var a = 3, var b = 4, if (a = I or b = 2),解析得 出關(guān)鍵字var、or。
步驟S130,根據(jù)該腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將該讀取的腳本源代 碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。
讀取腳本源代碼后,根據(jù)預(yù)先存儲(chǔ)的腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系, 將腳本源代碼按照該語(yǔ)法對(duì)應(yīng)關(guān)系,轉(zhuǎn)換為相應(yīng)的高級(jí)語(yǔ)言源代碼。如腳本源代碼為
var a = 3 ;
var b = 4 ;
var oTest = new Test ();
oTest. getField () · setValue ( ‘67,);
if (a = = I or b = = 2)
oTest. getField2 (). setValue ( ‘89,);
將上述腳本源代碼轉(zhuǎn)換成c++源代碼為
Object a = 3 ;
Object b = 4 ;
Test*oTest = new Test ();
oTest- > getField () - > setValue ( ‘67’ );
if (a. equals ⑴ | | b. equals ⑵){
oTest- > getField2 () - > setValue ( ‘89,);
}
在一個(gè)實(shí)施例中,在解析得出腳本源代碼中的關(guān)鍵字,步驟S130為根據(jù)該腳 本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言 源代碼。在解析得出腳本源代碼中的關(guān)鍵字,如“var、new、or、= =、 ”,對(duì)應(yīng)C++中的 “0bject、new、| |、equals、{}”等等。同時(shí),解析得出腳本源代碼中的邏輯語(yǔ)句和對(duì)象使用 方式,還包括將腳本源代碼中的邏輯語(yǔ)句和對(duì)象使用方式轉(zhuǎn)換為相應(yīng)的高級(jí)語(yǔ)言源代碼。 如將腳本源代碼中的邏輯語(yǔ)句“or”,轉(zhuǎn)換為C++語(yǔ)言中的“ I I ”如將腳本中的對(duì)象使用方式 轉(zhuǎn)換為C++語(yǔ)言中的指針使用方式。如腳本源代碼中的“var oTest = new TestO ”,轉(zhuǎn)換 為C++語(yǔ)言“Test*oTest = new Test () 其中,某些邏輯語(yǔ)句可能是關(guān)鍵字。
步驟S140,將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼。
調(diào)用編譯工具將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼。
當(dāng)高級(jí)語(yǔ)言為C/C++語(yǔ)言時(shí),將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體 為調(diào)用編譯工具GCC/G++將C/C++語(yǔ)言編譯為可執(zhí)行代碼。
當(dāng)高級(jí)語(yǔ)言為Java語(yǔ)言時(shí),將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體為 調(diào)用編譯工具Javac將Java語(yǔ)言編譯為可執(zhí)行代碼。
步驟S150,執(zhí)行該可執(zhí)行代碼。
將編譯后的可執(zhí)行代碼調(diào)用,完成執(zhí)行功能。
如圖2所示,在一個(gè)實(shí)施例中,一種腳本的執(zhí)行系統(tǒng),包括存儲(chǔ)模塊210、解析模塊220、轉(zhuǎn)換模塊230、編譯模塊240和執(zhí)行模塊250。其中,
存儲(chǔ)模塊210用于預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系。
建立關(guān)鍵字之間的對(duì)應(yīng)關(guān)系,如條件語(yǔ)句之間的對(duì)應(yīng)關(guān)系、邏輯語(yǔ)句之間的對(duì)應(yīng) 關(guān)系等,存儲(chǔ)模塊210存儲(chǔ)建立的語(yǔ)法對(duì)應(yīng)關(guān)系,方便調(diào)用。其中,高級(jí)語(yǔ)言可為C/C++語(yǔ) H或Java語(yǔ)目。以聞級(jí)語(yǔ)目為C++語(yǔ)目為例說(shuō)明,關(guān)鍵字之間的對(duì)應(yīng)關(guān)系,如腳本語(yǔ)目描 述采用“var a = 3”,C++語(yǔ)言描述為“Object a = 3” ;條件語(yǔ)句之間的對(duì)應(yīng)關(guān)系,如腳本 語(yǔ)言描述為 “if(a = I or b = 2) ”,C++ 語(yǔ)言描述為 “ if (a. equals (I) | | b. equals (2)) ”, 邏輯語(yǔ)句之間的對(duì)應(yīng)關(guān)系,如腳本語(yǔ)言“or”,C++語(yǔ)言描述為“ I I ”。
在一個(gè)實(shí)施例中,存儲(chǔ)模塊210還用于將腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān) 系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。采用語(yǔ)法對(duì)應(yīng)表存儲(chǔ)兩者的語(yǔ)法對(duì)應(yīng)關(guān)系,方便查找、調(diào)用。采用 表的形式存儲(chǔ)僅是一個(gè)實(shí)現(xiàn)方式,但并不限于此種方式。
解析模塊220用于讀取腳本源代碼。執(zhí)行腳本時(shí),首先由解析模塊220讀取腳本 源代碼。此外,解析模塊220還用于解析該腳本源代碼,獲取該腳本源代碼中的關(guān)鍵字。如 讀取腳本源代碼var a = 3, var b = 4, if (a = I or b = 2),解析得出關(guān)鍵字var、or。
轉(zhuǎn)換模塊230用于根據(jù)存儲(chǔ)的腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將讀取 的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。讀取腳本源代碼后,根據(jù)預(yù)先存儲(chǔ)的腳本語(yǔ) 言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系,將腳本源代碼按照該語(yǔ)法對(duì)應(yīng)關(guān)系,轉(zhuǎn)換為相應(yīng)的高 級(jí)語(yǔ)言源代碼。腳本源代碼以及轉(zhuǎn)換為C++源代碼的例子如上述方法中描述,在此不再贅 述。
轉(zhuǎn)換模塊230還用于根據(jù)存儲(chǔ)的腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳 本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。在解析得出腳本源代碼中的關(guān)鍵字, 如 “var、new、or、==、 ”,對(duì)應(yīng) C++中的“0bject、new、| > equals> {}” 等等。同時(shí),解析 得出腳本源代碼中的邏輯語(yǔ)句和對(duì)象使用方式,還包括將腳本源代碼中的邏輯語(yǔ)句和對(duì)象 使用方式轉(zhuǎn)換為相應(yīng)的高級(jí)語(yǔ)言源代碼。如將腳本源代碼中的邏輯語(yǔ)句“or”,轉(zhuǎn)換為C++ 語(yǔ)言中的“ I I ”如將腳本中的對(duì)象使用方式轉(zhuǎn)換為C++語(yǔ)言中的指針使用方式。如腳本源 代碼中的 “var oTest = new Test O ”,轉(zhuǎn)換為 C++語(yǔ)言 “Test*oTest = new Test O”。
編譯模塊240用于將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼。編譯模塊240調(diào)用編譯 工具將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼。
當(dāng)聞級(jí)語(yǔ)目為C/C++語(yǔ)目時(shí),編譯模塊240調(diào)用編譯工具GCC/G++將C/C++語(yǔ)目 編譯為可執(zhí)行代碼。
當(dāng)高級(jí)語(yǔ)言為語(yǔ)言Java時(shí),編譯模塊240調(diào)用編譯工具Javac將Java語(yǔ)言編譯 為可執(zhí)行代碼。
執(zhí)行模塊250用于執(zhí)行編譯后的可執(zhí)行代碼。執(zhí)行模塊250將編譯后的可執(zhí)行代 碼調(diào)用,完成執(zhí)行功能。
上述腳本的執(zhí)行方法及系統(tǒng),將腳本源代碼轉(zhuǎn)換為某種高級(jí)語(yǔ)言源代碼,再將高 級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼執(zhí)行,因最后執(zhí)行編譯后的可執(zhí)行代碼,不需解釋腳本源 代碼,因此能提高腳本執(zhí)行的效率。
另外,上述腳本的執(zhí)行方法及系統(tǒng),不需要開(kāi)發(fā)腳本引擎或解釋器,只需建立腳本 語(yǔ)言與某種高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系,再對(duì)腳本源代碼進(jìn)行解析和轉(zhuǎn)換,相對(duì)于開(kāi)發(fā)腳本引擎或解釋器,設(shè)計(jì)簡(jiǎn)單,開(kāi)發(fā)成本更低;因建立了腳本語(yǔ)言與某種高級(jí)語(yǔ)言之間的語(yǔ) 法對(duì)應(yīng)關(guān)系,在編譯執(zhí)行腳本源代碼時(shí)將其轉(zhuǎn)換為高級(jí)語(yǔ)言源代碼,可在腳本中直接調(diào)用 現(xiàn)有的業(yè)務(wù)庫(kù)中的對(duì)象或函數(shù),不需做任何封裝或包裝,極大地節(jié)省了開(kāi)發(fā)成本;采用表形 式存儲(chǔ)語(yǔ)法對(duì)應(yīng)關(guān)系,更方便查找調(diào)用;解析得出腳本源代碼中的關(guān)鍵字,對(duì)關(guān)鍵字進(jìn)行轉(zhuǎn) 換更方便,提高了轉(zhuǎn)換效率。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并 不能因此而理解為對(duì)本發(fā)明專(zhuān)利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員 來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保 護(hù)范圍。因此,本發(fā)明專(zhuān)利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種腳本的執(zhí)行方法,包括以下步驟 預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系; 讀取腳本源代碼; 根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼; 將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼; 執(zhí)行所述可執(zhí)行代碼。
2.根據(jù)權(quán)利要求1所述的腳本的執(zhí)行方法,其特征在于,還包括步驟將所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。
3.根據(jù)權(quán)利要求1所述的腳本的執(zhí)行方法,其特征在于,在所述讀取腳本源代碼的步驟之后還包括解析所述腳本源代碼,獲取所述腳本源代碼中的關(guān)鍵字; 根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼的步驟為根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。
4.根據(jù)權(quán)利要求1所述的腳本的執(zhí)行方法,其特征在于,所述高級(jí)語(yǔ)言為C/C++語(yǔ)言或Java語(yǔ)言ο
5.根據(jù)權(quán)利要求1所述的腳本的執(zhí)行方法,其特征在于,當(dāng)高級(jí)語(yǔ)言為C/C++語(yǔ)言時(shí),將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體為調(diào)用編譯工具GCC/G++將C/C++語(yǔ)言編譯為可執(zhí)行代碼; 當(dāng)高級(jí)語(yǔ)言為Java語(yǔ)言時(shí),將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼的步驟具體為調(diào)用編譯工具Javac將Java語(yǔ)言編譯為可執(zhí)行代碼。
6.—種腳本的執(zhí)行系統(tǒng),其特征在于,包括 存儲(chǔ)模塊,用于預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系; 解析模塊,用于讀取腳本源代碼; 轉(zhuǎn)換模塊,用于根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼; 編譯模塊,將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼; 執(zhí)行模塊,用于執(zhí)行所述可執(zhí)行代碼。
7.根據(jù)權(quán)利要求6所述的腳本的執(zhí)行系統(tǒng),其特征在于,所述存儲(chǔ)模塊還用于將所述腳本語(yǔ)目與聞級(jí)語(yǔ)目之間的語(yǔ)法對(duì)應(yīng)關(guān)系存儲(chǔ)在語(yǔ)法對(duì)應(yīng)表中。
8.根據(jù)權(quán)利要求6所述的腳本的執(zhí)行系統(tǒng),其特征在于,所述解析模塊還用于解析所述腳本源代碼,獲取所述腳本源代碼中的關(guān)鍵字;所述轉(zhuǎn)換模塊還用于根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將腳本源代碼中的關(guān)鍵字轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼。
9.根據(jù)權(quán)利要求6所述的腳本的執(zhí)行系統(tǒng),其特征在于,所述高級(jí)語(yǔ)言為C/C++語(yǔ)言或Java語(yǔ)言ο
10.根據(jù)權(quán)利要求9所述的腳本的執(zhí)行系統(tǒng),其特征在于,其特征在于,當(dāng)高級(jí)語(yǔ)言為C/C++語(yǔ)言時(shí),所述編譯模塊還用于調(diào)用編譯工具GCC/G++將C/C++語(yǔ)言編譯為可執(zhí)行代碼; 當(dāng)高級(jí)語(yǔ)言為Java語(yǔ)言時(shí),所述編譯模塊還用于調(diào)用編譯工具Javac將Java語(yǔ)言編譯為可執(zhí)行 代碼。
全文摘要
本發(fā)明涉及一種腳本的執(zhí)行方法及系統(tǒng)。該方法包括以下步驟預(yù)先存儲(chǔ)腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系;讀取腳本源代碼;根據(jù)所述腳本語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)法對(duì)應(yīng)關(guān)系將所述讀取的腳本源代碼轉(zhuǎn)化為相應(yīng)的高級(jí)語(yǔ)言源代碼;將所述高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼;執(zhí)行所述可執(zhí)行代碼。上述腳本的執(zhí)行方法及系統(tǒng),將腳本源代碼轉(zhuǎn)換為某種高級(jí)語(yǔ)言源代碼,再將高級(jí)語(yǔ)言源代碼編譯為可執(zhí)行代碼執(zhí)行,因最后執(zhí)行編譯后的可執(zhí)行代碼,不需解釋腳本源代碼,因此能提高腳本執(zhí)行的效率。
文檔編號(hào)G06F9/45GK102999370SQ201110276288
公開(kāi)日2013年3月27日 申請(qǐng)日期2011年9月16日 優(yōu)先權(quán)日2011年9月16日
發(fā)明者徐勇 申請(qǐng)人:騰訊科技(深圳)有限公司