專利名稱:在標(biāo)記中用于定義和使用子級(jí)說明的系統(tǒng)和方法
背景技術(shù):
當(dāng)今,軟件開發(fā)工具允許軟件開發(fā)商有能力去利用一種或多種程序語言,比如C,C++,C#等類似的語言建立可執(zhí)行部分。建立可執(zhí)行部分的一個(gè)優(yōu)點(diǎn)就是該部分一旦被建立,可以被其他軟件程序再利用。建立可執(zhí)行部分的另一優(yōu)點(diǎn)是新部分可以輕易地從現(xiàn)有的部分?jǐn)U充。
通常,部件通過子級(jí)擴(kuò)充,這意味著從現(xiàn)有級(jí)派生出新級(jí)。這些級(jí)與子級(jí)采用一種程序語言來寫。所寫代碼通常指源代碼。對(duì)于傳統(tǒng)運(yùn)行時(shí)環(huán)境,軟件開發(fā)工具將源代碼編譯成目標(biāo)代碼然后將眾多目標(biāo)代碼聯(lián)接在一起生成可執(zhí)行的部分。然而,關(guān)于這些傳統(tǒng)的運(yùn)行時(shí)環(huán)境的問題之一是每種程序語言和每版程序語言需要不同的運(yùn)行時(shí)環(huán)境。
為克服上述問題,一種新型的運(yùn)行時(shí)環(huán)境被設(shè)定,能有效刪除很多交叉語言接口和傳統(tǒng)運(yùn)行時(shí)環(huán)境的語言版本問題。在這種新型運(yùn)行時(shí)環(huán)境,開發(fā)工具將源代碼編譯成一中間語言。在運(yùn)行時(shí)過程中,運(yùn)行時(shí)環(huán)境將中間語言編譯成原始二進(jìn)制可執(zhí)行碼。因此,新運(yùn)行時(shí)環(huán)境將在運(yùn)行時(shí)期間執(zhí)行“聯(lián)接型”處理。為了執(zhí)行這“聯(lián)接型”處理,對(duì)與正在運(yùn)行的程序相連的部分,運(yùn)行時(shí)環(huán)境讀取信息(比如,圖元數(shù)據(jù))和訪問IL匯編。圖元數(shù)據(jù)包括類型、版本、資源等類似的說明。IL匯編可以是單一動(dòng)態(tài)聯(lián)接庫(DLL),或者很多動(dòng)態(tài)連接庫和資源。
對(duì)于傳統(tǒng)和新型的運(yùn)行時(shí)環(huán)境,源代碼采用一種程序語言來寫。每一程序語言有它自己在運(yùn)行時(shí)環(huán)境唯一的語法和特殊的應(yīng)用程序接口(API)設(shè)置。軟件開發(fā)商為寫源代碼,他們必須學(xué)習(xí)程序語言的語法和與運(yùn)行時(shí)環(huán)境有關(guān)的應(yīng)用程序接口。學(xué)習(xí)這些語法和應(yīng)用程序接口是需要花費(fèi)相當(dāng)?shù)臅r(shí)間并且有挑戰(zhàn)性。另外,如果開發(fā)商希望采用很多程序語言的程序和/或不同的運(yùn)行時(shí)環(huán)境,開發(fā)商必須記憶不同運(yùn)行時(shí)環(huán)境下每種程序語言的語法和應(yīng)用程序接口之間的相似及微小差別。
如果給出采用該部分的優(yōu)點(diǎn),就有必要使用一種更好的機(jī)制來建立、擴(kuò)充和使用該部分。
發(fā)明概要本發(fā)明涉及一種在標(biāo)記中定義、擴(kuò)充和利用子級(jí)說明的系統(tǒng)和方法。本發(fā)明為開發(fā)商提供一種機(jī)制來采用一標(biāo)記語言建立、擴(kuò)充和使用該部分。這些部分包括可再用部分,應(yīng)用用戶接口,文件用戶接口及其類似內(nèi)容。該機(jī)制不需開發(fā)商懂得程序語言。反而,該機(jī)制允許開發(fā)商利用熟悉的標(biāo)記語言,比如XML(可擴(kuò)充的標(biāo)記語言)來建立部件。因?yàn)閄ML很容易學(xué)并且在一般計(jì)算機(jī)程序界內(nèi)正變得比較熟知,本發(fā)明提出相對(duì)傳統(tǒng)程序語言的幾個(gè)優(yōu)點(diǎn)。一個(gè)優(yōu)點(diǎn)是該部分可在標(biāo)記文件內(nèi)被定義,和其他的標(biāo)記文本,來生成一個(gè)相當(dāng)復(fù)雜的電子文件。另一優(yōu)點(diǎn)是開發(fā)商無須知道或懂得任何程序語言為了生產(chǎn)可執(zhí)行部分。
本發(fā)明的系統(tǒng)、方法和數(shù)據(jù)結(jié)構(gòu)能使得與子級(jí)相關(guān)的可執(zhí)行部件可從寫在標(biāo)記文件內(nèi)的子級(jí)定義而產(chǎn)生。依據(jù)本發(fā)明,子級(jí)定義是基于一模式撰寫。該模式可以是基于XML的。該模式包括為子級(jí)定義名稱的子級(jí)標(biāo)記。該名稱與為當(dāng)可執(zhí)行匯編執(zhí)行示例的對(duì)象的類型有關(guān)。該模式進(jìn)一步包括一個(gè)或多個(gè)標(biāo)記,比如用于指定一程序語言來編譯子級(jí)定義,用于指定從其派生出子級(jí)的超級(jí),用于指定當(dāng)對(duì)象成為示例時(shí)的執(zhí)行操作,用于產(chǎn)生一事件定義和用于該子級(jí)的相關(guān)事件處理,并且用于指定當(dāng)對(duì)象被示例時(shí)性能成為在對(duì)象內(nèi)的一個(gè)域。
圖1示例可用在舉例說明本發(fā)明的執(zhí)行的規(guī)范計(jì)算設(shè)備;圖2舉例說明開發(fā)系統(tǒng)執(zhí)行本發(fā)明一實(shí)施例的功能塊圖;圖3是實(shí)現(xiàn)本發(fā)明一實(shí)施例運(yùn)行時(shí)環(huán)境的功能塊圖;圖4-6是示例在標(biāo)記文件內(nèi)標(biāo)記的突出部分,舉例說明依據(jù)本發(fā)明一實(shí)施例為斷定子級(jí)的規(guī)范語法;圖7示例標(biāo)記文件的突出部分,舉例說明為從標(biāo)記文件內(nèi)采用子級(jí)的規(guī)范語法;圖8是一邏輯流程圖,舉例說明處理根據(jù)本發(fā)明實(shí)施例,編譯聲明定義子級(jí);
圖9是根據(jù)本發(fā)明一實(shí)施例的一邏輯功能圖,舉例說明運(yùn)行時(shí)處理利用從標(biāo)記文件內(nèi)聲稱的子級(jí);圖10舉例說明代表性源代碼的規(guī)范源代碼表,可以由基于如圖4-6示例的標(biāo)記文件的如圖2所示的標(biāo)記編譯程序產(chǎn)生。
優(yōu)選實(shí)施例的詳細(xì)說明本發(fā)明涉及一種在標(biāo)記中定義、擴(kuò)充和利用子級(jí)說明的系統(tǒng)和方法。本發(fā)明為開發(fā)商提供一種機(jī)制建立、擴(kuò)充和利用采用標(biāo)記語言的部件。該機(jī)制不需開發(fā)商懂得程序語言。反而,該機(jī)制允許開發(fā)商利用熟悉的標(biāo)記語言,比如可擴(kuò)充的標(biāo)記語言(XML)來建立部件。
說明計(jì)算環(huán)境圖1示例可用在舉例說明本發(fā)明的執(zhí)行的規(guī)范計(jì)算設(shè)備。參照?qǐng)D1,在很基本的結(jié)構(gòu)內(nèi),計(jì)算設(shè)備100典型地包括至少一處理單元102和系統(tǒng)存儲(chǔ)器104。依賴于計(jì)算設(shè)備100的精確結(jié)構(gòu)和類型,系統(tǒng)存儲(chǔ)器104可以是可變的(比如RAM),不可變的(比如ROM,閃存等等)或者兩者的一些組合。系統(tǒng)存儲(chǔ)器104典型地包括一操作系統(tǒng)105,一個(gè)或多個(gè)程序模塊,和程序數(shù)據(jù)107。例如程序模塊106包括一瀏覽器應(yīng)用,一財(cái)政管理應(yīng)用,一文字處理器及其類似。此基本的結(jié)構(gòu)說明在圖1的108底線內(nèi)的那些部分。
計(jì)算設(shè)備100可以有附加特點(diǎn)或者功能。比如,計(jì)算設(shè)備100也可以包括附加(可移和/或不可移)數(shù)據(jù)存儲(chǔ)設(shè)備,比如,磁盤,光盤或者磁帶等。此附加存儲(chǔ)舉例說明在如圖1的可移存儲(chǔ)109和不可移存儲(chǔ)110。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以包括被執(zhí)行在任何用于存儲(chǔ)信息的方法或者技術(shù)中,比如計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序塊或者其它數(shù)據(jù)的可變和不可變,可移和不可移介質(zhì)。系統(tǒng)存儲(chǔ)器104,可移存儲(chǔ)109和不可移存儲(chǔ)110都是計(jì)算機(jī)存儲(chǔ)媒介的例子。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM,ROM,EEPROM,閃存或者其他存儲(chǔ)技術(shù),CD-ROM,數(shù)字通用光盤(DVD)或者其它光存儲(chǔ)器,磁盒帶,磁錄音帶,磁盤存儲(chǔ)或者其他磁存儲(chǔ)設(shè)備,或者任何其他能用來存儲(chǔ)指定信息和能由計(jì)算設(shè)備100存取的介質(zhì)。任何這些計(jì)算機(jī)存儲(chǔ)媒介可以是設(shè)備100的組成部分。計(jì)算設(shè)備100也可以有輸入設(shè)備112,比如鍵盤,鼠標(biāo),筆,聲音輸入裝置,可觸輸入裝置等。輸出設(shè)備114也可以包括,比如顯示器,揚(yáng)聲器,打印機(jī)等。這些設(shè)備在本領(lǐng)域已非常熟知,沒必要在這贅述。
計(jì)算設(shè)備100也可以包括通信連接116,允許設(shè)備100與其他計(jì)算設(shè)備118通信,比如在網(wǎng)絡(luò)中。通信連接116是通信媒介的一個(gè)例子。通信媒介可以典型地實(shí)施計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序塊或者其他被調(diào)制的數(shù)據(jù)信號(hào)數(shù)據(jù),比如載波或者其他傳輸裝置并包括任何傳送媒介的信息。術(shù)語“調(diào)制的數(shù)據(jù)信號(hào)”指信號(hào)具有一個(gè)或多個(gè)自身特征設(shè)定或者以在信號(hào)編碼信息的方式改變。順便提到示例,不是限定,通信媒介包括有線媒介,比如有線網(wǎng)絡(luò)或者直接線相連,和無線媒介,比如聲音的,射頻的,紅外的和其他無線媒介。這里所用的計(jì)算機(jī)可讀媒介術(shù)語既包括存儲(chǔ)媒介也包括通信媒介。
實(shí)施例說明圖2舉例說明開發(fā)系統(tǒng)執(zhí)行本發(fā)明一實(shí)施例的功能塊圖。
該系統(tǒng)包括標(biāo)記編譯程序202和分析程序204。標(biāo)記編譯程序202和分析程序204是軟件模塊(比如圖1所示的程序模塊106)設(shè)在計(jì)算設(shè)備中,例如圖1所示的計(jì)算設(shè)備100。標(biāo)記編譯程序202輸入標(biāo)記文件206。在一實(shí)施例中,標(biāo)記文件206是基于可擴(kuò)充標(biāo)記語言(XML)文件。簡(jiǎn)要地如圖4-6說明并且下面將會(huì)詳細(xì)描述的標(biāo)記文件206,包括標(biāo)記(未示出),指示子定義的部分。如在下文中詳細(xì)描述的,標(biāo)記指示子級(jí)和相關(guān)單元的存在。當(dāng)遇到這些標(biāo)記,補(bǔ)充編譯程序202開始與分析程序204通信以建立子級(jí)。
在一實(shí)施例中,由分析程序204所提供的功能也可以提供在標(biāo)記編譯程序202內(nèi)。在另一實(shí)施例中,由分析程序204所提供的功能可以提供用于在標(biāo)記編譯程序202內(nèi)從一已存在的分析級(jí)派生出分析級(jí)。派生出的分析級(jí)可以包括功能優(yōu)先于根據(jù)本發(fā)明定義的每一子級(jí)令牌(比如標(biāo)記)。簡(jiǎn)要地在圖10中說明并在下文中詳細(xì)描述的優(yōu)先功能,可以是一系列回叫功能的部分,信號(hào)首尾為與子級(jí)相關(guān)單元的定義。
分析程序204配置為在標(biāo)記文件206內(nèi)的分析程序子級(jí)定義。標(biāo)記編譯程序202簡(jiǎn)要地編譯標(biāo)記文件206內(nèi)的內(nèi)容。在一實(shí)施例中,標(biāo)記編譯程序202將內(nèi)容轉(zhuǎn)變?yōu)楸4嬖诒粯?biāo)識(shí)二進(jìn)制文件208中被標(biāo)識(shí)的二進(jìn)制串。被標(biāo)識(shí)的二進(jìn)制文件208代表指定在補(bǔ)充文件206中的組成部分樹。然而標(biāo)記編譯程序202可能不能將一些內(nèi)容直接轉(zhuǎn)變,這些內(nèi)容可被傳送到分析程序204。根據(jù)本發(fā)明定義在標(biāo)記文件206的子級(jí)定義是這內(nèi)容的一個(gè)例子。分析程序204識(shí)別一些性能、事件及其類似,在子級(jí)定義內(nèi)并將這些與該術(shù)語有關(guān)的潛在信息傳遞到標(biāo)記編譯程序202。
當(dāng)接收到潛在信息,標(biāo)記編譯程序202將記號(hào)添加到與子級(jí)定義有關(guān)的標(biāo)記文件206上。標(biāo)記編譯程序202也可以產(chǎn)生代表性源代碼212,從那里IL匯編210產(chǎn)生。IL匯編210包括為定義在標(biāo)記文件206的子級(jí)(比如組成)的計(jì)算指令。在過去,這些IL匯編是利用軟件開發(fā)工具產(chǎn)生的,它編譯連接用綱領(lǐng)性語言寫的源代碼。本領(lǐng)域技術(shù)人員也知道,在另一實(shí)施例,標(biāo)記編譯程序202可以不產(chǎn)生被標(biāo)記的二進(jìn)制文件208的情況下產(chǎn)生IL匯編210。
由標(biāo)記編譯202產(chǎn)生的IL匯編210也可以被傳統(tǒng)的程序開發(fā)工具再利用。另外,IL匯編210也可以在其他標(biāo)記文件中再利用。在標(biāo)記文件內(nèi)再利用IL匯編210的能力在圖7中舉例說明并在那里描述它的連接。因此,本發(fā)明允許開發(fā)商有能力采用標(biāo)記語言很容易建立和擴(kuò)充組件。根據(jù)本發(fā)明,一旦一新組件被建立,該新組件呈現(xiàn)為好象利用傳統(tǒng)程序語言建立的一樣。因此,開發(fā)商采用本發(fā)明的機(jī)制和方法可以建立組件而無需學(xué)習(xí)語法和一種或多種細(xì)微差別的程序語言。
圖3是實(shí)現(xiàn)本發(fā)明一實(shí)施例運(yùn)行時(shí)環(huán)境的功能塊圖。
運(yùn)行時(shí)環(huán)境包括運(yùn)行時(shí)啟動(dòng)程序302,被標(biāo)識(shí)的二進(jìn)制閱讀程序304,和被標(biāo)識(shí)的二進(jìn)制裝載程序306。當(dāng)運(yùn)行時(shí)環(huán)境302接收到一用于加載特殊資源的請(qǐng)求(比如圖2所示的標(biāo)記文件206)時(shí),運(yùn)行時(shí)啟動(dòng)程序302訪問一頁面圖表308。頁面圖表308識(shí)別標(biāo)記文件206是否有編譯版本(比如被標(biāo)記的二進(jìn)制文件208)。如果編譯版本存在,運(yùn)行時(shí)啟動(dòng)程序302與被標(biāo)識(shí)的二進(jìn)制裝載程序306通信加載被標(biāo)識(shí)的二進(jìn)制文件208。在一實(shí)施例中,被標(biāo)識(shí)的二進(jìn)制文件208識(shí)別與被標(biāo)識(shí)的二進(jìn)制文件208相關(guān)的IL匯編(IL匯編210)。被標(biāo)識(shí)的二進(jìn)制裝載程序306接著裝載識(shí)別的IL匯編210。一旦部分或整個(gè)被標(biāo)識(shí)的二進(jìn)制文件208與相關(guān)的IL匯編被裝載,被標(biāo)記的二進(jìn)制閱讀程序304開始閱讀被標(biāo)記的二進(jìn)制文件208和IL匯編210來產(chǎn)生在處理器中執(zhí)行(如圖1所示的處理單元102)的初始化指令。被標(biāo)記的二進(jìn)制閱讀程序304可以訪問圖元數(shù)據(jù)310以便確定信息,比如類型,方法和事件等。一般說來,圖元數(shù)據(jù)310包括有關(guān)方法,字段,性能和事件的信息。每個(gè)項(xiàng)目都有它自己的圖元數(shù)據(jù),能讀取附加的細(xì)節(jié)。因此,采用圖元數(shù)據(jù)310,被標(biāo)記的二進(jìn)制閱讀程序304利用在運(yùn)行時(shí)的反射以便有計(jì)劃地確定在被標(biāo)記二進(jìn)制文件208內(nèi)單元的信息。另外,如下文所描述的,依照本發(fā)明,在標(biāo)記文件206內(nèi)最初定義的子級(jí)可利用依照本發(fā)明產(chǎn)生的IL匯編210被直接地執(zhí)行。
圖4-6是示例在標(biāo)記文件206內(nèi)標(biāo)記的突出部分,舉例說明依據(jù)本發(fā)明一實(shí)施例為斷定子級(jí)的規(guī)范語法。
圖10舉例說明代表性源代碼的規(guī)范源代碼表,標(biāo)記編譯程序202可以基于如圖4-6所示的標(biāo)記部分產(chǎn)生。在一實(shí)施例,標(biāo)記編譯程序202實(shí)際上可以產(chǎn)生包含有代表性源代碼的文件。當(dāng)開發(fā)商設(shè)置一調(diào)試標(biāo)志時(shí)可發(fā)生。包含有代表性的源代碼的文件接著允許開發(fā)商確定可能的在標(biāo)記文件206文本內(nèi)的問題或在標(biāo)記編譯程序202內(nèi)的問題。在另一實(shí)施例,代表性代碼可以不在文件內(nèi)保存。對(duì)于此實(shí)施例,標(biāo)記編譯程序202可以產(chǎn)生可有也可沒有第一代表性源代碼的被標(biāo)識(shí)二進(jìn)制文件208和IL匯編210。
總之,圖4-6系列逐量地描述了為根據(jù)本發(fā)明在標(biāo)記內(nèi)斷定子級(jí)的很多方面。圖4舉例說明子級(jí)及其分層結(jié)構(gòu)的規(guī)范語法。圖5舉例說明為子級(jí)定義識(shí)別程序,代碼和指令程序的規(guī)范語法。圖6是舉例說明為子級(jí)定義性能和事件的規(guī)范語法?,F(xiàn)在詳細(xì)描述每個(gè)圖。
圖4舉例說明子級(jí)及其分層結(jié)構(gòu)的規(guī)范語法。標(biāo)記的突出部分400(比如子級(jí)定義)包括超級(jí)標(biāo)識(shí)402(比如,“按鍵”)。在下面的描述中,每個(gè)標(biāo)識(shí)(比如超級(jí)標(biāo)識(shí)402)有一個(gè)相應(yīng)的結(jié)束標(biāo)志。方便起見,結(jié)束標(biāo)識(shí)在撰寫說明中不明確指出,而在相關(guān)圖中說明。標(biāo)記400包括名稱域?qū)傩?04,名稱域聲明定義406和幾個(gè)編譯程序標(biāo)識(shí)(比如標(biāo)識(shí)408和410)。名稱域?qū)傩?04識(shí)別名稱域(比如,“系統(tǒng).控制”)和在其上有超級(jí)(比如,按鍵)所在的匯編。名稱域聲明的定義406指示在標(biāo)記400內(nèi)的任何屬性都包括前綴“def”,代表編譯程序需要執(zhí)行編譯操作的編譯程序標(biāo)志。
比如,標(biāo)識(shí)408(在下文指示為語言標(biāo)識(shí)408)指示編譯程序利用分配到語言408標(biāo)識(shí)的語言(比如,C#)來產(chǎn)生IL匯編。語言標(biāo)志408可以有被指定的很多程序語言中的任何一種,比如,C,C++及其類似。該標(biāo)識(shí)410(在下文指如def級(jí)標(biāo)記410)指示編譯定義子級(jí)利用指定為def級(jí)標(biāo)識(shí)410的名稱414(比如,吾鍵)。該def級(jí)標(biāo)識(shí)410也可以包括子級(jí)名稱域412,識(shí)別應(yīng)該與新級(jí)有關(guān)的名稱域(比如,“MyControlLIb”)。因此,圖4,開發(fā)商斷定名稱為“吾鍵”的新級(jí),擴(kuò)充在“系統(tǒng).控制”名稱域的“吾鍵”級(jí)。新子級(jí)將與“MyControlLIb”名稱域有關(guān)。
在圖4所例的標(biāo)記400內(nèi),一單元聲明標(biāo)識(shí)420(比如,“圖象”)被定義。因?yàn)橐惶囟Q域在單元聲明標(biāo)識(shí)420內(nèi)沒有定義,名稱域?qū)傩?04也定義與單元聲明標(biāo)識(shí)420有關(guān)的單元(比如,“圖象”)位置。單元聲明標(biāo)識(shí)420包括一單元421和一源屬性422。源屬性422包括一特性424(比如,“源”)和值426(比如,“幸福臉.jpg”)。因?yàn)閱卧暶鳂?biāo)識(shí)420是在用于子級(jí)的子級(jí)定義內(nèi)被子級(jí)定義為“吾鍵”,當(dāng)子級(jí)被舉例時(shí),與單元聲明標(biāo)識(shí)420有關(guān)的單元將被舉例說明。另外,與單元聲明標(biāo)識(shí)420有關(guān)的單元包括在新子級(jí)的子收集內(nèi),換句話說,子級(jí)是與單元聲明標(biāo)識(shí)420有關(guān)單元的家長(zhǎng)。因此,本領(lǐng)域技術(shù)人員知道標(biāo)記400允許開發(fā)商去表達(dá)分層結(jié)構(gòu),用一種方式允許編譯程序產(chǎn)生單元樹,起根于正被定義的子級(jí)(比如,“吾鍵”)。
圖5舉例說明為子級(jí)定義識(shí)別程序,代碼和指令程序的規(guī)范語法。標(biāo)記500的突出部分包括上面所述的標(biāo)記400和為定義識(shí)別程序,代碼和指令程序的標(biāo)記。為閱讀方便,在圖4示例的參照數(shù)字和上述部分沒有在圖5示出,除非有助于描述新的方面。在圖5中單元聲明標(biāo)識(shí)420進(jìn)一步包括屬性比如標(biāo)識(shí)符屬性520和事件屬性526。標(biāo)識(shí)符屬性520包括標(biāo)識(shí)符特性521(比如,“ID”)和標(biāo)識(shí)符值523(比如,“img1”)。標(biāo)識(shí)符屬性520示例一規(guī)范機(jī)制為根據(jù)本發(fā)明為子級(jí)定義識(shí)別程序。
事件屬性526包括事件觸發(fā)527(比如“數(shù)據(jù)裝載”)和事件值529(比如,“加載中”)。當(dāng)事件觸發(fā)527發(fā)生時(shí),事件觸發(fā)527指定被監(jiān)視的事件且事件值529指定執(zhí)行的方法。事件值529與方法530有關(guān)(比如“加載“功能)。方法530可使用程序語言撰寫。方法530可涉及在標(biāo)記500內(nèi)定義的級(jí)與子級(jí)的示例。當(dāng)方法530在標(biāo)記文件內(nèi)使用程序語言寫時(shí),方法530與代碼標(biāo)識(shí)540有關(guān)。代碼標(biāo)識(shí)540允許開發(fā)商添加片段代碼到子級(jí)定義主體上。在一實(shí)施例,代碼可跟隨代碼標(biāo)識(shí)540并是一可呼叫方法或者事件處理器。在標(biāo)記500中,比如,加載功能530作為用于通過圖象控制引起的數(shù)據(jù)裝載事件的事件處理。其他片段代碼也可以加到子級(jí)定義主體,比如圖5所示的自定義初始化功能550。
500標(biāo)記也可以包括指令程序標(biāo)記542。指令程序標(biāo)記542允許開發(fā)商撰寫補(bǔ)充為子級(jí)所產(chǎn)生的缺省指令的補(bǔ)充指令。在一實(shí)施例中,補(bǔ)充指令程序是由產(chǎn)生的缺省指令程序執(zhí)行的最后行為。補(bǔ)充指令程序可以包含在指令時(shí)間影響子級(jí)行為的代碼。開發(fā)商可以在補(bǔ)充指令程序中呼叫超級(jí)指令。如圖5所示的補(bǔ)充指令呼叫自定義初始化550,它是用戶定義的私人方法。
圖6舉例說明定義子級(jí)特性和事件的規(guī)范語法。標(biāo)記600的突出部分包括如上所述的標(biāo)記400和500以及為定義子級(jí)特性和事件的標(biāo)記。為閱讀方便,圖4-5舉例說明的并如上描述的參照數(shù)字不在圖6中示出,除非有助于新方面的描述。
標(biāo)記600包括特性標(biāo)識(shí)610,它允許特性在子級(jí)中被定義。該特性作為眾多子級(jí)中的一員。特性標(biāo)識(shí)610可以包括一個(gè)或多個(gè)屬性,比如名稱屬性612,類型屬性614,缺省值屬性616,和標(biāo)志屬性618,名稱屬性612指定特性的名稱。在一實(shí)施例,名稱是靈感格式并且運(yùn)行時(shí)啟動(dòng)程序?qū)λ妹Q的字符沒有限制的。對(duì)注冊(cè)名稱的所有者,名稱必須是唯一的。類型屬性614指定特性值的類型。該類型包括固有的,用戶定義的,結(jié)構(gòu),級(jí),接口,可例舉的,及其類似。當(dāng)性能被例舉時(shí),缺省值屬性616指定分配值。當(dāng)性能被舉例時(shí),標(biāo)志屬性618指定由外包產(chǎn)生的方法類型。該標(biāo)志可以有控制性能特點(diǎn)的能力,比如只讀,子單元可繼承性,私有及其類似。
標(biāo)記600也包括事件標(biāo)識(shí)620。事件標(biāo)識(shí)620允許事件定義在子級(jí)。事件標(biāo)識(shí)620可以包括屬性,比如名稱屬性622,路徑屬性624,標(biāo)識(shí)屬性626及其類似。名稱屬性622指定指代該事件的字符串。當(dāng)xml文件使用子級(jí)時(shí),該xml文件使用該字符串縛上定義代碼的合適應(yīng)用開發(fā)商。路徑屬性624指定一方法,確定升起事件的樹單元。標(biāo)識(shí)屬性626指定與事件有關(guān)的其他特征。比如,為標(biāo)記600,標(biāo)記編譯程序?qū)a(chǎn)生能夠事件呼叫DblClick的代碼并包括與事件有關(guān)的信息,比如支持的行程安排,標(biāo)識(shí)及其類似。本領(lǐng)域技術(shù)人員知道與該屬性有關(guān)的名稱和數(shù)值可以被改進(jìn)在不脫離本發(fā)明的范圍下。
標(biāo)記600也可以包括事件處理聲明630。事件處理聲明630有與事件處理有關(guān)的改進(jìn)632,比如公共/私有,代表,返回類型及其類似。在圖6,事件處理聲明630聲明當(dāng)相關(guān)事件發(fā)生時(shí),被稱作事件處理(比如方法) (比如“DblClickEventHandler”)。
其他標(biāo)志也可以在標(biāo)記文件內(nèi)定義。比如,跟標(biāo)志(比如,“defLibrary”)可以被用來通知編譯程序和/或者分析程序來在各自文件定義子級(jí),在一個(gè)文件和其他子級(jí)定義該子級(jí)及其類似。名稱域可以聲明商業(yè)單元,在根標(biāo)志定義的所有級(jí)及其類似。
圖7示例標(biāo)記文件的突出部分,舉例說明為從標(biāo)記文件內(nèi)采用子級(jí)的規(guī)范語法。標(biāo)記700包括根單元702(比如,流程板單元),缺省名稱域聲明704,名稱域定義前綴706和單元708。大家知道單元708可以參考自定義部分,它是采用上面指定的語法建立的。缺省名稱域聲明704不用前綴為標(biāo)志指定缺省名稱域。在示例的標(biāo)記700,缺省名稱域聲明704指“系統(tǒng).控制”名稱域。名稱域定義前綴706指定可以找到的自定義部分或單元的位置。在示例的標(biāo)記700,名稱域定義前綴706指“MyControlLib”。單元708包括級(jí)名稱710(比如,“MyControlLib”),識(shí)別程序712和文本串714。級(jí)名稱710指為該單元所舉例說明的級(jí)。識(shí)別程序712指單元并包括名稱(比如,“ID”)和數(shù)值(比如,“button1”)。在運(yùn)行時(shí)(比如,“button1”),該數(shù)值成為示例的級(jí)名稱710的名稱。
所舉實(shí)施例的一般操作圖8是一邏輯流程圖,舉例說明一處理800根據(jù)本發(fā)明實(shí)施例,編譯聲明定義子級(jí)。舉例的標(biāo)記如圖4-6所示,還有如圖10的代表性源代碼,用來在與圖8相連中描述處理800。因?yàn)槿菀妆嬲J(rèn),在比較圖10與標(biāo)記600后,本發(fā)明允許復(fù)雜子級(jí)聲明產(chǎn)生不需要開發(fā)商理解所畫線的程序語言。在圖10中的代表性代碼是C#源代碼。然而,根據(jù)本發(fā)明,標(biāo)記編譯程序可以利用任何程序語言產(chǎn)生有代表性的代碼。
處理800從801塊開始,其中標(biāo)記程序編譯標(biāo)記文件并遇到有子級(jí)定義的標(biāo)記。標(biāo)記編譯程序可以確定具有由任何機(jī)制被遭遇的子級(jí)定義,比如沒有辨認(rèn)標(biāo)記為任何其他形式,辨認(rèn)一子級(jí)標(biāo)志(比如,def級(jí))及其類似。比如,在標(biāo)記400,標(biāo)記編譯程序可以處理幾種狀態(tài)在遇到子級(jí)標(biāo)記之前(比如def級(jí)標(biāo)識(shí)410),能識(shí)別子級(jí)定義。在另一實(shí)施例,在其他狀態(tài)前子級(jí)標(biāo)記可以被遇到,比如當(dāng)子級(jí)沒有指定一基地級(jí)(比如,按紐)。一般說來,子級(jí)標(biāo)記可以出現(xiàn)在任何地方,一單元標(biāo)記能出現(xiàn)在標(biāo)記內(nèi)。一旦標(biāo)記識(shí)別為具有子級(jí)定義,處理在塊802處繼續(xù)。
在塊802處,子級(jí)標(biāo)記被處理。參照?qǐng)D4所描述的,子級(jí)標(biāo)記(也可參照def級(jí)標(biāo)記410)被分配一名稱414,也可以包括子級(jí)名稱域412。基于這一信息,代表性的代碼,比如圖10第1行,可以產(chǎn)生匯編。另外,有分配名稱的級(jí)產(chǎn)生,比如圖10第5行所示。第5行將擴(kuò)充為其他產(chǎn)生代碼,一旦附加狀態(tài)(比如名稱域和超級(jí))處理了。如子級(jí)標(biāo)記處理部分,處理識(shí)別子級(jí)是否從任一級(jí)(即超級(jí))擴(kuò)充并得到與超級(jí)相關(guān)信息。在圖4中,正產(chǎn)生的子級(jí)“吾鍵”是從如定義超級(jí)標(biāo)記402“按紐”。因此,圖10第5行包括代表性代碼,從所示的按紐擴(kuò)充為吾鍵。
另外,子級(jí)缺省指令程序產(chǎn)生。再說,在處理附加狀態(tài)中,這缺省指令程序可以擴(kuò)充附加的代表性代碼。圖10第23-23和26行對(duì)應(yīng)于所產(chǎn)生的代表性代碼。然而,“this._Initialize_This()”是在處理另一狀態(tài)之后添加的代碼將在下文描述。
在塊804處,檢索標(biāo)記的下一狀態(tài)。下一狀態(tài)可以是子級(jí)標(biāo)記狀態(tài)之前亦可是之后,該狀態(tài)依賴于在子級(jí)定義內(nèi)子級(jí)標(biāo)記狀態(tài)的位置。一旦檢索到下一狀態(tài),處理在判決塊806繼續(xù)。
在判決塊806處,做出確定是否該狀態(tài)定義一級(jí)。如前所提到的,本發(fā)明允許陳述性表達(dá)層級(jí)。在一實(shí)施例,定義另一級(jí)(即單元)的狀態(tài)是將發(fā)生在子級(jí)標(biāo)記狀態(tài)后的子級(jí)的后代。此時(shí),假設(shè)目前狀態(tài)沒有定義級(jí),處理在塊808繼續(xù)。
在塊808處,處理該狀態(tài)。在子級(jí)定義內(nèi)有各種各樣的狀態(tài)會(huì)發(fā)生。這些狀態(tài)可以以不同的順序發(fā)生。涉及每一狀態(tài)類型的處理將在下文詳細(xì)描述。然而,一般說來,處理的每一狀態(tài)將導(dǎo)致子級(jí)定義附加代表性代碼的產(chǎn)生。一旦其中一種狀態(tài)在塊808被處理,處理在判決塊810繼續(xù)。
在判決塊810處,做出確定是否任一狀態(tài)保持處理為子級(jí)定義。如果這有另一狀態(tài),通過塊804-808返回處理環(huán)路并處理該狀態(tài)。一旦子級(jí)定義內(nèi)的所有的狀態(tài)被處理過,處理從判決塊810至塊802繼續(xù)。
在塊812處,在上述處理產(chǎn)生的代表性代碼被用來為子級(jí)定義產(chǎn)生IL匯編。開發(fā)商可以指定在一個(gè)或多個(gè)編譯程序標(biāo)記狀態(tài)(塊820)綱領(lǐng)性語言來用,當(dāng)產(chǎn)生代表性編碼時(shí),也可指定哪一個(gè)存儲(chǔ)在子級(jí)定義的匯編文件及其類似。一旦該IL匯編或者IL匯編組產(chǎn)生,處理完成。如前面所提到的,上述產(chǎn)生的匯編現(xiàn)在可用來執(zhí)行,利用傳統(tǒng)的程序語言,利用根據(jù)本發(fā)明的標(biāo)記狀態(tài)及諸如此類。
匯編表現(xiàn)為采用綱領(lǐng)性的語言撰寫的。
回到判決塊806,如果狀態(tài)開始一新級(jí)(比如單元)定義,那么處理在塊814處繼續(xù)。在塊814處,與新級(jí)有關(guān)的狀態(tài)被處理,采用為每一狀態(tài)在塊808內(nèi)的處理直到與新級(jí)有關(guān)的所有狀態(tài)被處理。比如,在圖5,狀態(tài)520,526,422為新級(jí)“圖象”被處理。圖象接著是子級(jí)“吾鍵”的后代。處理在塊804繼續(xù),繼續(xù)處理與子級(jí)有關(guān)的狀態(tài)。
現(xiàn)在,回到塊808,用于狀態(tài)(塊820-832)的每一個(gè)別類型的處理可以發(fā)生在描述的子級(jí)定義內(nèi)。在塊820,編譯程序標(biāo)記狀態(tài)被處理。一般說來,編譯程序標(biāo)記狀態(tài)提供信息給標(biāo)記編譯程序有關(guān)匯編是如何被產(chǎn)生的。比如,在圖4,語言標(biāo)記408是編譯程序標(biāo)記狀態(tài),當(dāng)產(chǎn)生代表性代碼時(shí),通知標(biāo)記編譯程序采用程序語言。在圖4,語言標(biāo)記408被賦予C#,因此,在圖10舉例說明的代表性代碼是C#源代碼。
在塊822,定義名稱域的狀態(tài)被處理。那么這些名稱域包括在代表性代碼,比如如圖10第2和3行所示。
在塊824,為一級(jí)定義一識(shí)別程序(id)的狀態(tài)被處理。在標(biāo)記文件內(nèi)的任何ID屬性,標(biāo)記編譯程序產(chǎn)生一字域?yàn)橄嚓P(guān)級(jí)。產(chǎn)生的該字域類型與定義的ID屬性級(jí)的相同。比如,在圖5,當(dāng)與圖象級(jí)有關(guān)的狀態(tài)處理時(shí),一ID屬性520被遇到。因此,如圖10第7行所示,標(biāo)記編譯程序?qū)槲徭I級(jí)產(chǎn)生代表性代碼,有一字域被定義為私人系統(tǒng).控制.圖象.img1;在運(yùn)行時(shí)期間,字域初始化為在InitComponent()初始化組成方法產(chǎn)生的相應(yīng)類型(比如,圖象)的情況。結(jié)果,在吾鍵級(jí)中的任何編碼可以通過該級(jí)通過ID值訪問在其單一層級(jí)中的任何其他單元情況。字域的初始化過程如圖10第37行所示。
在塊826處,定義級(jí)性能的狀態(tài)被處理。對(duì)于在標(biāo)記文件內(nèi)被定義的任何性能,標(biāo)記編譯程序產(chǎn)生用于性能的代表性的源代碼并且如果需要?jiǎng)t注冊(cè)該性能。比如,在圖6中,標(biāo)記600包括具有各種各樣屬性612-618的性能標(biāo)記610。性能標(biāo)記610將通知標(biāo)記編譯程序?yàn)樵撔阅苄阅軜?biāo)記610的跟蹤狀態(tài)。屬性612-618接著被作為性能狀態(tài)讀出。標(biāo)記編譯程序?qū)椤傲斜怼毙阅墚a(chǎn)生代表性代碼來注冊(cè)如圖10第9-12行所示的吾鍵級(jí)性能。標(biāo)記編譯程序也將產(chǎn)生如圖10第28-30行所示定義性能的代表性代碼。第28-30行舉例說明如何名稱屬性612成為代表性代碼的性能名稱并類型屬性614成為代表性代碼的性能類型。
在一實(shí)施例中,通過要求類型轉(zhuǎn)換程序?yàn)樾阅茴愋吞幚懋a(chǎn)生用于性能值的代碼,執(zhí)行代碼在運(yùn)行時(shí)利用反射和轉(zhuǎn)變實(shí)際對(duì)象性能類型情況的數(shù)據(jù)串。在另一實(shí)施例,處理800為性能要求類型轉(zhuǎn)換以使得到實(shí)際對(duì)象值并轉(zhuǎn)換該值為一舉例說明程序?qū)ο蟆T撆e例說明程序?qū)ο蟀ǔ渥愕男畔⒁虼藰?biāo)記編譯程序能反映該對(duì)象來產(chǎn)生代表性代碼,它能產(chǎn)生該值類型的新情況,如指定在相關(guān)性能標(biāo)記的屬性。在圖19第28-30行舉例說明列表性能如何在運(yùn)行時(shí)通過分配的列表性能值設(shè)定吾鍵的情況。被分配值可以在標(biāo)記(如圖7所示)陳述性地指定或者利用任何程序語言綱領(lǐng)性地指定。
在塊828中,定義級(jí)的事件狀態(tài)被處理。對(duì)于事件狀態(tài),標(biāo)記編譯程序?yàn)槭录a(chǎn)生代表性代碼。事件可以在標(biāo)記內(nèi)利用各種各樣的機(jī)制定義,比如如圖5所示的事件屬性526和如圖6所示的事件標(biāo)記620。首先,描述利用事件屬性的機(jī)制。該事件屬性包括事件觸發(fā)和事件值。與事件相應(yīng)的事件觸發(fā)和與方法相應(yīng)的事件值當(dāng)事件觸發(fā)發(fā)生時(shí)被執(zhí)行。參照?qǐng)D5,事件值529(“裝載中”)被添加為如圖10第38-40行代表性代碼定義“這.裝載中”的事件處理一樣的新系統(tǒng).控制.數(shù)據(jù)裝載的事件處理。事件觸發(fā)527(“數(shù)據(jù)裝載”)被添加為象圖10第38行代表性代碼定義添加處理第一參數(shù)事件一樣的新系統(tǒng).控制.數(shù)據(jù)裝載的事件處理。添加處理的其他參數(shù)可以采用缺省值或者可以在標(biāo)記文件內(nèi)指定。
現(xiàn)在描述采用事件標(biāo)記620的機(jī)制。事件標(biāo)記620包括一事件名稱屬性或者其他屬性。被分配給事件名稱屬性的名稱被注冊(cè)為事件。比如,參照?qǐng)D6,“Db1Click”是被分配給事件名稱屬性的名稱。因此,“Db1Click”是注冊(cè)事件方法的第一參數(shù),在圖10第14-16行產(chǎn)生。再說注冊(cè)事件方法的其他參數(shù)可以采用缺省值或者可以在標(biāo)記文件利用其他屬性指定。在運(yùn)行時(shí)期間,根據(jù)一個(gè)實(shí)施例,事件被采用識(shí)別DB1點(diǎn)擊事件處理類型的反射鉤住并定在該方法。
在塊830中,定義代碼的狀態(tài)被處理。定義代碼的狀態(tài)跟隨編譯程序標(biāo)記狀態(tài)(塊820),比如代碼標(biāo)記。這些狀態(tài)用一種程序語言來撰寫并將以代表性代碼出現(xiàn)。比如,圖5舉例說明方法530和初始自定義功能550。方法550和初始自定義功能各自呈現(xiàn)在圖10第18-19和21行。
在塊832,定義補(bǔ)充指令程序的狀態(tài)被處理。又一次,定義補(bǔ)充指令程序的狀態(tài)跟隨編譯程序標(biāo)記狀態(tài)(塊820),比如指令程序標(biāo)記。標(biāo)記編譯程序產(chǎn)生補(bǔ)充指令程序(在圖10的this._Initialize_This())并在標(biāo)記指令程序內(nèi)添加該狀態(tài)。比如,在圖5,指令程序標(biāo)記542之后的狀態(tài)稱為“CustomInit()”。因此,在圖10第33行,補(bǔ)充編譯程序?qū)ⅰ癈ustomInit()”添加到在代表性源代碼中的補(bǔ)充指令程序上。
本領(lǐng)域技術(shù)人員能懂得在不脫離本發(fā)明下,當(dāng)處理塊804-810時(shí),塊812可以增量地執(zhí)行。另外,依賴分析程序204和標(biāo)記編譯程序202的執(zhí)行功能,可以在處理800過程中在分析程序204和標(biāo)記編譯程序202之間有回叫信號(hào)。
圖9是根據(jù)本發(fā)明一實(shí)施例的一邏輯功能圖,舉例說明運(yùn)行時(shí)處理900利用從標(biāo)記文件內(nèi)聲稱的子級(jí)。如圖7所示的示例標(biāo)記被用來與圖9描述的處理900相連接。處理900從塊901開始,在那兒運(yùn)行時(shí)啟動(dòng)程序接收特殊資源(比如,標(biāo)記文件)請(qǐng)求并確定存在特殊資源的編譯程序版本。比如,在圖7,假定標(biāo)記700沒有被預(yù)先編譯為被標(biāo)記的二進(jìn)制文件,當(dāng)標(biāo)記編譯程序遇到單元708,標(biāo)記編譯程序?qū)⒋_定具有相關(guān)二進(jìn)制文件和IL匯編的吾鍵級(jí)。這與標(biāo)記的二進(jìn)制有關(guān)文件包括標(biāo)記的吾鍵級(jí)屬性利用處理900將被處理。相關(guān)的二進(jìn)制文件和IL匯編可以采用本發(fā)明產(chǎn)生。處理在塊902繼續(xù)進(jìn)行。
在塊902處,標(biāo)記的二進(jìn)制文件被裝載。該標(biāo)記的二進(jìn)制文件可以被逐量地或者整個(gè)地裝載。被標(biāo)記的二進(jìn)制文件可以識(shí)別與需要裝載的被標(biāo)記的二進(jìn)制文件有關(guān)的IL匯編。參照?qǐng)D7,比如,與吾鍵級(jí)有關(guān)的IL匯編被裝載。處理在塊904處繼續(xù)。
在塊904處,從標(biāo)記的二進(jìn)制文件找回一標(biāo)記。如前所述,在新運(yùn)行時(shí)環(huán)境,產(chǎn)生的標(biāo)記二進(jìn)制文件獨(dú)立于用來產(chǎn)生二進(jìn)制文件的程序語言。因此,運(yùn)行時(shí)環(huán)境可以不關(guān)心最初用來產(chǎn)生二進(jìn)制文件的程序語言來處理標(biāo)記的二進(jìn)制文件。處理在塊906處繼續(xù)。
在判決塊906處,做出是否找回的標(biāo)記是一事件的決定。如果該標(biāo)記不是一事件,處理在塊908處繼續(xù)。
在塊908處,處理該標(biāo)記。如前所述,該標(biāo)記的處理不依賴于產(chǎn)生標(biāo)記二進(jìn)制文件的方式。換句話說,在標(biāo)記的二進(jìn)制文件的標(biāo)記處理的標(biāo)記從標(biāo)記文件內(nèi)陳述性地產(chǎn)生或者利用一程序語言將以同樣的方式處理。因此,因?yàn)閷?duì)本領(lǐng)域技術(shù)人員在標(biāo)記的二進(jìn)制文件內(nèi)的標(biāo)記處理是已知的,標(biāo)記處理不需要在這里做贅述。處理在判決塊910繼續(xù)。
在判決塊910處,做出是否在標(biāo)記二進(jìn)制文件內(nèi)還有標(biāo)記的決定。如果還有標(biāo)記,處理還回到塊904并做如前所述的處理。在另一方面,如果沒有更多標(biāo)記,處理結(jié)束并到末尾塊。
回到判決塊906,如果該標(biāo)記是一事件,處理在塊912繼續(xù)。在塊912,與標(biāo)記二進(jìn)制文件有關(guān)的元數(shù)據(jù)被裝載。元數(shù)據(jù)包括類型、資源、方法及其類似的說明。處理在塊914處繼續(xù)。
在塊914處,利用元數(shù)據(jù)和反射,處理找到為該事件的目標(biāo)單元類型。這涉及訪問元數(shù)據(jù)并通過每一字域確定類型。處理在塊916處繼續(xù)。
在塊916處,對(duì)事件驗(yàn)證目標(biāo)單元類型。這保證事件是有效事件。如果事件對(duì)目標(biāo)單元類型不是有效事件,則產(chǎn)生差錯(cuò)。處理回到塊918。
在塊918處,反射被用到目標(biāo)單元類型來得到接下來執(zhí)行該事件的方法。執(zhí)行該事件的方法涉及在有關(guān)IL匯編內(nèi)執(zhí)行代碼。因此,參照?qǐng)D7,一旦吾鍵成為示例并該事件被找到,事件方法(“Dv1ClickEvent”)被附加。附加一事件處理(比如,Db1CllickEventHandler)到該事件(比如,Db1Click)。處理在判決塊910繼續(xù)并處理如前所述。
因此,如上所述,本發(fā)明提供機(jī)制在標(biāo)記文件內(nèi)聲明定義子級(jí)并從標(biāo)記文件內(nèi)利用該子級(jí)。這允許開發(fā)商集中更多精力在利用組件的方法,而不擔(dān)心如何執(zhí)行用任何一種程序語言編寫的組件。
以上詳述,例子和數(shù)據(jù)提供一完整的生產(chǎn)和使用本發(fā)明部分的描述。不脫離本發(fā)明精神和范圍下,本發(fā)明的很多實(shí)施例可以實(shí)現(xiàn),本發(fā)明體現(xiàn)在下文的從屬權(quán)利要求中。
權(quán)利要求
1.一種與計(jì)算機(jī)可讀數(shù)據(jù)結(jié)構(gòu)編碼的計(jì)算機(jī)可讀媒介,該數(shù)據(jù)結(jié)構(gòu)包括用于在標(biāo)記文件內(nèi)陳述性地定義子級(jí)定義的模式,該模式能被編譯為可執(zhí)行匯編,它示例在執(zhí)行匯編之后子級(jí)定義內(nèi)與定義子級(jí)有關(guān)的對(duì)象。
2.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式是基于該格式的可伸展標(biāo)記語言(XML)。
3.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括定義名稱的子級(jí)標(biāo)記,該名稱與示例對(duì)象的類型有關(guān)。
4.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括當(dāng)編譯子級(jí)定義時(shí)利用指定程序語言的語言標(biāo)記。
5.如權(quán)利要求4所述的計(jì)算機(jī)可讀媒介,所述格式進(jìn)一步包括在標(biāo)記文件描述代碼的代碼標(biāo)記,該代碼直接被編譯為可執(zhí)行匯編。
6.如權(quán)利要求5所述的計(jì)算機(jī)可讀媒介,所述被直接編譯的代碼是給予語言標(biāo)記內(nèi)指定的程序語言語法。
7.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一超級(jí)標(biāo)記,從指定超級(jí)其派生出子級(jí)。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀媒介,所述格式包括一超級(jí)名稱域?qū)傩?,指定超?jí)在內(nèi)的名稱域。
9.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一指定子級(jí)的子級(jí)標(biāo)記。
10.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一指令程序標(biāo)記,當(dāng)示例該對(duì)象時(shí)指定一或多個(gè)補(bǔ)充操作來執(zhí)行。
11.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一事件標(biāo)記,指定變成與示例對(duì)象相關(guān)的一事件和一對(duì)應(yīng)的事件處理程序。
12.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一性能標(biāo)記,指定一性能,當(dāng)示例該對(duì)象時(shí),該性能成為對(duì)象內(nèi)的一員
13.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒介,所述格式包括一單元聲明,指定子級(jí)的子單元。
14.一種具有用于產(chǎn)生子級(jí)的可執(zhí)行匯編指令的計(jì)算機(jī)可讀媒介,該指令包括在標(biāo)記文件內(nèi)識(shí)別子級(jí)定義,該子級(jí)定義定義一子級(jí);和產(chǎn)生基于該子級(jí)定義的匯編,該匯編可被執(zhí)行以便產(chǎn)生與子級(jí)有關(guān)的對(duì)象示例。
15.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述識(shí)別子級(jí)定義包括分析子級(jí)標(biāo)記,該子級(jí)標(biāo)記包括為定義名稱的子級(jí)名稱屬性,該名稱與示例對(duì)象的類型有關(guān)。
16.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括可將子級(jí)定義編譯為代表性的源代碼編譯為匯編。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒介,所述為基于程序化語言的代表性源代碼。
18.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括在子級(jí)定義內(nèi)將代碼編譯為匯編,該代碼可以被子級(jí)定義內(nèi)的代碼標(biāo)記描述。
19.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編裝置包括分析子級(jí)定義標(biāo)記,包括定義從其派生出子級(jí)的超級(jí),指定采用與程序語言有關(guān)語法的先天特征,編譯語法為匯編的一部分。
20.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括分析指令程序標(biāo)記,定義當(dāng)示例對(duì)象時(shí)至少一補(bǔ)充操作執(zhí)行,該補(bǔ)充操作是匯編的一部分。
21.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括分析事件標(biāo)記,為子級(jí)產(chǎn)生一事件定義和與事件相對(duì)應(yīng)的處理程序。
22.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括分析性能標(biāo)記,當(dāng)示例對(duì)象時(shí),定義一性能為對(duì)象內(nèi)的一員。
23.如權(quán)利要求14所述的計(jì)算機(jī)可讀媒介,所述基于子級(jí)定義產(chǎn)生的匯編包括分析單元聲明標(biāo)記,識(shí)別子級(jí)的子單元。
24.一種用于產(chǎn)生可執(zhí)行匯編的計(jì)算機(jī)執(zhí)行方法,該方法包括在標(biāo)記文件內(nèi)識(shí)別子級(jí)定義,該子級(jí)定義定義一子級(jí);和產(chǎn)生基于該子級(jí)定義的匯編,該匯編可被執(zhí)行以便產(chǎn)生與子級(jí)有關(guān)的對(duì)象示例。
25.如權(quán)利要求24所述的計(jì)算機(jī)執(zhí)行方法,所述識(shí)別子級(jí)定義包括分析程序子級(jí)標(biāo)記,該子級(jí)標(biāo)記包括為定義名稱的子級(jí)名稱屬性,該名稱與示例對(duì)象的類型有關(guān)。
26.如權(quán)利要求24所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析子級(jí)定義標(biāo)記包括定義從其派生出子級(jí)的超級(jí),指定采用與程序語言有關(guān)語法的先天特征,編譯語法為匯編的一部分。
27.如權(quán)利要求24所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析指令程序標(biāo)記,定義當(dāng)示例對(duì)象時(shí)至少一補(bǔ)充操作執(zhí)行,該補(bǔ)充操作是匯編的一部分。
28.如權(quán)利要求24所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析事件標(biāo)記,為子級(jí)產(chǎn)生一事件定義和與事件相對(duì)應(yīng)的處理程序。
29.如權(quán)利要求24所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析性能標(biāo)記,當(dāng)示例對(duì)象時(shí),定義一性能為對(duì)象內(nèi)的一員。
30.一種用于從標(biāo)記文件的子級(jí)定義產(chǎn)生匯編的計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括處理器;和存儲(chǔ)器,該存儲(chǔ)器被分配給很多計(jì)算機(jī)可執(zhí)行指令,該指令由處理器被裝載到存儲(chǔ)器用于執(zhí)行,該計(jì)算機(jī)可執(zhí)行指令操作方法包括在標(biāo)記文件內(nèi)識(shí)別子級(jí)定義,該子級(jí)定義定義一子級(jí);和產(chǎn)生基于該子級(jí)定義的匯編,該匯編可被執(zhí)行以便產(chǎn)生與子級(jí)有關(guān)的對(duì)象示例。
31.如權(quán)利要求30所述的計(jì)算機(jī)執(zhí)行方法,所述識(shí)別子級(jí)定義包括分析子級(jí)標(biāo)記,該子級(jí)標(biāo)記包括為定義名稱的子級(jí)名稱屬性,該名稱與示例對(duì)象的類型有關(guān)。
32.如權(quán)利要求30所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析指令程序標(biāo)記,定義當(dāng)示例對(duì)象時(shí)至少一補(bǔ)充操作執(zhí)行,該補(bǔ)充操作是匯編的一部分。
33.如權(quán)利要求30所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析事件標(biāo)記,為子級(jí)產(chǎn)生一事件定義和與事件相對(duì)應(yīng)的處理程序。
34.如權(quán)利要求30所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編包括分析性能標(biāo)記,當(dāng)示例對(duì)象時(shí),定義一性能為對(duì)象內(nèi)的一員。
35.一種用于產(chǎn)生可執(zhí)行匯編的計(jì)算機(jī)執(zhí)行方法,該方法包括在標(biāo)記文件內(nèi)識(shí)別子級(jí)定義的裝置,該子級(jí)定義定義一子級(jí);和產(chǎn)生基于該子級(jí)定義的匯編裝置,該匯編可被執(zhí)行以便產(chǎn)生與子級(jí)有關(guān)的對(duì)象示例。
36.如權(quán)利要求35所述的計(jì)算機(jī)執(zhí)行方法,所述識(shí)別子級(jí)定義的裝置包括分析子級(jí)標(biāo)記的裝置,該子級(jí)標(biāo)記包括為定義名稱的子級(jí)名稱屬性,該名稱與示例對(duì)象的類型有關(guān)。
37.如權(quán)利要求35所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編裝置包括分析子級(jí)定義標(biāo)記裝置,定義從其派生出子級(jí)的超級(jí),指定采用與程序語言有關(guān)語法的先天特征的裝置,及編譯語法為匯編的一部分裝置
38.如權(quán)利要求35所述的計(jì)算機(jī)執(zhí)行方法,所述基于子級(jí)定義產(chǎn)生的匯編裝置包括分析指令程序標(biāo)記裝置,定義當(dāng)示例對(duì)象時(shí)至少一補(bǔ)充操作執(zhí)行,該補(bǔ)充操作是匯編的一部分。
39.具有為子級(jí)產(chǎn)生可執(zhí)行匯編指令的計(jì)算機(jī)可讀媒介,該指令包括如權(quán)利要求35所述的方法。
全文摘要
本發(fā)明描述了一種系統(tǒng)、方法和數(shù)據(jù)結(jié)構(gòu),能從在標(biāo)記文件內(nèi)的子級(jí)定義產(chǎn)生可執(zhí)行匯編。根據(jù)本發(fā)明,子級(jí)定義是基于一種模式撰寫的。該模式可以是基于XML的。該模式包括為子級(jí)定義名稱的子級(jí)標(biāo)記。該名稱與為當(dāng)可執(zhí)行匯編執(zhí)行示例的對(duì)象的類型有關(guān)。該模式進(jìn)一步包括一個(gè)或多個(gè)標(biāo)記,比如為指定一程序語言編譯子級(jí)定義,指定從其派生出子級(jí)的超級(jí),指定當(dāng)對(duì)象成為示例時(shí)的執(zhí)行操作,產(chǎn)生一事件定義和事件處理為該子級(jí),指定當(dāng)對(duì)象示例時(shí)在對(duì)象內(nèi)性能成為一員。
文檔編號(hào)G06F9/45GK1525317SQ0313676
公開日2004年9月1日 申請(qǐng)日期2003年5月19日 優(yōu)先權(quán)日2003年2月28日
發(fā)明者S·拉莫尼, R·A·雷爾耶, J·L·波格丹, S 拉莫尼, 波格丹, 雷爾耶 申請(qǐng)人:微軟公司