本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種骨架代碼的生成方法和骨架代碼生成器。
背景技術(shù):
在軟件開發(fā)過程中,框架是整個(gè)或部分應(yīng)用系統(tǒng)的可重用設(shè)計(jì),是實(shí)現(xiàn)某應(yīng)用領(lǐng)域通用功能的底層服務(wù),例如:構(gòu)建方式、編碼規(guī)范、實(shí)現(xiàn)模式等。使用框架的編程人員,即框架使用者,可以在一個(gè)通用功能已經(jīng)實(shí)現(xiàn)的基礎(chǔ)上開始具體的系統(tǒng)開發(fā)。
為了便于框架使用者利用框架進(jìn)行軟件開發(fā),框架開發(fā)者在開發(fā)框架時(shí)需要提供必要的配置選項(xiàng)、使用方法、運(yùn)行模塊上下文等必要信息。
現(xiàn)有技術(shù)中,一般都是通過框架文檔的方式為框架使用者提供框架中某個(gè)功能模塊的使用方法以及配置信息,框架使用者需要根據(jù)該框架文檔進(jìn)行應(yīng)用軟件代碼的框架骨架代碼的編寫。
但是,框架文檔的方式增加了框架使用者的學(xué)習(xí)成本,并且,當(dāng)框架使用者對(duì)框架本身實(shí)現(xiàn)機(jī)制不夠明確時(shí),容易錯(cuò)誤地使用框架文檔提供的某些特性,使得基于框架實(shí)現(xiàn)軟件開發(fā)時(shí)效率較低。
如何解決現(xiàn)有技術(shù)中基于框架實(shí)現(xiàn)軟件開發(fā)時(shí)效率較低的問題,是本申請(qǐng)所要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種骨架代碼的生成方法和骨架代碼生成器,用以解決現(xiàn)有技術(shù)中基于框架實(shí)現(xiàn)軟件開發(fā)時(shí)效率較低的問題。
一種骨架代碼的生成方法,包括:
獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);
解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
可選的,所述配置項(xiàng)參數(shù)包括宏替換變量及對(duì)應(yīng)的宏替換變量值;
基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到宏替換變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述宏替換變量對(duì)應(yīng)的宏替換變量值;
將所述骨架模板中的所述宏替換變量替換為與所述宏替換變量對(duì)應(yīng)的宏替換變量值。
可選的,所述配置項(xiàng)參數(shù)包括IF判斷語句,其中,所述IF判斷語句包括IF判斷標(biāo)識(shí)和IF判斷結(jié)果;
基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到IF判斷標(biāo)識(shí)時(shí),從所述配置項(xiàng)參數(shù)中確定與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的IF判斷結(jié)果;
根據(jù)所述IF判斷結(jié)果,確定是否在所述骨架代碼中生成所述骨架模板中與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的功能模塊代碼。
可選的,所述配置項(xiàng)參數(shù)包括循環(huán)變量及對(duì)應(yīng)的循環(huán)變量值;
基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到循環(huán)變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值;
將所述骨架模板中的所述循環(huán)變量替換為與所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值,生成所述骨架代碼中的循環(huán)語句。
可選的,所述配置項(xiàng)參數(shù)包括宏替換文件名,其中,所述宏替換文件名用于對(duì)所述骨架模板中需要宏替換的文件名進(jìn)行替換。
可選的,所述配置項(xiàng)參數(shù)包括文件名執(zhí)行權(quán)限參數(shù),其中,所述文件名執(zhí)行權(quán)限參數(shù)用于確定所述骨架模板中文件名的執(zhí)行權(quán)限。
可選的,所述骨架模板和所述配置項(xiàng)參數(shù)都以文件的形式存儲(chǔ);或者,
所述骨架模板和所述配置項(xiàng)參數(shù)都存儲(chǔ)在數(shù)據(jù)庫中。
本申請(qǐng)實(shí)施例還提供一種骨架代碼生成器,包括:獲取單元和處理單元,其中:
獲取單元,用于獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);
處理單元,用于解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
本申請(qǐng)實(shí)施例還提供一種骨架代碼生成器,包括:存儲(chǔ)器和處理器,其中:
存儲(chǔ)器,用于存放程序;
處理器,用于執(zhí)行所述存儲(chǔ)器所存放的程序,并具體用于執(zhí)行以下操作:
獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);
解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
通過對(duì)骨架模板進(jìn)行解析,并根據(jù)基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯配置的配置項(xiàng)參數(shù),對(duì)骨架模板中的代碼進(jìn)行相應(yīng)的處理操作以得到骨架代碼,從而使得項(xiàng)目開發(fā)人員通過較為簡單的參數(shù)配置操作就能夠生成骨架代碼,大大節(jié)省了項(xiàng)目開發(fā)人員編寫骨架代碼的時(shí)間,有效提高了項(xiàng)目開發(fā)的效率。
附圖說明
此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例提供的一種骨架代碼的生成方法的流程示意圖;
圖2為本申請(qǐng)實(shí)施例提供的骨架代碼生成器的示意圖;
圖3為本申請(qǐng)實(shí)施例提供的一種電子設(shè)備的示意結(jié)構(gòu)圖;
圖4為本申請(qǐng)實(shí)施例提供的一種骨架代碼生成器的結(jié)構(gòu)示意圖;
圖5為本申請(qǐng)實(shí)施例提供的一種骨架代碼生成器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了實(shí)現(xiàn)本申請(qǐng)的目的,本申請(qǐng)實(shí)施例提供一種骨架代碼的生成方法和骨架代碼生成器,通過對(duì)骨架模板進(jìn)行解析,并根據(jù)基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯配置的配置項(xiàng)參數(shù),對(duì)骨架模板中的代碼進(jìn)行相應(yīng)的處理操作以得到骨架代碼,從而使得項(xiàng)目開發(fā)人員通過較為簡單的參數(shù)配置操作就能夠生成骨架代碼,大大節(jié)省了項(xiàng)目開發(fā)人員編寫骨架代碼的時(shí)間,有效提高了項(xiàng)目開發(fā)的效率。
下面結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
圖1為本申請(qǐng)實(shí)施例提供的一種骨架代碼的生成方法的流程示意圖。所述方法可以如下所示。
步驟101:獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù)。
其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù)。
本申請(qǐng)實(shí)施例中,框架開發(fā)者根據(jù)框架編寫在不同開發(fā)模式下對(duì)應(yīng)的骨架代碼模板(簡稱骨架模板),并設(shè)置基于所述骨架模板的配置項(xiàng)參數(shù)。
項(xiàng)目開發(fā)者(即框架使用者)選擇指定模式對(duì)應(yīng)的骨架模板,并基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板的配置項(xiàng)參數(shù)配置相應(yīng)的參數(shù)值。
本申請(qǐng)實(shí)施例中,所述骨架模板和所述配置項(xiàng)參數(shù)都以文件的形式存儲(chǔ);或者,
所述骨架模板和所述配置項(xiàng)參數(shù)都存儲(chǔ)在數(shù)據(jù)庫中。
項(xiàng)目開發(fā)者運(yùn)行骨架代碼生成器,使得所述骨架代碼生成器獲取所述骨架模板和基于所述骨架模板的配置項(xiàng)參數(shù)。
本申請(qǐng)實(shí)施例中,所述配置項(xiàng)參數(shù)包括但不限于宏替換變量及對(duì)應(yīng)的宏替換變量值、包括判斷標(biāo)識(shí)和判斷結(jié)果的IF判斷語句、循環(huán)變量及對(duì)應(yīng)的循環(huán)變量值、宏替換文件名和文件名執(zhí)行權(quán)限參數(shù)。
例如,所述配置項(xiàng)采用INI格式的配置格式,其中:
所述配置項(xiàng)包括project配置項(xiàng),其中,所述project配置項(xiàng)用來配置宏替換變量及對(duì)應(yīng)的宏替換變量值;
所述配置項(xiàng)包括module配置項(xiàng),其中,所述module配置項(xiàng)用來配置包括IF判斷標(biāo)識(shí)和IF判斷結(jié)果的IF判斷語句;
所述配置項(xiàng)包括params配置項(xiàng),其中,所述params配置項(xiàng)用來配置循環(huán)變量及對(duì)應(yīng)的循環(huán)變量值;
所述配置項(xiàng)包括files配置項(xiàng),其中,所述files配置項(xiàng)用來配置宏替換文件名;
所述配置項(xiàng)包括execs配置項(xiàng),其中,所述execs配置項(xiàng)用來配置文件名執(zhí)行權(quán)限參數(shù)。
項(xiàng)目開發(fā)者基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板的配置項(xiàng)參數(shù)配置相應(yīng)的參數(shù)值。
例如,配置項(xiàng)參數(shù)文件test.ini的內(nèi)容如下:
test.ini
[project]
ADINF_PROJECT_NAME=seedTest
ADINF_PROJECT_SUMMARY=Weibo adinf seedTest
ADINF_PROJECT_URL=http://adinf.weiboad.org
ADINF_PROJECT_VENDOR=zhongxiu<zhongxiu@staff.weibo.com>
ADINF_PROJECT_PACKAGER=zhongxiu<zhongxiu@staff.weibo.com>
[module]
adserver=y(tǒng)es
timer=y(tǒng)es
kafkac=no
kafkap=no
logging=y(tǒng)es
[params]
timers=Test
http_controllers=Index,Test
kafka_consumers=Test
kafka_consumers_topics=test
kafka_consumers_groups=test_cpp
kafka_producers=Test
kafka_producers_topics=test
[files]
src/main.cpp=src/@ADINF_PROJECT_NAME@.cpp
rpm/main.spec.in=rpm/@ADINF_PROJECT_NAME@.spec.in
[execs]
cmake.sh=1
rpm/build_rpm.in=1
步驟102:解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
本申請(qǐng)實(shí)施例中,基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到宏替換變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述宏替換變量對(duì)應(yīng)的宏替換變量值;
將所述骨架模板中的所述宏替換變量替換為與所述宏替換變量對(duì)應(yīng)的宏替換變量值。
宏變量替換功能是為了解決生成骨架代碼中的一些硬編碼的問題,例如:對(duì)于一個(gè)項(xiàng)目名稱為test的項(xiàng)目,項(xiàng)目開發(fā)者在編寫該項(xiàng)目對(duì)應(yīng)的代碼時(shí)需要該項(xiàng)目名稱。但是,對(duì)于框架開發(fā)者,在編寫骨架模板時(shí)并不能預(yù)知框架使用者,即項(xiàng)目開發(fā)者的項(xiàng)目名稱,因此,在骨架模板中,采用PROJECT_NAME這個(gè)變量作為占位符。
項(xiàng)目開發(fā)者在project配置項(xiàng)中輸入PROJECT_NAME這個(gè)宏替換變量對(duì)應(yīng)的宏替換變量值。
骨架代碼生成器中包括宏替換變量代碼生成器。
所述宏替換變量代碼生成器解析所述骨架模板,得到所述宏替換變量PROJECT_NAME時(shí),所述宏替換變量代碼生成器從所述配置項(xiàng)參數(shù)中確定所述宏替換變量PROJECT_NAME對(duì)應(yīng)的宏替換變量值,并基于所述宏替換變量值,對(duì)所述宏替換變量執(zhí)行宏替換操作。
在骨架模板中,宏替換語句的語法是@變量名@。
例如,在骨架模板中的宏替換代碼如下:
#define@PROJECT_NAME|upper@_VERSION_HPP_
#define@PROJECT_NAME|upper@_VERSION_HPP
其中,|后面是宏替換代碼支持簡單字符串轉(zhuǎn)化函數(shù),表示在宏替換變量用對(duì)應(yīng)的宏替換變量值執(zhí)行宏替換后,將所述宏替換變量值轉(zhuǎn)化為大寫。
project配置項(xiàng)參數(shù)代碼如下:
[project]
PROJECT_NAME=test
因此,宏變量替換代碼生成器解析所述骨架模板,并基于所述project配置項(xiàng)參數(shù)代碼對(duì)所述骨架模板中的宏替換變量用對(duì)應(yīng)的宏替換變量值執(zhí)行宏替換操作,得到骨架代碼中的部分代碼如下:
#define TEST_VERSION_HPP_
#define TEST_VERSION_HPP_
本申請(qǐng)實(shí)施例中,基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到IF判斷標(biāo)識(shí)時(shí),從所述配置項(xiàng)參數(shù)中確定與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的IF判斷結(jié)果;
根據(jù)所述IF判斷結(jié)果,確定是否在所述骨架代碼中生成所述骨架模板中與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的功能模塊代碼。
IF判斷是為了使得骨架模板中的功能模塊代碼能夠通過配置在所述骨架代碼中生成。
在骨架模板中,IF判斷的語法是:
@IF@xxx
功能模塊代碼
@ENDIF
例如,在骨架模板中的IF判斷語句如下:
@IF@bar
echo“test bar”;
@IFEND
(1)module配置項(xiàng)參數(shù)中的IF判斷語句如下:
[module]
bar=y(tǒng)es
其中,bar表示IF判斷標(biāo)識(shí),yes表示IF判斷結(jié)果。
骨架代碼生成器中包括IF語句支持代碼生成器。
因此,所述IF語句支持代碼生成器解析所述骨架模板,并基于所述module配置項(xiàng)參數(shù)中的IF判斷條件,得到骨架代碼中的部分代碼如下:
echo“test bar”;
(2)module配置項(xiàng)參數(shù)中的IF判斷語句如下:
[module]
bar=no
其中,bar表示IF判斷標(biāo)識(shí),no表示IF判斷結(jié)果。
骨架代碼生成器中包括IF語句支持代碼生成器。
因此,所述IF語句支持代碼生成器解析所述骨架模板,并基于所述module配置項(xiàng)參數(shù)中的IF判斷條件,在骨架代碼中不生成該功能模塊代碼。
本申請(qǐng)實(shí)施例中,基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,具體包括:當(dāng)解析所述骨架模板得到循環(huán)變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值;
將所述骨架模板中的所述循環(huán)變量替換為與所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值,生成所述骨架代碼中的循環(huán)語句。
FOR循環(huán)語句是為了解決生成骨架代碼中相似代碼的問題,利用骨架模板中的FOR循環(huán)語句生成相似代碼的相同部分,而對(duì)于FOR循環(huán)語句中的循環(huán)變量則通過配置項(xiàng)參數(shù)中與所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值來替換。
在骨架模板中,F(xiàn)OR循環(huán)語句的語法是:
@FOR@xxx
骨架代碼塊
@ENDFOR
例如,在骨架模板中的FOR循環(huán)語句如下:
@FOR@bar
echo“test bar@REPLACE0@”;
echo“test bar@REPLACE1@”
@IFEND
params配置項(xiàng)參數(shù)代碼如下:
[params]
bar=a,b
骨架代碼生成器中包括FOR語句支持代碼生成器。
因此,所述FOR語句支持代碼生成器解析所述骨架模板,并基于所述params配置項(xiàng)代碼對(duì)所述骨架代碼模板中的FOR循環(huán)語句中的循環(huán)變量用對(duì)應(yīng)的循環(huán)變量值進(jìn)行替換,得到骨架代碼的部分代碼如下:
echo“test bar a”;
echo“test bar b”;
params配置項(xiàng)中關(guān)于FOR循環(huán)語句中的多個(gè)循環(huán)變量值用逗號(hào)分隔。
在骨架模板的FOR循環(huán)語句中,@FOR后面的也可以是多個(gè)用逗號(hào)分隔開的循環(huán)變量。
在骨架模板的FOR循環(huán)語句中,循環(huán)體內(nèi)也可以使用多個(gè)循環(huán)變量,例如,@REPLACE0@、@REPLACE1@、…、@REPLACEx@等。
需要說明的是,循環(huán)變量值可以是數(shù)值,也可以是數(shù)組,這里不做具體限定。
如上述例子所述,當(dāng)所述循環(huán)變量值a、b分別表示數(shù)組,a=[1,2,3],b=[4,5]時(shí),得到的骨架代碼的部分代碼如下:
echo“test bar 1”;
echo“test bar 2”;
echo“test bar 3”;
echo“test bar 4”;
echo“test bar 5”;
圖2為本申請(qǐng)實(shí)施例提供的骨架代碼生成器的示意圖。
如圖2所示,所述骨架代碼生成器包含但不限于宏替換變量代碼生成器、IF語句支持代碼生成器、FOR語句支持代碼生成器、語句嵌套支持代碼生成器、文件名稱宏替換代碼生成器和文件名稱權(quán)限配置代碼生成器。
通過所述骨架代碼生成器中包含的各個(gè)代碼生成器解析所述骨架模板,并基于所述配置項(xiàng)參數(shù),對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
項(xiàng)目開發(fā)者能夠通過所述骨架代碼生成器快速生成骨架代碼,使得項(xiàng)目開發(fā)者能夠?qū)⒅饕性跇I(yè)務(wù)需求開發(fā)中,節(jié)約了通用代碼的開發(fā)時(shí)間。
本申請(qǐng)實(shí)施例記載的技術(shù)方案,通過對(duì)骨架模板進(jìn)行解析,并根據(jù)基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯配置的配置項(xiàng)參數(shù),對(duì)骨架模板中的代碼進(jìn)行相應(yīng)的處理操作以得到骨架代碼,從而使得項(xiàng)目開發(fā)人員通過較為簡單的參數(shù)配置操作就能夠生成骨架代碼,大大節(jié)省了項(xiàng)目開發(fā)人員編寫骨架代碼的時(shí)間,有效提高了項(xiàng)目開發(fā)的效率。
實(shí)施例2
圖3為本申請(qǐng)實(shí)施例提供的一種電子設(shè)備的示意結(jié)構(gòu)圖。如圖3所示,在硬件層面,該電子設(shè)備包括處理器、內(nèi)部總線、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器,當(dāng)然還可能包括其他業(yè)務(wù)所需要的硬件。處理器從非易失性存儲(chǔ)器中讀取對(duì)應(yīng)的計(jì)算機(jī)程序到內(nèi)存中然后運(yùn)行,在邏輯層面上形成骨架代碼生成器。當(dāng)然,除了軟件實(shí)現(xiàn)方式之外,本申請(qǐng)并不排除其他實(shí)現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個(gè)邏輯單元,也可以是硬件或邏輯器件。
圖4為本申請(qǐng)實(shí)施例提供的一種骨架代碼生成器的結(jié)構(gòu)示意圖。骨架代碼生成器400包括:獲取單元401和處理單元402,其中:
獲取單元401,用于獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);
處理單元402,用于解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
可選地,所述配置項(xiàng)參數(shù)包括宏替換變量及對(duì)應(yīng)的宏替換變量值;
所述處理單元402,具體用于當(dāng)解析所述骨架模板得到宏替換變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述宏替換變量對(duì)應(yīng)的宏替換變量值;
將所述骨架模板中的所述宏替換變量替換為與所述宏替換變量對(duì)應(yīng)的宏替換變量值。
可選地,所述配置項(xiàng)參數(shù)包括IF判斷語句,其中,所述IF判斷條件包括IF判斷標(biāo)識(shí)和IF判斷結(jié)果;
所述處理單元402,具體用于當(dāng)解析所述骨架模板得到IF判斷標(biāo)識(shí)時(shí),從所述配置項(xiàng)參數(shù)中確定與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的IF判斷結(jié)果;
根據(jù)所述IF判斷結(jié)果,確定是否在所述骨架代碼中生成所述骨架模板中與所述IF判斷標(biāo)識(shí)對(duì)應(yīng)的功能模塊代碼。
可選地,所述配置項(xiàng)參數(shù)包括循環(huán)變量及對(duì)應(yīng)的循環(huán)變量值;
所述處理單元402,具體用于當(dāng)解析所述骨架模板得到循環(huán)變量時(shí),從所述配置項(xiàng)參數(shù)中確定所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值;
將所述骨架模板中的所述循環(huán)變量替換為與所述循環(huán)變量對(duì)應(yīng)的循環(huán)變量值,生成所述骨架代碼中的循環(huán)語句。
可選地,所述配置項(xiàng)參數(shù)包括宏替換文件名,其中,所述宏替換文件名用于對(duì)所述骨架模板中需要宏替換的文件名進(jìn)行替換。
可選地,所述配置項(xiàng)參數(shù)包括文件名執(zhí)行權(quán)限參數(shù),其中,所述文件名執(zhí)行權(quán)限參數(shù)用于確定所述骨架模板中文件名的執(zhí)行權(quán)限。
可選地,所述骨架模板和所述配置項(xiàng)參數(shù)都以文件的形式存儲(chǔ);或者,
所述骨架模板和所述配置項(xiàng)參數(shù)都存儲(chǔ)在數(shù)據(jù)庫中。
根據(jù)所述骨架代碼生成器,獲取單元,用于獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);處理單元,用于解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼,使得項(xiàng)目開發(fā)人員通過較為簡單的參數(shù)配置操作就能夠生成骨架代碼,大大節(jié)省了項(xiàng)目開發(fā)人員編寫骨架代碼的時(shí)間,有效提高了項(xiàng)目開發(fā)的效率。
圖5為本申請(qǐng)實(shí)施例提供的一種骨架代碼生成器的結(jié)構(gòu)示意圖。骨架代碼生成器500可包括:通道接口501和處理器502,可選地,包括存儲(chǔ)器503。
通道接口501、處理器502和存儲(chǔ)器503可以通過總線504系統(tǒng)相互連接??偩€504可以是ISA(Industry Standard Architecture,工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))總線、PCI(Peripheral Component Interconnect,外設(shè)部件互連標(biāo)準(zhǔn))總線或EISA(Extended Industry Standard Architecture,擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu))總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖5中僅用一個(gè)雙向箭頭表示,但并不表示僅有一根總線或一種類型的總線。
可選地,包括存儲(chǔ)器503,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器503可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器502提供指令和數(shù)據(jù)。存儲(chǔ)器503可能包含高速隨機(jī)存取存儲(chǔ)器(Random-Access Memory,RAM),也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少1個(gè)磁盤存儲(chǔ)器。
處理器502,用于執(zhí)行以下操作,可選地,執(zhí)行存儲(chǔ)器503所存放的程序,并具體用于執(zhí)行以下操作:
獲取骨架模板和基于所述骨架模板配置的配置項(xiàng)參數(shù),其中,所述骨架模板是指定開發(fā)模式對(duì)應(yīng)的骨架代碼模板,所述配置項(xiàng)參數(shù)是基于項(xiàng)目的開發(fā)業(yè)務(wù)邏輯為所述骨架模板配置的參數(shù);
解析所述骨架模板,并基于所述配置項(xiàng)參數(shù)對(duì)所述骨架模板中對(duì)應(yīng)的代碼進(jìn)行對(duì)應(yīng)的操作,得到所述項(xiàng)目的骨架代碼。
上述如本申請(qǐng)圖1和圖3-4所示實(shí)施例揭示的骨架代碼生成器或管理者(Master)節(jié)點(diǎn)執(zhí)行的方法可以應(yīng)用于處理器502中,或者由處理器502實(shí)現(xiàn)。處理器502可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器502中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器502可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網(wǎng)絡(luò)處理器(Network Processor,NP)等;還可以是數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)、專用集成電路(Application Specific Integrated Circuit,ASIC)、現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本申請(qǐng)實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本申請(qǐng)實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器503,處理器502讀取存儲(chǔ)器503中的信息,結(jié)合其硬件完成上述方法的步驟。
骨架代碼生成器500還可執(zhí)行圖1的方法,并實(shí)現(xiàn)管理者節(jié)點(diǎn)或數(shù)據(jù)處理裝置在圖3、圖4所示實(shí)施例的功能,本申請(qǐng)實(shí)施例在此不再贅述。
實(shí)施例3
本申請(qǐng)實(shí)施例還提出了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)一個(gè)或多個(gè)程序,該一個(gè)或多個(gè)程序包括指令,該指令當(dāng)被包括多個(gè)應(yīng)用程序的便攜式電子設(shè)備執(zhí)行時(shí),能夠使該便攜式電子設(shè)備執(zhí)行實(shí)施例一的方法。
在20世紀(jì)90年代,對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過將改進(jìn)的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來實(shí)現(xiàn)。例如,可編程邏輯器件(Programmable Logic Device,PLD)(例如現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來確定。由設(shè)計(jì)人員自行編程來把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不需要請(qǐng)芯片制造廠商來設(shè)計(jì)和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟件來實(shí)現(xiàn),它與程序開發(fā)撰寫時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(Hardware Description Language,HDL),而HDL也并非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。一種典型的實(shí)現(xiàn)設(shè)備為計(jì)算機(jī)。具體的,計(jì)算機(jī)例如可以為個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、蜂窩電話、相機(jī)電話、智能電話、個(gè)人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件設(shè)備、游戲控制臺(tái)、平板計(jì)算機(jī)、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。