途徑可按需提取信息,或者修改進(jìn)入下一途徑的代碼,或者以其他方式豐富AST。該上下文中的途徑是通過應(yīng)用某一規(guī)則或者通過修改該規(guī)則對源代碼采取行動的實(shí)體。例如,一個途徑可定義方法,另一途徑可定義傳承,并且另一途徑可生成代碼。根據(jù)實(shí)施例,每一模塊表示與其他流水線處理并行運(yùn)行的流水線。
[0030]在生成可執(zhí)行代碼之后,該可執(zhí)行代碼被存儲在存儲240中??蓤?zhí)行代碼的存儲可并行地發(fā)生。根據(jù)一實(shí)施例,可執(zhí)行代碼定義模塊,這些模塊定義與應(yīng)用相關(guān)聯(lián)的.NET匯編件。
[0031]圖3示出了來自編譯過程的示例性階段的示例。
[0032]如所示,圖3示出了四個示例性階段。
[0033]階段I解說了遍歷AST中的類型以確定不同的類。在當(dāng)前示例中,階段I示出了在最初生成AST時確定的示例類名。在階段2之前,(例如,根據(jù)類名和/或使用某一其他方法確定)不同的類被分割成不同的模塊。
[0034]階段2示出了延伸AST以包括更多的信息,諸如遍歷定義傳承、參數(shù)、構(gòu)造器、元數(shù)據(jù)等的方法中的每一種方法。
[0035]階段3解說了遍歷主體(例如,這些方法中的陳述和表達(dá))、以及生成包括呼叫階段2中所定義的方法的代碼。
[0036]階段4示出了將這些模塊中的每一個模塊保存到文件。在階段4期間,可執(zhí)行代碼被寫入模塊(例如,.NET模塊)并且被存儲在存儲設(shè)備和/或存儲器上??刹⑿械貓?zhí)行階段4。
[0037]如可見的,通過編譯流水線的每一途徑添加更多的信息。
[0038]圖4解說了在編譯階段內(nèi)的不同階段使用并行計算的編譯過程。在閱讀本文中給出的例程的討論時,應(yīng)該理解,各個實(shí)施例的邏輯操作被實(shí)現(xiàn)為:(I) 一系列運(yùn)行于計算系統(tǒng)上的計算機(jī)實(shí)現(xiàn)的動作或程序模塊;和/或(2)計算系統(tǒng)內(nèi)的互連的機(jī)器邏輯電路或電路模塊。這種實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計算系統(tǒng)的性能需求的選擇問題。因此,所例示并構(gòu)成本文中描述的實(shí)施例的邏輯操作被不同地稱為操作、結(jié)構(gòu)設(shè)備、動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可以用軟件、固件、專用數(shù)字邏輯,以及其任何組合來實(shí)現(xiàn)。然操作是以特定次序示出,但是操作的次序可以根據(jù)實(shí)施方式而改變并以其他次序來執(zhí)行。
[0039]在啟動操作之后,該過程移動到操作410,在操作410中訪問源代碼。源代碼可被包括在一個或多個文件中,并且使用一種或多種編程語言進(jìn)行編寫。例如,可使用C、C++、C#、X++、VISUAL BASIC、VISUAL BASIC.NET等編寫源代碼。根據(jù)實(shí)施例,以X++編寫源代碼。
[0040]流動到操作420,標(biāo)識包含在源代碼內(nèi)的類型。例如,解析器可生成可遍歷以標(biāo)識不同類型中的每一種類型的抽象句法樹(AST)。
[0041]轉(zhuǎn)變到操作430,在不同的模塊之間分割這些類型。可配置所使用的不同模塊的數(shù)量。所選擇的模塊的數(shù)量可取決于各種因素/條件(例如,可用過程、所確定類型的數(shù)量、可用存儲器、…)。例如,可確定源代碼中的多個所定義類,并將其在與多個可用處理器相對應(yīng)的固定數(shù)量的模塊之間進(jìn)行分割。
[0042]流動到操作440,基于分割過程,使用不同的線程來執(zhí)行編譯流水線中的編譯途徑。根據(jù)實(shí)施例,為每一所創(chuàng)建模塊創(chuàng)建一線程,并且該線程與其他模塊的處理并行地運(yùn)行。在編譯過程期間,編譯錯誤被診斷,并且可被呈現(xiàn)給用戶。隨著編譯進(jìn)行,編譯器元數(shù)據(jù)被寫入可通過其他線程訪問的存儲庫和/或存儲器。編譯流水線的最后一個階段生成該模塊的可執(zhí)行代碼。
[0043]轉(zhuǎn)變到操作450,這些模塊被存儲。例如,可為處理的每一模塊創(chuàng)建一文件。根據(jù)實(shí)施例,每一模塊是形成與應(yīng)用相關(guān)聯(lián)的匯編件的.NET模塊。這些模塊的存儲也可并行地發(fā)生。
[0044]隨后該過程移至結(jié)束操作并返回以處理其它動作。
[0045]圖5解說了使用深度并行的源代碼編譯的示例性在線系統(tǒng)。如所示,系統(tǒng)1000包括服務(wù)1010、數(shù)據(jù)存儲1045、模塊/匯編件1046、觸摸屏輸入設(shè)備1050 (例如,板式機(jī))、智能電話1030、以及顯示設(shè)備1080。
[0046]如所示,服務(wù)1010是基于云的和/或基于企業(yè)的服務(wù),它可被配置為提供各種服務(wù),如與各種應(yīng)用(例如搜索、游戲、瀏覽、定位、生產(chǎn)力服務(wù)(例如電子表格、文檔、演示、圖標(biāo)、消息等等))交互的某種其他基于云的/在線服務(wù))相關(guān)的多模態(tài)服務(wù)。該服務(wù)可以使用不同類型的輸入/輸出來交互。例如,用戶可使用語音輸入、觸摸輸入、基于硬件的輸入等等。服務(wù)可提供將預(yù)錄制的語音與合成的語音相組合的語音輸出。服務(wù)1010提供的服務(wù)/應(yīng)用中的一個或多個服務(wù)/應(yīng)用的功能也可被配置為基于客戶端/服務(wù)器的應(yīng)用。
[0047]如所示,服務(wù)1010是向任何數(shù)目的租戶(例如,租戶1-N)提供資源1015和服務(wù)的多租戶服務(wù)。多租戶服務(wù)1010是向訂閱該服務(wù)的租戶提供資源/服務(wù)1015并分別地維護(hù)每個租戶的數(shù)據(jù)且保護(hù)其不受其他租戶數(shù)據(jù)的影響的基于云的服務(wù)。
[0048]如所示的系統(tǒng)1000包括檢測觸摸輸入何時被接收到(如手指觸摸或接近觸摸觸摸屏)的觸摸屏輸入設(shè)備/顯示器1050(如板式/平板設(shè)備)以及智能電話1030??衫脵z測用戶的觸摸輸入的任何類型的觸摸屏。例如,觸摸屏可包括一層或多層檢測觸摸輸入的電容性材料。除了電容性材料之外或代替電容性材料,可使用其他傳感器。例如,可使用紅外(IR)傳感器。根據(jù)一實(shí)施例,觸摸屏被配置成檢測與可觸摸的表面接觸或位于可觸摸的表面上方的對象。盡管在本說明書中使用術(shù)語“上方”,應(yīng)理解,觸摸面板系統(tǒng)的定向是不相關(guān)的。術(shù)語“上方”旨在可適用于所有這樣的定向。觸摸屏可被配置成確定觸摸輸入被接收的位置(如起點(diǎn)、中間點(diǎn)和終點(diǎn))??赏ㄟ^任何合適的手段,包括如耦合到觸摸面板的振動傳感器或話筒,來檢測可觸摸的表面和物體之間的實(shí)際接觸。用于檢測接觸的傳感器的示例的非窮盡列表包括:基于壓力的機(jī)構(gòu)、微機(jī)械加速度計、壓電器件、電容傳感器、電阻傳感器、感應(yīng)傳感器、激光振動計和LED振動計。
[0049]根據(jù)實(shí)施例,智能電話1030、觸摸屏輸入設(shè)備1050、以及設(shè)備1080被配置有多模式輸入/輸出,并且各自包括應(yīng)用(1031、1051、1081)。
[0050]如所示,觸摸屏輸入設(shè)備1050、智能電話1030、以及顯示設(shè)備1080示出示例性顯示1052/1032/1082,這些示例性顯示示出了對使用多模式輸入/輸出的應(yīng)用的使用。數(shù)據(jù)可被存儲在設(shè)備(如智能電話1030、平板1050)上和/或某一其他位置(如網(wǎng)絡(luò)數(shù)據(jù)存儲1045)處。數(shù)據(jù)存儲1045或某一其他存儲可用于存儲源代碼以及其他數(shù)據(jù)。設(shè)備所使用的應(yīng)用可以是基于客戶端的應(yīng)用、基于服務(wù)器的應(yīng)用、基于云的應(yīng)用和/或某種組合。根據(jù)一實(shí)施例,顯示設(shè)備1080是諸如耦合到顯示器的MICROSOFT XBOX之類的設(shè)備。
[0051]編譯管理器26被配置成執(zhí)行與如本文中所描述的源代碼的并行計算相關(guān)的操作。例如,可使用如本文中所描述的編譯管理器26來編譯應(yīng)用1031、1051、1081。盡管管理器26被示為在服務(wù)1010內(nèi),但是管理器的功能可被包括在其他位置中(例如,在智能電話1030和/或板式設(shè)備1050和/或設(shè)備1080上)。
[0052]本文描述的實(shí)施例和功能可通過多種計算系統(tǒng)來操作,包括但不限于臺式計算機(jī)系統(tǒng)、有線和無線計算系統(tǒng)、移動計算系統(tǒng)(如移動電話、上網(wǎng)本、圖形輸入板或平板型計算機(jī)、筆記本計算機(jī)、和膝上型計算機(jī))、手持設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計算機(jī)、以及大型計算機(jī)。
[0053]此外,本文所述的實(shí)施例和功能性可在分布式系統(tǒng)(如基于云的計算系統(tǒng))上操作,其中應(yīng)用功能性、存儲器、數(shù)據(jù)存儲和檢索、以及各種處理功能可在諸如因特網(wǎng)或內(nèi)聯(lián)網(wǎng)之類的分布式計算網(wǎng)絡(luò)上彼此遠(yuǎn)程地操作。各種類型的用戶界面和信息可經(jīng)板載計算設(shè)備顯示器或經(jīng)與一個或多個計算設(shè)備相關(guān)聯(lián)的遠(yuǎn)程顯示單元被顯示。例如,各種類