欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法及裝置的制作方法

文檔序號(hào):6372051閱讀:193來(lái)源:國(guó)知局
專利名稱:一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別是涉及一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法及裝置。
背景技術(shù)
應(yīng)用在計(jì)算機(jī)軟件技術(shù)領(lǐng)域,一般指的是軟件平臺(tái)上的應(yīng)用軟件,也是需要借助于平臺(tái)提供給用戶使用的軟件,比如,安卓應(yīng)用、網(wǎng)站應(yīng)用等。一般情況下,需要給同一功能提供不同編程語(yǔ)言的應(yīng)用,比如一個(gè)API (Application Programming Interface,應(yīng)用程序編程接口)往往會(huì)提供多種編程語(yǔ)言的SDK (Software Development Kit,軟件開發(fā)工具包),而這些SDK只是編程語(yǔ)言不一樣而已,功能都一樣。又比如手機(jī)客戶端,如果想讓手機(jī)客戶端在IOS (蘋果操作系統(tǒng),iPhone Operating System)上運(yùn)行,則需要使用object C編程語(yǔ)言開發(fā);如果又想讓手機(jī)客戶端在ANDROID (安卓)系統(tǒng)上運(yùn)行,則又需要使用JAVA編程語(yǔ)言開發(fā)一次。而這兩種不同編程語(yǔ)言的手機(jī)客戶端,功能是一樣的。發(fā)明人在研究過(guò)程中發(fā)現(xiàn),現(xiàn)有技術(shù)中,針對(duì)同一功能,需要針對(duì)不同編程語(yǔ)言分別進(jìn)行多次開發(fā),才能得到每種編程語(yǔ)言對(duì)應(yīng)的應(yīng)用。這不僅使得多種編程語(yǔ)言的應(yīng)用開發(fā)成本大,開發(fā)時(shí)間長(zhǎng),以及浪費(fèi)人力資源,更重要的是,因?yàn)槠溟_發(fā)成本大和開發(fā)時(shí)間長(zhǎng),也會(huì)導(dǎo)致多種編程語(yǔ)言的應(yīng)用的生成效率低下,進(jìn)一步的也會(huì)使得后續(xù)用戶在下載應(yīng)用時(shí)的下載效率低下。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法及裝置,以解決現(xiàn)有技術(shù)中由于多種編程語(yǔ)言的應(yīng)用開發(fā)成本大,開發(fā)時(shí)間長(zhǎng),以及浪費(fèi)人力資源,導(dǎo)致的多種編程語(yǔ)言的應(yīng)用的生成效率低下,以及后續(xù)用戶在下載應(yīng)用時(shí)的下載效率低下的技術(shù)問(wèn)題。為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法,該方法包括獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。優(yōu)選的,所述采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用,具體包括按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分;獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包,并依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。優(yōu)選的,所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)為數(shù)組,則所述將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),具體包括依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表;通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞;使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果;將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。優(yōu)選的,所述依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用,具體包括獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的第一存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的第二存放位置; 依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼;運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件;將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中; 刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。優(yōu)選的,在獲取當(dāng)前模板壓縮包中的配置文件和模板文件之前,還包括將原始模板壓縮包復(fù)制至臨時(shí)目錄;將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。優(yōu)選的,所述編程語(yǔ)言為超文本預(yù)處理PHP編程語(yǔ)言,所述模板文件采用PHP編程語(yǔ)言編譯,則所述依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼,具體包括將所述模板文件中的PHP標(biāo)簽替換為指定的其他標(biāo)記;將所述模板文件中的模板標(biāo)簽替換為所述PHP標(biāo)簽;將所述指定的其他標(biāo)記替換為所述PHP標(biāo)簽。優(yōu)選的,在采用所述多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用之后,還包括接收客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求;依據(jù)所述客戶端使用的編程語(yǔ)言將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)送給所述客戶端。優(yōu)選的,所述編程語(yǔ)目包括但不限于PHP編程語(yǔ)目、JAVA語(yǔ)目、C/C++語(yǔ)目、NET語(yǔ)目、Ruby語(yǔ)目和Python語(yǔ)目。本發(fā)明實(shí)施例還提供了一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的裝置,包括獲取模塊,用于獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;解析模塊,用于采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。優(yōu)選的,所述解析模塊具體包括第一解析子模塊,用于按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分;
獲取子模塊,用于獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包;生成應(yīng)用子模塊,用于依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。優(yōu)選的,所述第一解析子模塊具體包括生成單詞列表子模塊,用于依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表;識(shí)別子模塊,用于通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞;翻譯子模塊,用于使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果;生成數(shù)組子模塊,用于將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。 優(yōu)選的,所述生成應(yīng)用子模塊具體包括獲取文件子模塊,用于獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的第一存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的第二存放位置;第二解析子模塊,用于依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼;運(yùn)行代碼子模塊,用于運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件;存放子模塊,用于將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中;刪除子模塊,用于刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。優(yōu)選的,所述生成應(yīng)用子模塊還包括復(fù)制子模塊,用于將原始模板壓縮包復(fù)制至臨時(shí)目錄;確定子模塊,用于將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。優(yōu)選的,所述第二解析子模塊具體包括第一替換子模塊,用于將所述模板文件中的PHP標(biāo)簽替換為指定的其他標(biāo)記;第二替換子模塊,用于將所述模板文件中的模板標(biāo)簽替換為所述PHP標(biāo)簽;第三替換子模塊,用于將所述指定的其他標(biāo)記替換為所述PHP標(biāo)簽。優(yōu)選的,還包括接收下載請(qǐng)求模塊,用于接收客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求;發(fā)送模塊,用于依據(jù)所述客戶端使用的編程語(yǔ)言將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)送給所述客戶端。從上述的技術(shù)方案可以看出,本發(fā)明實(shí)施例中在本實(shí)施例中,只需要通過(guò)預(yù)先定義描述語(yǔ)言及描述語(yǔ)言解析規(guī)則,就可以利用多種編程語(yǔ)言的詞典來(lái)生成多種編程語(yǔ)言的應(yīng)用,這就節(jié)省了多次編寫多種編程語(yǔ)言的應(yīng)用的時(shí)間和資源,從而也能夠提高生成多種編程語(yǔ)言的應(yīng)用的效率。


