国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      編譯時可解釋代碼檢錯的制作方法

      文檔序號:6570377閱讀:256來源:國知局
      專利名稱:編譯時可解釋代碼檢錯的制作方法
      編譯時可解釋代碼檢錯 背景背景和相關(guān)技術(shù)計(jì)算系統(tǒng)已經(jīng)徹底改變了我們工作和游戲的方式。計(jì)算系統(tǒng)有各種各樣 的形式,包括膝上型計(jì)算機(jī)、臺式計(jì)算機(jī)、個人數(shù)字助理、電話甚至常規(guī)上不 與計(jì)算系統(tǒng)相關(guān)聯(lián)的設(shè)備,諸如例如冰箱和汽車。計(jì)算系統(tǒng)甚至可包括經(jīng)由網(wǎng) 絡(luò)互連的多個組成計(jì)算系統(tǒng)。因此,某些計(jì)算系統(tǒng)小到足以放在手掌里,而其 他計(jì)算系統(tǒng)則可擴(kuò)展到全球的許多地方。無論其物理形式是怎樣的,計(jì)算系統(tǒng)通常都由硬件和軟件組成。硬件最 基本地包括至少一個處理器和存儲器。軟件包括可包含在存儲器或存儲中、且 可由處理器訪問和執(zhí)行以引導(dǎo)計(jì)算系統(tǒng)的總體功能的指令。因此,軟件在啟用 和引導(dǎo)計(jì)算系統(tǒng)的功能方面是至關(guān)重要的。軟件一開始通常使用"源代碼"來起草,源代碼使用更加人類可讀的編程 語言表示軟件的所需功能。在軟件執(zhí)行之前,軟件被轉(zhuǎn)換成計(jì)算系統(tǒng)的處理器 可讀的形式。存在兩種可引起這樣的轉(zhuǎn)換的基本進(jìn)程,即編譯和解釋。在編譯或解釋時,編譯器(編譯的情況中)或解釋器(解釋的情況中)訪 問根據(jù)編程語言起草的源代碼。如果源代碼遵循編程語言且不包括明顯的功能 錯誤,則編譯器或解釋器生成可由計(jì)算系統(tǒng)執(zhí)行的可執(zhí)行代碼。如果源代碼包 括錯誤,則編譯和解釋功能通常生成允許作者對源代碼進(jìn)行改正的出錯消息。 編譯通常在可執(zhí)行代碼要運(yùn)行之前很久就進(jìn)行。編譯器可僅生成可執(zhí)行文件, 后者可在稍后在某一適當(dāng)時間執(zhí)行。而另一方面,解釋在運(yùn)行時進(jìn)行,剛好在 可執(zhí)行代碼生成之前。有時,可解釋代碼被嵌入在可編譯代碼內(nèi)。在這種情況中,可編譯代碼被 編譯成可執(zhí)行文件,但可解釋代碼在運(yùn)行時之前不被解釋。因此,如果在可解 釋代碼中存在錯誤,則整個代碼的功能可能存在風(fēng)險(xiǎn)。簡要概述本發(fā)明實(shí)施例的各方面涉及便于在可解釋代碼的運(yùn)行時之前在可解釋代 碼中檢錯。在訪問可解釋代碼之后,可解釋命令的相應(yīng)的構(gòu)造規(guī)則用于制定遵 循構(gòu)造規(guī)則的可解釋命令的可編譯可鏈接表示??缮稍诰幾g時創(chuàng)建并填充鏈 接至可編譯可鏈接表示的對象的源代碼。如果發(fā)生編譯錯誤,則如有需要這些 錯誤可在運(yùn)行時之前被修補(bǔ)。如果不存在編譯錯誤,則可執(zhí)行對象從而調(diào)用可 解釋命令。因此,代替等待直到運(yùn)行時來確定可解釋命令的調(diào)用是否會發(fā)生錯 誤,可編譯相應(yīng)的可編譯代碼以在運(yùn)行時之前發(fā)現(xiàn)任何錯誤。提供本概述以便以簡化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些 概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在 用于幫助確定所要求保護(hù)的主題的范圍。附圖簡述為了描述可獲取本發(fā)明的上述和其他優(yōu)點(diǎn)和特征的方式,將通過引用附圖 中示出的本發(fā)明的特定實(shí)施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述???以理解這些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對其范圍的限 制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中-

      圖1示出了可在其中釆用本發(fā)明的原理的合適的計(jì)算環(huán)境; 圖2示出了根據(jù)本發(fā)明原理的一方面的其中編譯代碼生成器基于可解釋 代碼的構(gòu)造規(guī)則制定可解釋代碼的可編譯可鏈接表示的環(huán)境,且該可編譯可鏈 接標(biāo)識用于在編譯時而不必在運(yùn)行時標(biāo)識調(diào)用可解釋命令的可編譯標(biāo)識時的 任何錯誤;以及圖3示出了根據(jù)本發(fā)明的一方面的用于便于在可解釋代碼的運(yùn)行時之前 在可解釋代碼中進(jìn)行檢錯的方法的流程圖。詳細(xì)描述本發(fā)明涉及便于在可解釋代碼的運(yùn)行時之前在可解釋代碼的調(diào)用中檢錯。 首先,將參考圖l描述本發(fā)明的原理可在其中操作的示例計(jì)算系統(tǒng)。然后,將 參考后續(xù)附圖進(jìn)一步詳細(xì)描述本發(fā)明的原理。本發(fā)明的實(shí)施例可以包括含有各 種計(jì)算機(jī)硬件的專用或通用計(jì)算機(jī),這將在以下做出進(jìn)一步討論。圖1示出可用于實(shí)現(xiàn)本發(fā)明的特征的示例計(jì)算系統(tǒng)100的示意圖。所述計(jì) 算系統(tǒng)只是這樣的一個合適的計(jì)算系統(tǒng)的示例,而并不旨在對本發(fā)明使用范圍 或功能提出任何限制。也不應(yīng)該把本發(fā)明解釋為對圖1中示出的任一組件或其 組合有任何依賴性或要求。計(jì)算系統(tǒng)現(xiàn)在越來越多地采用各種形式。計(jì)算系統(tǒng)可例如是手持式設(shè)備、 裝置、膝上型計(jì)算機(jī)、臺式計(jì)算機(jī)、大型機(jī)、或分布式計(jì)算系統(tǒng)。在本描述以 及權(quán)利要求書中,術(shù)語"計(jì)算系統(tǒng)"被廣義地定義為包括包含至少一個處理器 以及其上能含有可由處理器執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的存儲器的任何設(shè)備或 系統(tǒng)(或其組合)。存儲器可采取任何形式,且可取決于計(jì)算系統(tǒng)的本質(zhì)和形 式。計(jì)算系統(tǒng)可在網(wǎng)絡(luò)環(huán)境上分布,且可包括多個組成計(jì)算系統(tǒng)。參考圖l,在其最基本配置中,計(jì)算系統(tǒng)100—般包括至少一個處理單元102和存儲器104。存儲器104可以是易失性、非易失性、或兩者的某種組合,且表示一個或多個物理計(jì)算機(jī)可讀介質(zhì)。易失性存儲器的示例包括隨機(jī)存取存儲器(RAM)。非易失性存儲器的示例包括只讀存儲器(ROM)、閃存等。 術(shù)語"存儲器"也可在此處用來指示非易失性海量存儲。這樣的存儲可以是可 移動或不可移動的,且可包括(但不限于)PCMCIA卡、磁盤和光盤、磁帶等。如此處所使用的,術(shù)語"模塊"或"組件"可指的是在計(jì)算系統(tǒng)上執(zhí)行的 軟件對象或例程。此處描述的不同的組件、模塊、引擎和服務(wù)可被實(shí)現(xiàn)為在計(jì) 算系統(tǒng)上作為協(xié)議的一部分執(zhí)行的對象或進(jìn)程(例如,作為分開的線程)。盡 管此處描述的系統(tǒng)和方法可用軟件實(shí)現(xiàn),但用硬件以及軟件和硬件的組合的實(shí) 現(xiàn)也是可能的且已被想到。在以下描述中,參考由一個或多個計(jì)算系統(tǒng)執(zhí)行的動作描述本發(fā)明的實(shí)施 例。如果這樣的動作用軟件實(shí)現(xiàn),則相關(guān)聯(lián)計(jì)算系統(tǒng)中執(zhí)行該動作的一個或多 個處理器響應(yīng)于執(zhí)行了計(jì)算可執(zhí)行指令而引導(dǎo)計(jì)算系統(tǒng)的操作。這樣的操作的示例涉及對數(shù)據(jù)的操縱。計(jì)算機(jī)可執(zhí)行指令(和所操縱的數(shù)據(jù))可被存儲在計(jì) 算系統(tǒng)100的存儲器104中。計(jì)算系統(tǒng)IOO也可包含允許計(jì)算系統(tǒng)IOO例如在網(wǎng)絡(luò)IIO上與其他計(jì)算系 統(tǒng)通信的通信信道108。通信信道108是通信介質(zhì)的示例。通信介質(zhì)一般具體 化成諸如載波或其它傳輸機(jī)制等經(jīng)調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié) 構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。作為示例而非限制, 通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接接線連接,以及無線介質(zhì),諸如 聲學(xué)、無線電、紅外線和其它無線介質(zhì)。如此處所用的術(shù)語計(jì)算機(jī)可讀介質(zhì)既 包括存儲介質(zhì)又包括通信介質(zhì)。本發(fā)明的范圍內(nèi)的實(shí)施例也包括用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu) 或其上儲存有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī) 可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問的任何可用介質(zhì)。作為示例而非限 制,這樣的計(jì)算機(jī)可讀介質(zhì)可包括RAM、 ROM、 EEPROM、 CD-ROM或其他 光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于攜帶或存儲計(jì)算機(jī)可執(zhí)行指 令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何 其他介質(zhì)。當(dāng)通過網(wǎng)絡(luò)或另一通信連接(或者硬連線、無線、或硬連線和無線 的組合)向計(jì)算機(jī)傳輸或提供信息時,計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈橛?jì)算機(jī)可讀 介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。以上的組合也應(yīng) 包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。計(jì)算機(jī)可執(zhí)行指令例如包括,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè) 備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。盡管用結(jié)構(gòu)特征和/或方法動作專用 的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上 述特定特征或動作。相反,上述特定特征和動作作為實(shí)現(xiàn)權(quán)利要求的示例形式 公開。圖2示出了其中本發(fā)明的原理可操作的環(huán)境200。環(huán)境200可以但不必在 圖1的計(jì)算系統(tǒng)100內(nèi)實(shí)現(xiàn)。如果是這樣,則環(huán)境200可包括在系統(tǒng)存儲器中 實(shí)例化的對象和數(shù)據(jù)結(jié)構(gòu)和/或可以是位于存儲中的功能性計(jì)算機(jī)可執(zhí)行指令??涉溄訋焐善?10可以是硬件、軟件或硬件和軟件的組合??涉溄訋焐?成器210是訪問可解釋代碼201A,并使用可解釋代碼201A的相關(guān)聯(lián)的構(gòu)造規(guī)則202A執(zhí)行可解釋代碼的可編譯可鏈接表示211A(見可編譯可鏈接庫211A) 的組件。在本描述和權(quán)利要求書中,"可鏈接庫"是對象在編譯時可鏈接至的 一個或多個類定義表示的任何組??涉溄訋焐善?10可自動制定可編譯可鏈 接庫211A而無需人類干預(yù),或可允許用戶干預(yù)來允許人參與執(zhí)行過程??涉?接庫生成器201可包括一個或多個模塊和/或可包括與可鏈接庫生成無關(guān)的模 塊部分。圖3示出了根據(jù)本發(fā)明原理的一方面用于便于在可解釋代碼的運(yùn)行時之 前在可解釋代碼中進(jìn)行檢錯的方法300的流程圖。由于方法300可在環(huán)境200 中執(zhí)行,因此將頻繁參考圖2的環(huán)境200來描述圖3的方法300。首先,可鏈接庫生成器210訪問可解釋命令(動作301)。參考圖2,可 解釋命令可在可解釋代碼201中表示。可解釋代碼可在網(wǎng)絡(luò)上、從本地存儲、 從系統(tǒng)存儲器或從其任何組合訪問??山忉尨a可能在近期或在更遙遠(yuǎn)的過去 構(gòu)造,且可由人創(chuàng)作或由計(jì)算系統(tǒng)自動生成?,F(xiàn)在將給出可解釋命令的兩個示例,將在說明書全文中使用這兩個示例以 便闡明本發(fā)明的更廣義的原理。在第一示例中,后文中稱之為"第一示例", 可解釋命令采取以下形式Set-location -path "c:\windows"該可解釋命令可使用命令行工具來許可。命令在導(dǎo)航目錄結(jié)構(gòu)時設(shè)置當(dāng)前 位置。該命令將當(dāng)前目錄設(shè)置設(shè)置在c:\windows目錄。然而,可解釋命令代替 被輸入到命令行工具,而可作為參數(shù)通過程序輸入到可編譯代碼。例如, Set-location (設(shè)置位置)命令可如下通過程序嵌入到ShellExecute (命令解釋程序執(zhí)行)命令中ShellExecute("Set-location -path 'c:Vwindows,")后文中被稱為"第二示例"的第二示例考慮表示為命令行輸入的以下可解釋代碼Get-item -path "c:\windows"命令得到在路徑屬性中指定的位置處的所有文件的清單,在該情況中,為 "c:\windows"。然而,再一次,可解釋命令代替被輸入到命令行工具,而可 如下作為參數(shù)通過程序輸入到可編譯代碼She膽xecute("Get-item -path 'c:\windows,,,常規(guī)上,無論可解釋代碼是否被輸入到命令行工具以便立即執(zhí)行,或無論 可解釋命令是否通過程序嵌入到其他源代碼(例如,ShellExecute("..."))內(nèi), 可解釋代碼本身的結(jié)構(gòu)在運(yùn)行時之前不被評估,而恰好在執(zhí)行可解釋代碼之前 才評估。這是可解釋代碼的本質(zhì)。相應(yīng)地,如果可解釋代碼中存在任何錯誤, 則即使可解釋代碼被嵌入到其他可編譯源代碼中,它們在運(yùn)行時之前也將不會 被發(fā)現(xiàn)。根據(jù)本發(fā)明的原理,制定可解釋代碼本身的可編譯可鏈接表示。然后可將 源代碼制定成在編譯時創(chuàng)建并填充基于可編譯可鏈接表示的對象。所編譯和鏈 接的對象在執(zhí)行時調(diào)用相應(yīng)的可解釋注釋。如果源代碼的編譯失敗,則調(diào)用可 解釋命令的源代碼中更有可能存在錯誤。因此如有需要,可在運(yùn)行時之前修補(bǔ) 這些錯誤?;貋韰⒖紙D2和3,除訪問可解釋命令201A (動作301)以外,編譯代碼 生成器210也訪問對應(yīng)于可解釋命令的構(gòu)造規(guī)則(動作302)。例如,構(gòu)造規(guī) 則202A可對應(yīng)于可解釋命令201A。其他構(gòu)造規(guī)則202B可對應(yīng)于其他可解釋 命令201B。例如,對第一示例"Set-location —path 'c:\windows,",可訪問"Set-location" 命令類別的構(gòu)造規(guī)則。這些構(gòu)造規(guī)則可指定命令的標(biāo)題(例如,"Set-location") 以及列出命令的任何屬性的適當(dāng)標(biāo)題(在該情況中為"path (路徑)"),可 能有屬性是強(qiáng)制還是任選的,什么是可接受的值類型和/或值(例如,文本串將 是屬性"路徑"的可接受值類型),以及任何其他構(gòu)造規(guī)則。構(gòu)造規(guī)則可用人類可讀形式表示,在這種情況中構(gòu)造規(guī)則可由人來評估?;蛘?,構(gòu)造規(guī)則可用 計(jì)算機(jī)可讀形式表示,諸如用遵循計(jì)算系統(tǒng)理解的模式的可擴(kuò)展標(biāo)記語言(XML)文檔表示。類似地,對第二示例"Get-item-path'c:\windows,",可訪問"Get-item" 命令類別的構(gòu)造規(guī)則。這些構(gòu)造規(guī)則可指定命令的標(biāo)題(例如,"Set-location") 以及列出命令的任何屬性的適當(dāng)標(biāo)題(在該情況中為"path (路徑)"),可 能有屬性是強(qiáng)制還是任選的,什么是可接受的值類型和/或值(例如,文本串將 是屬性"路徑"的可接受值類型)等。再一次,構(gòu)造規(guī)則可由人解釋和/或可由 計(jì)算機(jī)解釋?;貋韰⒖紙D2和3,可鏈接庫生成器然后使用構(gòu)造規(guī)則來制定遵循構(gòu)造規(guī) 則的可解釋命令的可編譯可鏈接表示(動作303)。例如,在圖2中,可鏈接 庫生成器210生成可編譯可鏈接庫211A。這可按各種方式執(zhí)行。例如,在人 工方法中,人類作者可評估構(gòu)造規(guī)則,并使用可鏈接庫生成器210作為創(chuàng)作工 具來制定可解釋代碼的可編譯可鏈接表示。在自動化方法中,可鏈接庫生成器 210本身可執(zhí)行評估和創(chuàng)作而無需人類干預(yù)。一旦完成之后,根據(jù)與可解釋命令相關(guān)聯(lián)的結(jié)構(gòu)化規(guī)則構(gòu)造可編譯可鏈接 表示。參考圖3,然后可編譯可解釋代碼的可編譯可鏈接表示(動作304), 即使是在執(zhí)行可解釋代碼之前的某個時間。在運(yùn)行時之前的任何時刻,可制定(動作305)在編譯(動作306)時制 定并填充基于可解釋代碼的可編譯可鏈接表示并鏈接至該表示的對象的代碼 (例如,源代碼)。例如,如果可編譯可鏈接表示是類定義,則源代碼可引導(dǎo) 作為由類定義所定義的類的實(shí)例的對象的制定和填充。參考圖2,編譯代碼生 成器220生成可編譯代碼221,后者然后使用編譯器230編譯來生成編譯報(bào)告 231。源代碼可由計(jì)算機(jī)自動生成,或可響應(yīng)于用戶輸入生成。如果編譯結(jié)果未檢測到編譯錯誤,則可解釋代碼更有可能是結(jié)構(gòu)合理的, 且在執(zhí)行時將較不可能導(dǎo)致運(yùn)行時錯誤。因此,在之后的任何時刻,可執(zhí)行對 象從而調(diào)用可解釋命令。如果編譯結(jié)果檢測到編譯錯誤(動作307),則創(chuàng)建 調(diào)用可解釋命令的對象的源代碼可被更改以糾正錯誤(動作308)。相應(yīng)地, 代替等待直到運(yùn)行時來檢測和糾正可編譯代碼中或未嵌入可編譯代碼中的錯誤,可在運(yùn)行時之前檢測任何錯誤。圖3的方法300可對由省略號201B、 202B 和211B表示的多個命令、多個構(gòu)造規(guī)則、多個可解釋代碼的可編譯可鏈接表 示執(zhí)行。作為其中可解釋命令的可編譯可鏈接表示是類定義的特定示例,類定義的 參數(shù)可通過取可解釋命令的參數(shù)并在類定義中設(shè)置同一名稱的屬性來生成???將調(diào)用方法添加到類定義,它取已被設(shè)置的類屬性并使用屬性值作為類相應(yīng)參 數(shù)的自變量來運(yùn)行命令。類可被實(shí)例化以形成對象,將參數(shù)屬性設(shè)為對應(yīng)于在 可解釋命令中提供的值的值。然后,可調(diào)用該調(diào)用方法?,F(xiàn)在參考其中將可解釋命令"Set-location -path 'c:\windows'"提供給可 編譯代碼生成器210的第一示例??删幾g代碼生成器可生成如下用0#骨架代 碼表示的類Public class SetLoeationCommandPublic string Path{get{ .. } set {if(!IsValidPath(value》{ throw ArgumentExceptionElse {...}Public object Invoke(){ ...}生成在執(zhí)行時調(diào)用可解釋命令"Set-location -path 'c:Windows,"的對象的源代碼可如下出現(xiàn)在第一示例中SetLocationCommand command = new SetLocationCommand(》 command.path = "c:\windows"; object result = command.Invoke();調(diào)用方法在被調(diào)用時根據(jù)所生成的可編譯可鏈接表示執(zhí)行可解釋代碼,如 有結(jié)果并返回結(jié)果。如果源代碼試圖設(shè)置不存在的參數(shù),則將存在編譯時錯誤。例如,以下第 二行在編譯器運(yùn)行時將導(dǎo)致失敗,因?yàn)?FullName (全名)"不是類 "SetLocationCommand (設(shè)置位置命令)"的已定義的屬性。SetLocationCommand command = new SetLocationCommand(); command.FullName = "c:\windows"; object result = command.Invoke();在第二示例中,將可解釋命令"Get-item -path 'c:\windows,"轉(zhuǎn)化成如 由偽代碼表示的以下類Class GetltemCommandString Path {...} IEnumerate Invoke {...}可生成在編譯和執(zhí)行時實(shí)例化類的對象實(shí)例的源代碼。例如,源代碼可如下出現(xiàn)GetltemCommand = newGetItemCommand(》 GetltemCommand.Path = "c:\windows";GetltemCommand.Invoke;在編譯時,可知道相應(yīng)的對象將在運(yùn)行時更可能成功地執(zhí)行與命令 "Get-item-path'c:\windows'"相關(guān)聯(lián)的可解釋命令,因?yàn)樵创a被編譯并被 鏈接至定義相關(guān)聯(lián)可解釋命令的結(jié)構(gòu)的類?,F(xiàn)在假設(shè),起草者改為起草以下源 代碼GetltemCommand = newGetltemCommandO; GetltemCommand,ath = "c:\windows"; GetltemC ommand .Invoke;此處用戶僅少打了 "path"的"p"。當(dāng)編譯該源代碼時,編譯器將識別"GetltemCommand (獲得項(xiàng)目命令)"類不具有"ath"屬性,從而使編譯失敗。相應(yīng)地,在編譯時之后,源代碼中的錯誤可在運(yùn)行時之前糾正。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附 權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方式的含義和范圍內(nèi)的 所有改變應(yīng)被權(quán)利要求書的范圍涵蓋。
      權(quán)利要求
      1.一種用于便于在可解釋代碼的運(yùn)行時之前對所述可解釋代碼進(jìn)行檢錯的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括以下動作訪問可解釋命令的動作;訪問對應(yīng)于所述可解釋命令的構(gòu)造規(guī)則的動作;以及使用所述構(gòu)造規(guī)則來制定遵循所述構(gòu)造規(guī)則的所述可解釋命令的可編譯可鏈接表示的動作。
      2. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述可解釋命令 的所述可編譯可鏈接表示包括遵循所述構(gòu)造規(guī)則的對象的類定義。
      3. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括以下動作: 制定在編譯時創(chuàng)建并填充鏈接至所述命令的可編譯可鏈接表示的對象的源代碼的動作。
      4. 如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括以下動作編譯所述源代碼從而創(chuàng)建并填充鏈接至所述命令的可編譯可鏈接表示的 對象的動作。
      5. 如權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括以下動作:作為所述編譯動作的結(jié)果檢測編譯錯誤報(bào)告的動作。
      6. 如權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括以下動作:作為所述編譯錯誤報(bào)告的結(jié)果更改所述可解釋命令的動作。
      7. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述構(gòu)造規(guī)則定義包括所述命令的規(guī)則類別的結(jié)構(gòu)化規(guī)則。
      8. 如權(quán)利要求7所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述構(gòu)造規(guī)則是 第一構(gòu)造規(guī)則,所述規(guī)則類別是第一規(guī)則類別,且所述命令是第一命令,所述 方法還包括以下動作訪問處于不同于所述第一規(guī)則類別的第二規(guī)則類別中的第二可解釋命令 的動作;訪問對應(yīng)于所述第二可解釋命令的第二構(gòu)造規(guī)則的動作;以及使用所述第二構(gòu)造規(guī)則來制定遵循所述第二構(gòu)造規(guī)則的所述第二可解釋 命令的第二可編譯可鏈接表示的動作。
      9. 如權(quán)利要求8所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述第二可解釋 命令的所述第二可編譯可鏈接表示包括遵循所述第二構(gòu)造規(guī)則的第二對象的 第二類定義。
      10. 如權(quán)利要求8所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括以下動作制定在編譯時創(chuàng)建并填充鏈接至所述命令的第二可編譯可鏈接表示的對 象的源代碼的動作。
      11. 一種包括其上含有計(jì)算機(jī)可執(zhí)行指令的一個或多個計(jì)算機(jī)可讀介 質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述指令被構(gòu)造成在由計(jì)算系統(tǒng)的一個或多個處理器執(zhí)行時,所述一個或多個處理器使所述計(jì)算系統(tǒng)執(zhí)行便于在可解釋代碼的運(yùn)行時 之前對所述可解釋代碼進(jìn)行檢錯的方法,所述方法包括以下動作-訪問可解釋命令和對應(yīng)于所述可解釋命令的構(gòu)造規(guī)則;以及 使用所述構(gòu)造規(guī)則制定所述可解釋命令的可編譯可鏈接表示。
      12. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個或 多個計(jì)算機(jī)可讀介質(zhì)各自是物理系統(tǒng)存儲器和/或物理存儲介質(zhì)。
      13. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個或多個計(jì)算機(jī)可讀介質(zhì)是可移動存儲介質(zhì)。
      14. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述可解釋 命令的所述可編譯可鏈接表示包括遵循所述構(gòu)造規(guī)則的對象的類定義。
      15. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述可解釋 命令的所述可編譯可鏈接表示包括被配置成制定和填充從所述類定義得到的 對象的源代碼。
      16. 如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括以下動作制定在編譯時創(chuàng)建并填充鏈接至所述命令的可編譯可鏈接表示的對象的 源代碼的動作。
      17. 如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述構(gòu)造規(guī)則定義包括所述命令的規(guī)則類別的結(jié)構(gòu)化規(guī)則。
      18. —種計(jì)算系統(tǒng),包括 一個或多個處理器;其上含有計(jì)算機(jī)可執(zhí)行指令的一個或多個物理計(jì)算機(jī)可讀介質(zhì),所述指令 被構(gòu)造成在由計(jì)算系統(tǒng)的一個或多個處理器執(zhí)行時,所述一個或多個處理器使 所述計(jì)算系統(tǒng)在訪問可解釋命令和構(gòu)造規(guī)則時使用所述構(gòu)造規(guī)則制定所述可 解釋命令的可編譯可鏈接表示。
      19. 如權(quán)利要求18所述的計(jì)算系統(tǒng),其特征在于,所述可解釋命令的所 述可編譯可鏈接表示包括遵循所述構(gòu)造規(guī)則的對象的類定義。
      20. 如權(quán)利要求18所述的計(jì)算系統(tǒng),其特征在于,所述可解釋命令的 所述可編譯可鏈接表示可用于制定在編譯時被配置成制定和填充鏈接至所述類定義的對象的源代碼-
      全文摘要
      便于在可解釋代碼的運(yùn)行時之前對可解釋代碼檢錯。在訪問可解釋代碼之后,可解釋命令的相應(yīng)的結(jié)構(gòu)化規(guī)則用于自動制定遵循構(gòu)造規(guī)則的可解釋命令的可編譯可鏈接表示。然后可制定在編譯時鏈接至可解釋命令的可編譯可鏈接表示的源代碼。如果存在編譯錯誤,則可在編譯時而非等待直到運(yùn)行時才發(fā)現(xiàn)這些錯誤。另一方面,如果不存在編譯錯誤,則可執(zhí)行經(jīng)編譯的對象從而調(diào)用可解釋命令。
      文檔編號G06F17/00GK101336413SQ200680051764
      公開日2008年12月31日 申請日期2006年12月28日 優(yōu)先權(quán)日2006年1月25日
      發(fā)明者J·D·瓊斯, J·P·斯諾弗 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1