為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖I為本發(fā)明的方法實(shí)施例I的流程圖;圖2為本發(fā)明的方法實(shí)施例2的流程圖;圖3為本發(fā)明的方法實(shí)施例2中步驟201的流程圖;圖4為本發(fā)明的方法實(shí)施例2中步驟203的流程圖;圖5為本發(fā)明的方法實(shí)施例2中步驟402的一個(gè)流程圖;圖6為本發(fā)明的方法實(shí)施例2中步驟402的另一流程圖;圖7為本發(fā)明的方法實(shí)施例3的流程圖;圖8為本發(fā)明的裝置實(shí)施例I的結(jié)構(gòu)示意圖; 圖9為本發(fā)明的裝置實(shí)施例I中解析模塊802的結(jié)構(gòu)示意圖;圖10為本發(fā)明的裝置實(shí)施例I中第一解析子模塊901的結(jié)構(gòu)示意圖;圖11為本發(fā)明的裝置實(shí)施例I中生成應(yīng)用子模塊903的一個(gè)結(jié)構(gòu)示意圖;圖12為本發(fā)明的裝置實(shí)施例I中第二解析子模塊1102的結(jié)構(gòu)示意圖;圖13為本發(fā)明的裝置實(shí)施例I中生成應(yīng)用子模塊903的另一結(jié)構(gòu)示意圖;圖14為本發(fā)明的裝置實(shí)施例2的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例的主要思想包括需要先自定義一種描述語(yǔ)言,并定義描述語(yǔ)言解析規(guī)則,再采用所述多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了方便本領(lǐng)域技術(shù)人員對(duì)本發(fā)明實(shí)施例中的描述語(yǔ)言有更清楚詳細(xì)的了解,下面首先對(duì)描述語(yǔ)言及描述語(yǔ)言解析規(guī)則的定義進(jìn)行詳細(xì)介紹。本發(fā)明實(shí)施例中的描述語(yǔ)言可以是XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)文件,也可以是一種擁有自定義語(yǔ)法的代碼片段,其對(duì)應(yīng)于應(yīng)用的可變部分。對(duì)于實(shí)際應(yīng)用中不同類型的應(yīng)用,定義的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則可以有所不同,本領(lǐng)域技術(shù)人員適應(yīng)性的調(diào)整即可。以SDK (Software Development Kit,軟件開發(fā)工具包)類應(yīng)用為例,一個(gè)SDK應(yīng)用的可變部分往往會(huì)有請(qǐng)求方法、請(qǐng)求參數(shù)、請(qǐng)求URL (Uniform ResourceLocator、統(tǒng)一資源定位符)和請(qǐng)求類型等,貝U在本發(fā)明實(shí)施例中可以將請(qǐng)求方法、請(qǐng)求參數(shù)、請(qǐng)求URL和請(qǐng)求類型用XML文件表示。例如如下所示的XML文件<methods> <niethod name= “methodname” > <url>http://www.xxxx.coni/xxx</url><!—定義請(qǐng)求 URL—> <type>POST</type> <!—定義請(qǐng)求類型—> <parameters><!—定義請(qǐng)求參數(shù)--> <paramet e r>p aramete rN a m e I </p arame ter>
<parameter>parameterName2</parameter>
〈/parameters〉
</method>〈/methods〉當(dāng)然,在本發(fā)明實(shí)施例中也可以用一種具有自定義語(yǔ)法的代碼片段來(lái)表示,例如下面所示的代碼片段function methodName (paramterI, paramter2) POST http://xxxx{...}在上述代碼片段中定義了方法名稱、參數(shù)名、請(qǐng)求類型和請(qǐng)求URL。參見圖1,圖I示出了本發(fā)明的一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法實(shí)施例I的流程圖,本實(shí)施例可以包括以下步驟步驟101 :獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則。在本發(fā)明實(shí)施例中,自定義的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則不同,則對(duì)描述語(yǔ)言的解析方法就可能不同。例如,當(dāng)描述語(yǔ)言是XML文件時(shí),可以采用現(xiàn)有的DOM(DocumentObject Model,文檔對(duì)象模型)方法進(jìn)行解析,將XML文件解析為具有關(guān)系的數(shù)據(jù)結(jié)構(gòu),例如數(shù)組。當(dāng)描述語(yǔ)言為自定義的代碼片段時(shí),可以利用本發(fā)明實(shí)施例提供的詞典進(jìn)行解析。需要說(shuō)明的是,一個(gè)應(yīng)用往往會(huì)對(duì)應(yīng)許多文件,有些文件是變化的,有些文件是固定不變的,描述語(yǔ)言可以對(duì)應(yīng)于所述應(yīng)用的可變部分。步驟102 :采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。在步驟102中,則采用需要解析的多種編程語(yǔ)言的詞典,并按照所述描述語(yǔ)言解析規(guī)則將描述語(yǔ)言直接解析為所述多種編程語(yǔ)言的應(yīng)用。在實(shí)際應(yīng)用中,本步驟具體可以包括子步驟Al :按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分;子步驟A2 :獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包,并依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。本發(fā)明實(shí)施例中的編程語(yǔ)言包括但不限于PHP(超級(jí)文本預(yù)處理語(yǔ)言,HypertextPreprocessor)編程語(yǔ)目、JAVA語(yǔ)目、C/C++語(yǔ)目、 NET語(yǔ)目、Ruby語(yǔ)目和Python語(yǔ)目。可見在本實(shí)施例中,只需要通過(guò)預(yù)先定義描述語(yǔ)言及描述語(yǔ)言解析規(guī)則,就可以利用詞典來(lái)生成多種編程語(yǔ)言的應(yīng)用,這就節(jié)省了多次編寫多種編程語(yǔ)言的應(yīng)用的時(shí)間和資源,從而也能夠提高生成多種編程語(yǔ)言的應(yīng)用的效率。參見圖2,圖2示出了本發(fā)明的一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法實(shí)施例2的流程圖,本實(shí)施例可以包括以下步驟步驟201 :獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則。步驟202 :按照描述語(yǔ)言解析規(guī)則及多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分。
在實(shí)際應(yīng)用中,所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)為數(shù)組,則參考圖3所示,步驟202具體可以包括步驟301 :依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表;在本例子中,以描述語(yǔ)言為代碼片段進(jìn)行舉例說(shuō)明。首先,可以將代碼片段解析成單詞列表,這可以通過(guò)對(duì)代碼片段進(jìn)行“讀進(jìn)”操作實(shí)現(xiàn)。例如,每讀取一個(gè)單詞,就在原代碼片段中刪除這個(gè)單詞,并在單詞列表中增加一個(gè)單詞,每個(gè)單詞攜帶一些屬性(如類型,操作數(shù)等),每次讀取一個(gè)單詞后,將新讀取的單詞加入單詞列表,最終生成原代碼片段對(duì)應(yīng)的完整的單詞列表。步驟302 :通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞;在實(shí)際應(yīng)用中可以通過(guò)正則表達(dá)式識(shí)別單詞。例如,讀取一個(gè)字符串如下所示
i f(preg—mateh('/A”(■ * )7'., Scode,Smatehes)) {
$code=substr($code, strlen($matches
));// 代碼片段中刪除已被識(shí)別的單詞
return array('STRING',Smatchesf I ]);//返回這個(gè)單詞
}而讀取一個(gè)數(shù)字則如下所示
if(preg match('/A(\d+\. | 0J }\d*)/', $code,Smatches)) {
Scode=substr(Scode, strIen(Smatches
));//代碼片段中■除已被識(shí)別
的單詞。
return array('NUVlBER',SmatcIies[I]);//返回這個(gè)單詞
}需要說(shuō)明的是,當(dāng)代碼片段的當(dāng)前字符以引號(hào)開始,那么下一個(gè)單詞將讀取一個(gè)字符,而如果代碼片段當(dāng)前字符是數(shù)字,那么下一個(gè)單詞將讀取一個(gè)數(shù)字??梢岳斫獾氖?,代碼片段具有一定的語(yǔ)法,而正則表達(dá)式就是按照指定語(yǔ)法依次進(jìn)行匹配的。在實(shí)際應(yīng)用中如果遇到無(wú)法識(shí)別的單詞,可以報(bào)語(yǔ)法錯(cuò)誤。當(dāng)代碼片段全解析完畢后,得到了一個(gè)單詞列表的數(shù)組。例如
array(
//每個(gè)單詞的形式可以是這樣array( 4單詞類型’ /其他操作數(shù),)
array('DATAV 下標(biāo)'),
array(’PROPV 屬性’),
array(’MATHV+,=,*,%,(,)'),//數(shù)學(xué)符號(hào)。
array('STRINGV字符串值
array('AND'),//and 符號(hào)&
array ('END'),// 換行
arrayC'NUMBERV 數(shù)字'),
arrayCFUNCTION';函數(shù)名稱’)
);步驟303 :使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果;在本步驟中,使用各種編程語(yǔ)言的詞典進(jìn)行翻譯。本發(fā)明實(shí)施例中的詞典是預(yù)先設(shè)定好的對(duì)單詞的解析方法。本發(fā)明實(shí)施例中的每種編程語(yǔ)言都對(duì)應(yīng)有一個(gè)詞典。在實(shí)際應(yīng)用中,對(duì)于每一種編程語(yǔ)言,本步驟可以循環(huán)單詞列表,根據(jù)單詞類型調(diào)用詞典的不同的解析方法,最終解析成該種編程語(yǔ)言的可執(zhí)行代碼。下面以連接符舉例詳細(xì)說(shuō)明翻譯過(guò)程。對(duì)于不同的編程語(yǔ)言,Java編程語(yǔ)言的連接符用“ + ”表示,PHP編程語(yǔ)言的連接符用”表示,還有些編程語(yǔ)言的連接符可能是用“&”表示的。在本發(fā)明實(shí)施例中,可以規(guī)定代碼片段中“&”表示是連接符,那么在進(jìn)行單詞解析時(shí),如果匹配到了 “&”符號(hào),則會(huì)產(chǎn)生一個(gè)單詞array ( ‘AND’)。在使用詞典翻譯時(shí),如果遇到單詞array ( ‘AND’),不同編程語(yǔ)言的詞典翻譯出的結(jié)果將不一樣,PHP編程語(yǔ)言的詞典翻譯結(jié)果為”,Java編程語(yǔ)言翻譯的結(jié)果為“ + ”。步驟304 :將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。在本例子中以數(shù)組為例,翻譯之后再將單詞列表的翻譯結(jié)果按照規(guī)定格式生成數(shù)組,即是解析完描述語(yǔ)言后將生成規(guī)定格式的數(shù)組。仍以SDK應(yīng)用為例,解析完描述語(yǔ)言
后,將得到如下所示的類似這樣的數(shù)組array( 'methodN ame I '=>array( ’url'=>'訪問(wèn)地址,ml標(biāo)簽的值', ’http,=>'訪問(wèn)方式 POST|GET|PUT|DELETF,
'params->array(參數(shù)列表) ),
'methodName2'=>array( ’url'=>'訪問(wèn)地址,url標(biāo)簽的值', ,http,=>'訪問(wèn)方式 POST|GET|PUT|DELETE', ’params’=>array(參數(shù)列表)
),
)步驟203 :獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包。在本發(fā)明實(shí)施例中,同一類應(yīng)用往往會(huì)有相同的代碼和變化的代碼兩部分。以SDK類應(yīng)用為例,不管哪種編程語(yǔ)言,其請(qǐng)求接口的方式是一樣的,但是請(qǐng)求參數(shù)、請(qǐng)求URL等,不同的SDK是有變化的,則對(duì)應(yīng)可以采用模板機(jī)制,即是將變化的地方使用模板標(biāo)簽(即是在模板里使用復(fù)雜的操作可以用標(biāo)簽表示),以使最終解析模板后生成多種編程語(yǔ)言的應(yīng)用。因?yàn)橐粋€(gè)應(yīng)用往往有許多文件,有些文件是變化的,有些文件是固定不變的,所以如果按照將一個(gè)變化的文件對(duì)應(yīng)一個(gè)模版文件,那么一個(gè)應(yīng)用會(huì)有很多個(gè)模板文件,這樣就會(huì)使得待處理的數(shù)據(jù)量較大,同時(shí)也不方便管理模版。因此,本發(fā)明實(shí)施例提供一種以壓縮包作為模板的方式,將所有模板文件和固定不變的文件都放在同一個(gè)壓縮包中(即是模板壓縮包),這樣就使得本發(fā)明實(shí)施例中的每種編程語(yǔ)言就只對(duì)應(yīng)一個(gè)模板壓縮包,既能節(jié)省待處理的數(shù)據(jù)量,也方便管理模板。本發(fā)明實(shí)施例中的模板壓縮包內(nèi)除了有模板文件和固定不變文件以外,還應(yīng)有一個(gè)配置文件。該配置文件可以說(shuō)明模板文件在模板壓縮包中的存放位置,和模板文件解析后生成的程序文件在模板壓縮包中的存放位置。例如,以PHP編程語(yǔ)言的模板壓縮包為例,假設(shè)它在模板壓縮包中的配置文件為config. ini,該config. ini的內(nèi)容為tpl/filenamel. tpl. php = class/filenamel. class, phptpl/filename2. tpl. php = class/filename2. class, php則上述內(nèi)容可以表示在模板壓縮包中“tpl/filenamel. tpl. php”是一個(gè)模板文件,這個(gè)模板文件被解析后生成的程序文件為模板壓縮包中的“class/f ilenamel. class,php,,。步驟204 :依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。在獲取到模板壓縮包之后,提取配置文件,再根據(jù)配置文件可以獲取模板文件,在解析模板文件的過(guò)程中參考前述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)可以生成多種編程語(yǔ)言的應(yīng)用,其中,具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)中存放著模板變量的值,在解析模板的過(guò)程中,需要從具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)中獲取模板變量的值。參考圖4,所述步驟204在實(shí)際應(yīng)用中,具體可以包括步驟401 :獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的存放位置;因?yàn)樵诒景l(fā)明實(shí)施例中的配置文件中定義了模板壓縮包的模板文件,配置文件可以表示出模板壓縮包中的哪些文件是模板文件,以及模板文件解析后的程序文件在模板壓 縮包中的存放位置,所以先提取出配置文件再根據(jù)配置文件中的內(nèi)容提取出模板文件,在提取模板文件時(shí)可以利用各種現(xiàn)有的壓縮包提取文件的技術(shù)將模板文件從模板壓縮包中提取出來(lái)。例如可以用PHP編程語(yǔ)言的ZipArchive類進(jìn)行壓縮包文件提取。步驟402 :依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼;在提取到模板文件之后,需要將模板文件的內(nèi)容進(jìn)行替換以生成可執(zhí)行的程序代碼,在本發(fā)明實(shí)施例中,模板文件中的模板標(biāo)簽不需要太復(fù)雜,能支持原生編程語(yǔ)言語(yǔ)法即可。為了方便本領(lǐng)域技術(shù)人員更清楚詳細(xì)的了解本步驟,下面以在實(shí)際應(yīng)用中,假設(shè) 所述編程語(yǔ)言為PHP編程語(yǔ)言,所述模板文件也采用PHP編程語(yǔ)言進(jìn)行編譯為例進(jìn)行說(shuō)明,則參考圖5所示,所述步驟402具體可以包括步驟501 :將所述模板文件中的PHP標(biāo)簽替換為指定的其他標(biāo)記;在替換模板標(biāo)簽的過(guò)程中需要解決一個(gè)問(wèn)題,例如,生成的可執(zhí)行程序代碼是PHP編程語(yǔ)言,而模板文件也是PHP編程語(yǔ)言時(shí),則模板標(biāo)簽不能使用PHP標(biāo)簽“〈 php”和“ >”進(jìn)行標(biāo)記,并且也不能讓模板文件中的PHP代碼在解析的時(shí)候被執(zhí)行。因此,首先需要對(duì)模板文件中原本的PHP標(biāo)簽進(jìn)行替換,將其替換為指定的其他標(biāo)記。例如,將“〈? php”替換為“#PHP_TAG_BEGIN#”,以及將“? >,,替換為“#PHP_TAG_END#”??梢岳斫獾氖牵恍枰獙⑵渌付ǖ臉?biāo)記即可,無(wú)需限定是什么樣的其他標(biāo)記,本領(lǐng)域技術(shù)人員可以適應(yīng)性的自主調(diào)整。步驟502 :將所述模板文件中的模板標(biāo)簽替換為所述PHP標(biāo)簽;其次還需要將模板文件中的模板標(biāo)簽替換為PHP標(biāo)簽,例如指定模板標(biāo)簽以“”標(biāo)簽開始,以“}>”標(biāo)簽結(jié)束,在這兩個(gè)標(biāo)簽之間可以寫原生的PHP代碼,這時(shí)候需要先將“〈{”替換為“〈 php”,再將“}>”替換為“? >”,這樣模板標(biāo)簽中的PHP代碼才會(huì)被執(zhí)行。步驟503 :將所述指定的其他標(biāo)記替換為所述PHP標(biāo)簽。最后再將前述指定的其他標(biāo)記“#PHP_TAG_BEGIN#”替換為“〈? php echo “〈 ?php” >””,以及將 “#PHP_TAG_END#” 標(biāo)記替換為“〈? php echo “ >,, >”。通過(guò)步驟501 步驟503的替換之后最終可以得到一段可執(zhí)行的程序代碼。步驟403 :運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件;
接著運(yùn)行前述得到的可執(zhí)行代碼即可獲得運(yùn)行結(jié)果文件,需要注意的是,如果直接執(zhí)行可執(zhí)行程序代碼時(shí)會(huì)將結(jié)果直接打印出來(lái),在實(shí)際應(yīng)用中可以不讓執(zhí)行結(jié)果打印出來(lái),這就需要先將執(zhí)行結(jié)果緩沖到內(nèi)存中,然后獲得內(nèi)存中的執(zhí)行結(jié)果作為運(yùn)行結(jié)果文件。而將執(zhí)行結(jié)果緩沖到內(nèi)存及獲得內(nèi)存中的執(zhí)行結(jié)果的參考代碼如下所示ob_start() ;//開始一個(gè)輸出緩沖。eval(/ >/ . $code) ;//運(yùn)行可執(zhí)行程序代碼$result = ob_get_clean() ;//獲得內(nèi)存中的緩沖數(shù)據(jù)。步驟404 :將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中;
生成運(yùn)行結(jié)果文件之后還需要將運(yùn)行結(jié)果文件放入模板壓縮包中,放入到模板壓縮包中的位置是配置文件中已經(jīng)配置好的,在實(shí)施時(shí)可以用各種公知的技術(shù)向模板壓縮包中添加文件,例如可以用PHP編程語(yǔ)言的ZipArchive類向模板壓縮包添加文件。步驟405 :刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。最后需要?jiǎng)h除模板壓縮包中多余的文件(模板文件和配置文件等),此時(shí)模板壓縮包就成了一個(gè)可供用戶下載的應(yīng)用。需要說(shuō)明的是,在具體實(shí)施時(shí),因?yàn)槟0鍓嚎s包是需要重復(fù)利用的,不能可以不對(duì)模版壓縮包直接進(jìn)行修改,所以需要先建立一個(gè)模版壓縮包的副本壓縮包,然后對(duì)副本壓縮包進(jìn)行操作。參考圖6,在所述步驟501之前,還可以包括以下步驟步驟601 :將原始模板壓縮包復(fù)制至臨時(shí)目錄;在本步驟中需要拷貝原始模版壓縮包到一個(gè)指定的臨時(shí)目錄,為和原始模版壓縮包區(qū)分,可以將拷貝到臨時(shí)目錄的模版壓縮包稱為“副本壓縮包”。步驟602 :將所述臨時(shí)目錄下的副本壓縮包作為所述當(dāng)前模板壓縮包。然后再將臨時(shí)目錄下的副本壓縮包作為所述當(dāng)前模板壓縮包,則后續(xù)針對(duì)的模板壓縮包就是副本壓縮包,從而可以不需要對(duì)原模板壓縮包直接修改。在本實(shí)施例中,只需要通過(guò)預(yù)先定義描述語(yǔ)言及描述語(yǔ)言解析規(guī)則,就可以利用詞典來(lái)生成多種編程語(yǔ)言的應(yīng)用,這就節(jié)省了多次編寫多種編程語(yǔ)言的應(yīng)用的時(shí)間和資源,從而也能夠提高生成多種編程語(yǔ)言的應(yīng)用的效率。參見圖7,示出了本發(fā)明的一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法實(shí)施例3的流程圖,本實(shí)施例可以包括以下步驟步驟701 :獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則。步驟702 :按照描述語(yǔ)言解析規(guī)則及多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分。步驟703 :獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包。步驟704 :依次將原始模板壓縮包復(fù)制至臨時(shí)目錄,以得到所述臨時(shí)目錄下的副本壓縮包。在本實(shí)施例中,先將模板壓縮包復(fù)制至臨時(shí)目錄,并將臨時(shí)目錄下的副本壓縮包作為操作對(duì)象。步驟705 :獲取所述臨時(shí)目錄下的副本壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述副本壓縮包中的存放位置,和模板文件解析后生成的程序文件在所述副本壓縮包中的存放位置。
步驟706 :依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼。步驟707 :運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件。
步驟708 :將所述運(yùn)行結(jié)果文件存放至所述副本壓縮包中。步驟709 :刪除所述副本壓縮包中的配置文件和模板文件,以得到多種編程語(yǔ)言的應(yīng)用。步驟710 :接收客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求。在本發(fā)明實(shí)施例中,生成多種編程語(yǔ)言的應(yīng)用之后,接收到客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求,因?yàn)榭蛻舳瞬煌簿鸵馕吨僮飨到y(tǒng)可能不同,所以需要依據(jù)客戶端運(yùn)行的操作系統(tǒng)所支持的編程語(yǔ)言來(lái)將對(duì)應(yīng)的應(yīng)用發(fā)送給客戶端。步驟711 :依據(jù)所述客戶端使用的編程語(yǔ)言將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)送給所述客戶端。本實(shí)施例可以在生成多種編程語(yǔ)言的應(yīng)用之后,根據(jù)請(qǐng)求下載應(yīng)用的客戶端所適用的編程語(yǔ)言,將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)給客戶端,例如,如果客戶端是在IOS上運(yùn)行的,則將object C編程語(yǔ)言的應(yīng)用發(fā)給客戶端,而如果客戶端在ANDROID系統(tǒng)上運(yùn)行,則需要將JAVA編程語(yǔ)言的同一個(gè)應(yīng)用發(fā)送給客戶端。在本發(fā)明實(shí)施例中,只需要編寫描述語(yǔ)言及其解析規(guī)則,就能利用詞典獲得多種編程語(yǔ)言的應(yīng)用,不用多次開發(fā)。從而降低了開發(fā)成本和開發(fā)時(shí)間,也提高了多種編程語(yǔ)言的應(yīng)用的生成效率。本發(fā)明實(shí)施例提供的描述語(yǔ)言,使得開發(fā)人員也不用學(xué)習(xí)多種編程語(yǔ)言,只要掌握了描述語(yǔ)言就能開發(fā)多種編程語(yǔ)言的應(yīng)用,從而也降低了開發(fā)者的學(xué)習(xí)成本。同時(shí),本發(fā)明實(shí)施例可以統(tǒng)一采用一種描述語(yǔ)言,這就不會(huì)產(chǎn)生理解的誤差,從而不會(huì)出現(xiàn)不同編程語(yǔ)言的應(yīng)用的功能有差別的現(xiàn)象。并且,本發(fā)明實(shí)施例還可以利用詞典解析代碼片段的方法,實(shí)現(xiàn)了描述語(yǔ)言為自定義的代碼片段,從而能使描述語(yǔ)言更加簡(jiǎn)單方便和易懂。通過(guò)以上的方法實(shí)施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。相應(yīng)于上面的方法實(shí)施例,本發(fā)明實(shí)施例還提供一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的裝置。參見圖8,示出了一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的裝置實(shí)施例I的結(jié)構(gòu)示意圖,可以包括獲取模塊801,用于獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;解析模塊802,用于采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。在實(shí)際應(yīng)用中,參考圖9所示,所述解析模塊802具體可以包括
第一解析子模塊901,用于按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分;獲取子模塊902,用于獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包;生成應(yīng)用子模塊903,用于依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。在實(shí)際應(yīng)用中,參考圖10所示,所述第一解析子模塊901具體可以包括生成單詞列表子模塊1001,用于依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表;
識(shí)別子模塊1002,用于通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞;翻譯子模塊1003,用于使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果;生成數(shù)組子模塊1004,用于將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。獲取子模塊902,用于獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包;生成應(yīng)用子模塊903,用于依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。在實(shí)際應(yīng)用中,參考圖11所示,所述生成應(yīng)用子模塊903具體可以包括獲取文件子模塊1101,用于獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的存放位置;第二解析子模塊1102,用于依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼;在實(shí)際應(yīng)用中,參考圖12所示,所述第二解析子模塊1102具體可以包括第一替換子模塊1201,用于將所述模板文件中的PHP標(biāo)簽替換為指定的其他標(biāo)記;第二替換子模塊1202,用于將所述模板文件中的模板標(biāo)簽替換為所述PHP標(biāo)簽;第三替換子模塊1203,用于將所述指定的其他標(biāo)記替換為所述PHP標(biāo)簽。運(yùn)行代碼子模塊1103,用于運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件;存放子模塊1104,用于將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中;刪除子模塊1105,用于刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。在實(shí)際應(yīng)用中,參考圖13所示,所述生成應(yīng)用子模塊903具體還可以包括復(fù)制子模塊1301,用于將原始模板壓縮包復(fù)制至臨時(shí)目錄;確定子模塊1302,用于將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。在本實(shí)施例中,只需要通過(guò)預(yù)先定義描述語(yǔ)言及描述語(yǔ)言解析規(guī)則,就可以利用詞典來(lái)生成多種編程語(yǔ)言的應(yīng)用,這就節(jié)省了多次編寫多種編程語(yǔ)言的應(yīng)用的時(shí)間和資源,從而也能夠提高生成多種編程語(yǔ)言的應(yīng)用的效率。參見圖14,示出了本發(fā)明實(shí)施例的一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的裝置實(shí)施例2的結(jié)構(gòu)示意圖,本實(shí)施例公開的裝置可以包括獲取模塊801,用于獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;第一解析子模塊901,用于按照預(yù)先定義的描述語(yǔ)言解析規(guī)則,將所述應(yīng)用的預(yù)先定義的描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述描述語(yǔ)言對(duì)應(yīng)于所述應(yīng)用的可變部分;獲取子模塊902,用于獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包。復(fù)制子模塊1301,用于將原始模板壓縮包復(fù)制至臨時(shí)目錄;確定子模塊1302,用于將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。獲取文件子模塊1101,用于獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的第一存放位置,和模板文件解析后生成 的程序文件在所述當(dāng)前模板壓縮包中的第二存放位置;第二解析子模塊1102,用于依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼;運(yùn)行代碼子模塊1103,用于運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件;存放子模塊1104,用于將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中;刪除子模塊1105,用于刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。接收下載請(qǐng)求模塊1401,用于接收客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求;發(fā)送模塊1402,用于依據(jù)所述客戶端使用的編程語(yǔ)言將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)送給所述客戶端。在本發(fā)明實(shí)施例中,只需要編寫描述語(yǔ)言及其解析規(guī)則,就能利用詞典獲得多種編程語(yǔ)言的應(yīng)用,不用多次開發(fā)。從而降低了開發(fā)成本和開發(fā)時(shí)間,也提高了多種編程語(yǔ)言的應(yīng)用的生成效率。本發(fā)明實(shí)施例提供的描述語(yǔ)言,使得開發(fā)人員也不用學(xué)習(xí)多種編程語(yǔ)言,只要掌握了描述語(yǔ)言就能開發(fā)多種編程語(yǔ)言的應(yīng)用,從而也降低了開發(fā)者的學(xué)習(xí)成本。同時(shí),本發(fā)明實(shí)施例可以統(tǒng)一采用一種描述語(yǔ)言,這就不會(huì)產(chǎn)生理解的誤差,從而不會(huì)出現(xiàn)不同編程語(yǔ)言的應(yīng)用的功能有差別的現(xiàn)象。并且,本發(fā)明實(shí)施例還可以利用詞典解析代碼片段的方法,實(shí)現(xiàn)了描述語(yǔ)言為自定義的代碼片段,從而能使描述語(yǔ)言更加簡(jiǎn)單方便和易懂。可以理解的是,本發(fā)明可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)......”限定的要素,并不排除在包括所述要
素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所述僅是本發(fā)明的具體實(shí)施方式
,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法,其特征在于,包括 獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則; 采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用,具體包括 按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分; 獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包,并依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)為數(shù)組,則 所述將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),具體包括 依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表; 通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞; 使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果; 將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用,具體包括 獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的第一存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的第二存放位置; 依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼; 運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件; 將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中; 刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在獲取當(dāng)前模板壓縮包中的配置文件和模板文件之前,還包括 將原始模板壓縮包復(fù)制至臨時(shí)目錄; 將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述編程語(yǔ)言為超級(jí)文本預(yù)處理PHP編程語(yǔ)言,所述模板文件采用PHP編程語(yǔ)言編譯,則所述依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼,具體包括 將所述模板文件中的PHP標(biāo)簽替換為指定的其他標(biāo)記; 將所述模板文件中的模板標(biāo)簽替換為所述PHP標(biāo)簽; 將所述指定的其他標(biāo)記替換為所述PHP標(biāo)簽。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,在采用所述多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用之后,還包括 接收客戶端請(qǐng)求下載所述多種編程語(yǔ)言的應(yīng)用的下載請(qǐng)求; 依據(jù)所述客戶端使用的編程語(yǔ)言將對(duì)應(yīng)的編程語(yǔ)言的應(yīng)用發(fā)送給所述客戶端。
8.一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的裝置,其特征在于,包括 獲取模塊,用于獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;解析模塊,用于采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述解析模塊具體包括 第一解析子模塊,用于按照所述描述語(yǔ)言解析規(guī)則及所述多種編程語(yǔ)言的詞典,將所述描述語(yǔ)言解析成具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于所述應(yīng)用的可變部分; 獲取子模塊,用于獲取所述多種編程語(yǔ)言對(duì)應(yīng)的多個(gè)模板壓縮包; 生成應(yīng)用子模塊,用于依據(jù)所述模板壓縮包中的配置文件和所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)生成多種編程語(yǔ)言的應(yīng)用。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一解析子模塊具體包括 生成單詞列表子模塊,用于依據(jù)所述應(yīng)用的預(yù)先定義的描述語(yǔ)言生成單詞列表; 識(shí)別子模塊,用于通過(guò)正則表達(dá)式識(shí)別所述單詞列表中的單詞; 翻譯子模塊,用于使用所述多種編程語(yǔ)言的詞典翻譯所述單詞得到翻譯結(jié)果; 生成數(shù)組子模塊,用于將翻譯結(jié)果按照規(guī)定格式生成數(shù)組。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述生成應(yīng)用子模塊具體包括 獲取文件子模塊,用于獲取當(dāng)前模板壓縮包中的配置文件和模板文件,所述配置文件表示模板文件在所述當(dāng)前模板壓縮包中的第一存放位置,和模板文件解析后生成的程序文件在所述當(dāng)前模板壓縮包中的第二存放位置; 第二解析子模塊,用于依據(jù)所述具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)將所述模板文件解析為可執(zhí)行代碼; 運(yùn)行代碼子模塊,用于運(yùn)行所述可執(zhí)行代碼以獲得運(yùn)行結(jié)果文件; 存放子模塊,用于將所述運(yùn)行結(jié)果文件存放至所述當(dāng)前模板壓縮包中; 刪除子模塊,用于刪除所述當(dāng)前模板壓縮包中的配置文件和模板文件。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述生成應(yīng)用子模塊還包括 復(fù)制子模塊,用于將原始模板壓縮包復(fù)制至臨時(shí)目錄; 確定子模塊,用于將所述臨時(shí)目錄下的副本作為所述當(dāng)前模板壓縮包。
全文摘要
本發(fā)明實(shí)施例公開了一種基于描述語(yǔ)言生成多種編程語(yǔ)言的應(yīng)用的方法及裝置,所述方法包括獲取預(yù)先定義的與所述應(yīng)用對(duì)應(yīng)的描述語(yǔ)言及描述語(yǔ)言解析規(guī)則;采用所述描述語(yǔ)言解析規(guī)則和多種編程語(yǔ)言的詞典將所述描述語(yǔ)言解析為所述多種編程語(yǔ)言的應(yīng)用。采用本發(fā)明實(shí)施例的方法或裝置,只需要通過(guò)預(yù)先定義描述語(yǔ)言及描述語(yǔ)言解析規(guī)則,就可以利用多種編程語(yǔ)言的詞典來(lái)生成多種編程語(yǔ)言的應(yīng)用,這就節(jié)省了多次編寫多種編程語(yǔ)言的應(yīng)用的時(shí)間和資源,從而也能夠提高生成多種編程語(yǔ)言的應(yīng)用的效率。
文檔編號(hào)G06F9/44GK102750152SQ201210212289
公開日2012年10月24日 申請(qǐng)日期2012年6月21日 優(yōu)先權(quán)日2012年6月21日
發(fā)明者羅飛, 魏世江 申請(qǐng)人:新浪網(wǎng)技術(shù)(中國(guó))有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
旬邑县| 吐鲁番市| 昂仁县| 富顺县| 天台县| 穆棱市| 新源县| 百色市| 沙雅县| 连南| 裕民县| 辛集市| 上高县| 巴东县| 湛江市| 巫山县| 红原县| 博野县| 华安县| 平顺县| 海晏县| 泾源县| 鹤壁市| 乌拉特中旗| 伊川县| 镇康县| 越西县| 梅河口市| 孟连| 昌都县| 渭南市| 忻城县| 苍溪县| 北票市| 惠东县| 渑池县| 长垣县| 深州市| 绵阳市| 新巴尔虎左旗| 霍邱县|