專利名稱:句法程序語(yǔ)言翻譯的制作方法
句法程序語(yǔ)言翻譯站旦 冃足計(jì)算機(jī)程序是描述由計(jì)算機(jī)或基于處理器的設(shè)備執(zhí)行的動(dòng)作的指令列表。當(dāng) 計(jì)算機(jī)程序被加載并在計(jì)算機(jī)硬件上執(zhí)行時(shí),計(jì)算機(jī)將會(huì)跟隨計(jì)算機(jī)程序的指令以 預(yù)先確定的方式運(yùn)轉(zhuǎn)。因此,計(jì)算機(jī)變?yōu)閳?zhí)行可由各指令描述的任務(wù)的專用機(jī)器。 使用編程語(yǔ)言的程序員創(chuàng)建包含計(jì)算機(jī)程序的指令。隨著計(jì)算機(jī)程序變得越來(lái)越復(fù) 雜,編程語(yǔ)言已經(jīng)從計(jì)算機(jī)容易理解的低級(jí)機(jī)器碼語(yǔ)言發(fā)展到更易于人類理解的高 級(jí)源代碼語(yǔ)言。編程語(yǔ)言通?;谡Z(yǔ)言的特性和特征被分入各種類別。例如,c通常被描述為過(guò)程性編程語(yǔ)言,因?yàn)樗谀K性概念和程序代碼的范圍。C弁和Java是面向 對(duì)象的編程語(yǔ)言,它轉(zhuǎn)變?yōu)閷⒊绦虼a的創(chuàng)建和處理作為對(duì)象類。面向數(shù)據(jù)的語(yǔ)言 包括SQL (結(jié)構(gòu)化的查詢語(yǔ)言)和Xpath則朝向?qū)Υ鎯?chǔ)數(shù)據(jù)的搜索和處理,諸如 相關(guān)數(shù)據(jù)或XML (可擴(kuò)展標(biāo)記語(yǔ)言)數(shù)據(jù)。這種專業(yè)化的結(jié)果是各種編程語(yǔ)言都 具有其特定的優(yōu)點(diǎn)和缺點(diǎn)。程序員現(xiàn)今通常偏向于用他們具有大量經(jīng)驗(yàn)的或者最為合適一項(xiàng)目大部分的 特定語(yǔ)言來(lái)開(kāi)發(fā)計(jì)算機(jī)程序。然而,程序員認(rèn)識(shí)到各編程語(yǔ)言間的專業(yè)化并且愿意 為具體任務(wù)利用對(duì)其最佳的語(yǔ)言。例如,C財(cái)呈序員可能希望接觸使用SQL的相關(guān) 數(shù)據(jù)庫(kù),這樣就能從SQL面向數(shù)據(jù)的各方面和效率中獲益。實(shí)現(xiàn)此目的的一種方 法是將C弁詢問(wèn)表達(dá)翻譯成SQL詢問(wèn)表達(dá)。編程語(yǔ)言的集成要求從第一語(yǔ)言到第二 語(yǔ)言的句法翻譯。這能確保在第一語(yǔ)言中指定的所有程序性狀態(tài)、表達(dá)等的意義被 翻譯成具有與第一語(yǔ)言指定意義相同的意義的第二語(yǔ)言的句法。這通常涉及非常困 難的句法和數(shù)據(jù)的轉(zhuǎn)換,以保護(hù)第一語(yǔ)言的語(yǔ)義。發(fā)明內(nèi)容以下呈現(xiàn)了簡(jiǎn)化概述,以提供對(duì)權(quán)利要求主題的某些方面的基本理解。本概 述不是廣義的概覽。它并不意指標(biāo)識(shí)關(guān)鍵/重要元素也不意欲描繪權(quán)利要求主題的范圍。這一概述的唯一目的是以一種簡(jiǎn)化的形式來(lái)介紹一些概念,作為稍后呈現(xiàn)的 更為詳細(xì)的描述的前序部分。簡(jiǎn)言之,在此提供了編程語(yǔ)言翻譯系統(tǒng)和方法。更具體地,包括但不限于表 達(dá)式的語(yǔ)言元素或構(gòu)造能夠經(jīng)歷從第一源語(yǔ)言到第二目標(biāo)語(yǔ)言的句法翻譯。該翻譯 或展開(kāi)可以是句法性的,由映像或映射而非完全語(yǔ)義來(lái)指導(dǎo)。例如,表達(dá)式或子表 達(dá)式的至少一部分可以被一對(duì)一地翻譯,以使得在源語(yǔ)言表達(dá)式中所表達(dá)的內(nèi)容被 逐字翻譯至目標(biāo)語(yǔ)言。這類翻譯允許由目標(biāo)語(yǔ)言而非源語(yǔ)言來(lái)定義語(yǔ)義,尤其是還 可以生成可判定的翻譯。此外還提供了在句法翻譯中使用的用于生成映像的系統(tǒng)和方法。該映像可以 基于源語(yǔ)言和目標(biāo)語(yǔ)言的匹配程序句法以及上下文或?qū)崿F(xiàn)指定的信息而被填充。映 像可由翻譯系統(tǒng)作者或廠商生成。額外地或者作為替代,非固有映像可由其他方、 插件提供,并且能夠像固有映像那樣用于促進(jìn)從一種語(yǔ)言到另一種語(yǔ)言的翻譯或展 開(kāi)。為實(shí)現(xiàn)上述及相關(guān)成果,結(jié)合下列說(shuō)明和附圖,在此描述所要求保護(hù)的主題 的某些示例性的方面。這些方面指可以實(shí)踐示本主題的各種方法,這些方法均被規(guī) 定為是在所要求保護(hù)主題的范圍之內(nèi)。結(jié)合附圖一起考慮,從下面的詳細(xì)描述可以 明顯看出本發(fā)明的其他優(yōu)點(diǎn)和新穎特征。
圖1是程序代碼翻譯系統(tǒng)的框圖。圖2a示出了語(yǔ)言翻譯或展開(kāi)的示例性圖示。圖2b示出了語(yǔ)言翻譯或展開(kāi)的示例性圖示。圖3是映像產(chǎn)生系統(tǒng)的框圖。圖4是獲取非固有映像的語(yǔ)言翻譯系統(tǒng)的框圖。圖5是標(biāo)識(shí)映像以供利用的語(yǔ)言翻譯系統(tǒng)的框圖。圖6是便于與翻譯或展開(kāi)系統(tǒng)交互的接口系統(tǒng)的框圖。圖7是語(yǔ)言翻譯方法論的流程圖。圖8是表達(dá)式翻譯方法的流程圖。圖9是翻譯映像方法的流程圖。圖IO是語(yǔ)言注冊(cè)方法論的流程圖。圖11是翻譯或展開(kāi)方法論的流程圖。圖12是示出了合適的操作環(huán)境的示意性框圖。 圖13是示出了示例計(jì)算環(huán)境的示意性框圖。
具體實(shí)施方式
現(xiàn)在參考附圖描述本權(quán)利要求主題的各個(gè)方面,其中始終用相同的參考數(shù)字 來(lái)指示相同的或相應(yīng)的元素。然而應(yīng)該了解,附圖以及與其相關(guān)的詳細(xì)描述并不旨 在把所要求保護(hù)的主題限制為公開(kāi)的特定形式。相反,其意圖是覆蓋落在所要求保 護(hù)的主題的精神和范圍內(nèi)的所有修改、等效和替換的方案。在此所用的術(shù)語(yǔ)"組件"、"系統(tǒng)"等等意指與計(jì)算機(jī)相關(guān)的實(shí)體,可以是硬件、 硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是但不限于是,在處理 器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行(程序)、執(zhí)行的線程、程序和/或計(jì)算 機(jī)。作為例示,運(yùn)行在計(jì)算機(jī)上的應(yīng)用程序和計(jì)算機(jī)本身都可以是計(jì)算機(jī)組件。一 個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行的線程中,并且組件可以位于一個(gè)計(jì)算機(jī) 內(nèi)和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。在此使用詞語(yǔ)"示例性的"意指用作例子、實(shí)例或例示。在此被描述為"示例 性的"的任何方面或設(shè)計(jì)并不一定被解釋為比其他方面或設(shè)計(jì)優(yōu)先或有利。此外,使用產(chǎn)生軟件、固件、硬件或其任何組合的標(biāo)準(zhǔn)編程和/或工程技術(shù), 所公布的主題可以被實(shí)現(xiàn)為控制基于計(jì)算機(jī)或處理器的設(shè)備實(shí)現(xiàn)在此被所詳述的 方面的系統(tǒng)、方法、裝置或產(chǎn)品。此處所用的術(shù)語(yǔ)"產(chǎn)品"(或作為替換,"計(jì)算 機(jī)程序產(chǎn)品")規(guī)定為包含可以從任何的計(jì)算機(jī)可讀設(shè)備、載波或介質(zhì)訪問(wèn)的計(jì)算 機(jī)程序。例如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于磁存儲(chǔ)設(shè)備(例如,硬盤、軟磁、磁帶等)、光盤(例如,光盤(CD)、數(shù)字通用盤(DVD)等)、智能卡和閃速存儲(chǔ)器設(shè)備(例如,卡、棒)。另外應(yīng)該明白,載波可以被用于攜帶計(jì)算機(jī)可讀電 子數(shù)據(jù),例如那些被用于傳送和接收電子郵件方面或被用于訪問(wèn)網(wǎng)絡(luò)如因特網(wǎng)或局域網(wǎng)(LAN)的數(shù)據(jù)。當(dāng)然,本領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到,在不背離所要求保 護(hù)的主題的范圍或精神的前提下可以對(duì)這一配置進(jìn)行許多修改。最先轉(zhuǎn)向圖l,描繪了程序代碼翻譯系統(tǒng)100。系統(tǒng)100包括語(yǔ)法分析程序組件 110、翻譯組件120和映像130。語(yǔ)法分析程序組件110接收程序性代碼并將其語(yǔ)法分 析成表示語(yǔ)言內(nèi)諸如符號(hào)、運(yùn)算符(例如,+、 -、 *、 =、 ==、 &、 %等)、類型之 類的基元素的特征記號(hào)(token)和語(yǔ)法分析樹(shù)。這些特征記號(hào)被獨(dú)立地或作為語(yǔ) 法分析樹(shù)集合傳遞至翻譯組件120。翻譯組件120接收特征記號(hào)或特征記號(hào)的集合并將其從第一源程序語(yǔ)言展開(kāi)或翻譯成第二目標(biāo)語(yǔ)言的對(duì)應(yīng)元素。例如,第一語(yǔ)言中 的等號(hào)"="可以被映射至第二語(yǔ)言中的等號(hào)。為了便于這一翻譯或展開(kāi),翻譯組件120可以與映像130交互并由其指導(dǎo)。映像130提供第一語(yǔ)言的句法、操作、名稱與 第二語(yǔ)言的句法、操作、名稱之間的映像或映射。映像130能包括一個(gè)記錄,它不 僅可以包括為編程語(yǔ)言所共有的基元素,還包括諸如字段、變量和/或表名的特定 上下文或?qū)崿F(xiàn)的信息。因此, 一旦語(yǔ)法分析程序110接收到具體的特征記號(hào)或語(yǔ)言 元素,翻譯組件120就在映像130中標(biāo)識(shí)這一元素并在第二語(yǔ)言中檢索相應(yīng)的一個(gè)或多個(gè)元素。從輸入或源代碼到目標(biāo)代碼的變換或翻譯可以是純句法的。然而,映像 130可以具體表達(dá)至少部分語(yǔ)言語(yǔ)義。圖2a示出了一個(gè)簡(jiǎn)單的示例性翻譯200a,以便清楚地理解由圖1的系統(tǒng)100所 提供的翻譯。應(yīng)該注意到,雖然被表達(dá)為從C存到SQL的翻譯,但是本發(fā)明決不限 定于此??梢允褂萌魏纹渌恼Z(yǔ)言。該示例也可以容易地利用不同的語(yǔ)言(例如, 從XPath/Xquery到SQL等)。作為示例而非限制,例如面向?qū)ο笳Z(yǔ)言的表達(dá)式或代 碼可由語(yǔ)法分析程序110接收并最終由翻譯組件120翻譯或展開(kāi)為SQL代碼。在此, 表達(dá)式是對(duì)應(yīng)于cs.where (|c| c.name = "Jones")的查詢表達(dá)式。該示例性表達(dá)式包括 典型的面向?qū)ο蟮狞c(diǎn)操作符,以及X過(guò)濾器表達(dá)式或子表達(dá)式。該語(yǔ)句聲明找出其 中顧客名為Jones (瓊斯)的所有顧客(cs)。這里存在兩個(gè)主要展開(kāi)。首先,主表達(dá) 式"cs.where"可以基于句法映像130被翻譯或展開(kāi)為"Select * From Customers Where"。面向?qū)ο蟮恼Z(yǔ)句對(duì)應(yīng)于從與一個(gè)或多個(gè)顧客的表相對(duì)應(yīng)的"cs"中做出選 擇。接下來(lái),在此為X表達(dá)式的子表達(dá)式能夠被翻譯并用于填充該展開(kāi)的主表達(dá)式。 在此情況下,過(guò)濾器或選擇表達(dá)式陳述從顧客(cs)中選擇名為Jones的顧客(c)。這可 被翻譯為簡(jiǎn)單的name-"Jones"(名="瓊斯")并作為一 自變量插入Select (選擇) 語(yǔ)句的Where (哪里)參數(shù)。應(yīng)該注意到,存在從源語(yǔ)言的name = "Jones"到目標(biāo)或 目的語(yǔ)言的name = "Jones"的直接翻譯,而無(wú)需考慮其語(yǔ)義內(nèi)涵。圖2b示出了一個(gè)示例性的翻譯或展開(kāi)200b,以便進(jìn)一步地清楚理解圖l中系統(tǒng) IOO的操作。展開(kāi)200b與翻譯200a的相似,不同之處在于所產(chǎn)生的不同結(jié)果。同樣 地,存在表達(dá)式"cs.where(|c| c.name = "Jones")"。主表達(dá)式隨后被展開(kāi)為SQL型 表達(dá)式,即"Select * From Customers Where"。這指示從滿足部分條件的顧客表 中選擇。條件在子表達(dá)式中指定,并且碰巧也指定為X表達(dá)式。在此示例中,條件 name = "Jones"被翻譯或展開(kāi)為某些其他的條件,在這些條件中對(duì)name實(shí)現(xiàn)某些函 數(shù)并且對(duì)字符串Jones執(zhí)行某些轉(zhuǎn)換,例如將Unicode字符串轉(zhuǎn)換成ASCII字符串等。換句話說(shuō),相同的條件表達(dá)式并不作為條件自變量被放入Where子句或參數(shù)。相反 地,執(zhí)行某些語(yǔ)義轉(zhuǎn)換或翻譯以確保展開(kāi)的表達(dá)式或子表達(dá)式在此情況下與在源語(yǔ) 言中指定的內(nèi)涵相同。在此,源語(yǔ)言的語(yǔ)義被維持。雖然表達(dá)式200b表示了用于將源語(yǔ)言表達(dá)式翻譯為目標(biāo)語(yǔ)言表達(dá)式、語(yǔ)句等 的可行選項(xiàng),但是存在與其相關(guān)聯(lián)的至少一個(gè)問(wèn)題。更具體地,程序員可以利用源 語(yǔ)言編程,該程序隨后可被翻譯成目標(biāo)或目的語(yǔ)言,以使其與目的語(yǔ)言的細(xì)節(jié)隔離。 例如,用戶可以用C弁或XQuery/Xpath進(jìn)行速記編程,但是目標(biāo)語(yǔ)言則可以是用于 關(guān)系數(shù)據(jù)訪問(wèn)的SQL。程序員知道一具體的表達(dá)式在被翻譯為一具體的目標(biāo)語(yǔ)言。 因此,他們通常會(huì)查看生成了什么,并且令他們驚訝的是,這看上去根本不像他們 所期望的那樣。如展開(kāi)200b所示,轉(zhuǎn)換和數(shù)據(jù)操作的全部分類對(duì)維持源語(yǔ)言的語(yǔ)義 而言是必需的。除了令人驚訝的結(jié)果之外,轉(zhuǎn)換的表達(dá)式還會(huì)由于支持語(yǔ)義保存的 功能性而使得執(zhí)行變地緩慢且低效。此外,這一翻譯會(huì)對(duì)調(diào)試過(guò)程施加嚴(yán)重破壞, 因?yàn)樵凑Z(yǔ)言表達(dá)式中一個(gè)很小的變化都可能引起目標(biāo)語(yǔ)言中出現(xiàn)驚人的變化。此 外,程序員將無(wú)法找尋生成結(jié)果從何而來(lái),因?yàn)槟繕?biāo)語(yǔ)言內(nèi)的變化非線性地響應(yīng)源 語(yǔ)言代碼的改變并且是不可預(yù)知的。該翻譯或展開(kāi)對(duì)用戶或程序員而言實(shí)際上是一 個(gè)黑盒子。表達(dá)式200a不會(huì)遇到相同的問(wèn)題。表達(dá)式200a不是完整的語(yǔ)義維持翻譯。在 此,表達(dá)式name = "Jones"的至少一部分被一對(duì)一地翻譯,或者從另一觀點(diǎn)看根本 就沒(méi)被翻譯而是作為源中指定被復(fù)制。這為程序員提供了可預(yù)知性,所以他們知道 他們指定的這一name = "Jones"條件何時(shí)將被翻譯為目的語(yǔ)言的name = "Jones"。沒(méi) 有為保存源語(yǔ)言的語(yǔ)義而產(chǎn)生意外的轉(zhuǎn)換。實(shí)際上,是從目標(biāo)語(yǔ)言而非源語(yǔ)言來(lái)理 解語(yǔ)義的。這就尤其提供了來(lái)自目標(biāo)語(yǔ)言的語(yǔ)義可擴(kuò)展性。于是,翻譯就成為一種 不強(qiáng)制執(zhí)行任何源語(yǔ)言的語(yǔ)義規(guī)則的宏展開(kāi)。作為示例,如果用源語(yǔ)言寫(xiě)表達(dá)式a * b + c,則會(huì)應(yīng)用來(lái)自目的語(yǔ)言的優(yōu)先和關(guān)聯(lián)規(guī)則。于是,如果源語(yǔ)言的語(yǔ)義指定了 先做乘法再做加法而目的語(yǔ)言的語(yǔ)義則指定先做加法,則不會(huì)對(duì)諸如(a * b)十c的表 達(dá)式做出任何轉(zhuǎn)換或更改以保存源語(yǔ)言的語(yǔ)義。轉(zhuǎn)向圖3,描繪了映像產(chǎn)生系統(tǒng)300。該系統(tǒng)包括句法匹配組件310、用戶界面 組件320和映像生成組件330。尋找映射的兩種語(yǔ)言被提供給句法匹配組件310。在 此,語(yǔ)言A和B提供為匹配組件310的輸入。匹配組件310提供一種能夠讓語(yǔ)言A和 語(yǔ)言B的句法相匹配的機(jī)制。例如,語(yǔ)言A的數(shù)字、符號(hào)和運(yùn)算符能夠與語(yǔ)言B的 相同或相應(yīng)的數(shù)字、符號(hào)和運(yùn)算符相匹配。此外,句法匹配組件可以接收諸如名稱字段、表和變量等的上下文信息。以此方式,語(yǔ)言A中諸如"CS"的名稱能夠與語(yǔ)言B中例如"customers (顧客)"表相匹配。此外,用戶界面組件320可以通信地耦合 至句法匹配組件。用戶界面組件320為用戶,或者是管理類型的用戶提供一種控制、 協(xié)調(diào)或以其他方式影響語(yǔ)言句法匹配的機(jī)制。例如,用戶可以確保適當(dāng)?shù)纳舷挛男?息被匹配和/或類似的函數(shù)或操作被適當(dāng)匹配??梢詫⑵ヅ湫畔⑻峁┙o映像生成組 件330。映像生成組件可以從匹配信息中生成映像。例如,映像可以是包括匹配句 法的計(jì)算機(jī)可讀映像或映射文件。應(yīng)該理解可以提供任意形式的映射,盡管如此, 在一個(gè)實(shí)例中的映射可以是XML文件。圖4是獲得非固有或插件映射的語(yǔ)言翻譯系統(tǒng)400。諸如圖l系統(tǒng)的翻譯系統(tǒng)可 以包括有關(guān)多種語(yǔ)言的一個(gè)或多個(gè)映射。然而,該系統(tǒng)由于其能夠獲取有關(guān)新語(yǔ)言、 擴(kuò)展、其他語(yǔ)言和/或不同上下文的替換版本的新的非固有映射,因而是可擴(kuò)展的。 系統(tǒng)400包括接收程序組件410、注冊(cè)組件420和存儲(chǔ)430。接收程序組件410接收、 檢索、或以其他方式獲取計(jì)算機(jī)可讀映像。該映像可以包括第一語(yǔ)言句法到第二語(yǔ) 言句法的映射,諸如從Xquery到SQL的映射。該映像一旦被接收,就將其提供給注 冊(cè)組件420。注冊(cè)組件420接收該映像并能夠初始將該映像存儲(chǔ)至計(jì)算機(jī)可讀存儲(chǔ) 430。注冊(cè)組件420還可以在注冊(cè)表或注冊(cè)表440中生成并存儲(chǔ)一條目,用來(lái)指示例 如通過(guò)源和目標(biāo)語(yǔ)言的映像以及它在存儲(chǔ)430中的位置。 一旦注冊(cè),該映像就可由 諸如以上有關(guān)圖1描述的系統(tǒng)1100之類的翻譯或展開(kāi)系統(tǒng)所使用。轉(zhuǎn)向圖5,提供了定位映像以供使用的語(yǔ)言翻譯系統(tǒng)500。系統(tǒng)500包括語(yǔ)言標(biāo) 識(shí)組件510、映像檢索組件520和存儲(chǔ)430。語(yǔ)言標(biāo)識(shí)組件510分析在此出現(xiàn)的多種語(yǔ) 言以按問(wèn)題標(biāo)識(shí)所述語(yǔ)言。語(yǔ)言標(biāo)識(shí)組件510將該語(yǔ)言的標(biāo)識(shí)提供給映像檢索組件 520。映像檢索組件隨后可以標(biāo)識(shí)給定該語(yǔ)言標(biāo)識(shí)的合適的映射以及可任選的某些 上下文信息。例如,映像檢索組件可以與注冊(cè)表440交互以標(biāo)識(shí)有關(guān)具體源和目標(biāo) 語(yǔ)言的映射。注冊(cè)表440還可以識(shí)別合適映射的位置或提供該合適映射的指針。隨 后可從計(jì)算機(jī)可讀存儲(chǔ)430中檢索映像,并將其提供給語(yǔ)言翻譯或展開(kāi)系統(tǒng)。圖6示出了用于與翻譯或展開(kāi)系統(tǒng)交互的接口系統(tǒng)600。系統(tǒng)600包括應(yīng)用程序 接口組件610和翻譯接口組件620。應(yīng)用程序接口組件610能夠與第一計(jì)算機(jī)語(yǔ)言應(yīng) 用程序交互。例如,應(yīng)用程序接口組件610能夠接收程序性元素,諸如表達(dá)式、語(yǔ) 句、塊等。應(yīng)用程序接口組件610能夠?qū)⑦@些程序性元素傳送至或者提供給翻譯接 口組件620。變換接口組件620能夠通信地耦合至翻譯系統(tǒng)或包括在翻譯系統(tǒng)內(nèi),因 而能夠?yàn)檫@些程序性元素提供翻譯或展開(kāi)??梢詫⒎g的程序性元素和/或諸如査詢結(jié)果的其他數(shù)據(jù)從翻譯接口組件620發(fā)送回應(yīng)用程序接口組件610。應(yīng)該理解,應(yīng) 用程序接口組件610和/或翻譯接口620可以形成用來(lái)與翻譯系統(tǒng)交互的應(yīng)用編程接 口 (API)的全部或部分。因此,接口可以發(fā)送與程序性代碼的翻譯或展開(kāi)有關(guān)的 任何和全部信息。為了便于進(jìn)一步理解公開(kāi)主題的各方面,提供了示例性的場(chǎng)景及其解決方案。 應(yīng)該注意到,提供這些場(chǎng)景和解決方案僅僅是出于提供有關(guān)在此公開(kāi)具體主題的清 楚闡述的目的,而非意欲以任何方式限制公開(kāi)主題的范圍。在此提供的系統(tǒng)和方法 可用于各種不同的情形,其后僅描述其中之一。通常期望例如通過(guò)web服務(wù)或其他類型的應(yīng)用,將關(guān)系數(shù)據(jù)作為XML提供給 數(shù)據(jù)庫(kù)用戶。換句話說(shuō),提供關(guān)系數(shù)據(jù)的XML視圖。使用關(guān)系數(shù)據(jù)的XML視圖的 主要吸引力是它為用戶提供了對(duì)其平面關(guān)系數(shù)據(jù)的分級(jí)視圖,從而使其更容易地導(dǎo) 航至這種層級(jí)。在此場(chǎng)景下,已經(jīng)發(fā)現(xiàn)存在各種重要特征來(lái)確定用戶是否利用這一 技術(shù)。首先,對(duì)用戶而言很重要的是存在一種簡(jiǎn)單檢索、更新和操縱XML數(shù)據(jù)的機(jī) 制。數(shù)據(jù)庫(kù)提供方或所有者通常會(huì)通過(guò)XML方案(XSD-XML方案定義)來(lái)建立與 用戶的聯(lián)系,并且允許用戶從XSD方案中描述的XML后端取回?cái)?shù)據(jù)。用戶更希望 在無(wú)需手動(dòng)編寫(xiě)復(fù)雜的SQL查詢的情況下被授權(quán)與數(shù)據(jù)庫(kù)快速交互。此外,為用戶提供高性能且可預(yù)知行為的高效查詢也很重要。用戶正當(dāng)?shù)仄?望轉(zhuǎn)換不會(huì)被應(yīng)用,以免有損性能。例如,用戶期望不要轉(zhuǎn)換索引的各列,因?yàn)檫@ 將大幅削弱性能。用戶也不賞識(shí)并且通常不會(huì)利用提供不確定性或非單調(diào)行為的應(yīng) 用或技術(shù),例如在其中查詢響應(yīng)于一微小變化會(huì)有完全不同表現(xiàn)的應(yīng)用或技術(shù)。此外,用戶因其數(shù)據(jù)被存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中而具有很強(qiáng)的理解力,他們應(yīng)該 能夠使用由數(shù)據(jù)庫(kù)提供的固有功能性。當(dāng)類似的功能對(duì)Xquery和SQL可用時(shí),用戶 通常期望該SQL函數(shù)被直接映射至相應(yīng)的Xquery函數(shù)。換句話說(shuō),SQL函數(shù)將在執(zhí) 行查詢時(shí)被使用。響應(yīng)前述考慮,語(yǔ)言可以被設(shè)計(jì)或翻譯,以使得數(shù)據(jù)的XML視圖可以基于映 射信息,由對(duì)數(shù)據(jù)源查詢語(yǔ)言的直譯路徑和過(guò)濾器表達(dá)式來(lái)査詢。例如, XPath/Xquery或其子集可被用于提供定位諸如XML節(jié)點(diǎn)的映像目標(biāo)并對(duì)該節(jié)點(diǎn)應(yīng) 用謂詞(的能力。在此謂詞中,在其本身和子軸上的任何相關(guān)XML節(jié)點(diǎn)都可用于 過(guò)濾表達(dá)式。表達(dá)式可以從XPath/Xquery翻譯成SQL,其中XML項(xiàng)由映射的SQL項(xiàng) (例如,表、歹ij)代替,并且子節(jié)點(diǎn)和屬性遍歷被翻譯成對(duì)各映射表間合適關(guān)系的聯(lián)結(jié)?;谠诖酥^詞中使用的位置路徑和節(jié)點(diǎn)信息,査詢能夠在對(duì)涉及合適的表/列的XML映像或映射的關(guān)系的指導(dǎo)下被翻譯成SQL。由執(zhí)行該SQL產(chǎn)生的記錄隨后 能夠被實(shí)現(xiàn)為映射的XML節(jié)點(diǎn)。位置路徑是Xquery語(yǔ)法或BNF (巴克斯-諾爾范式或者巴克斯范式)的一部分, 它具有關(guān)于該路徑和謂詞的所需信息以便于翻譯至SQL。相對(duì)位置路徑能夠由一系 列的一個(gè)或多個(gè)位置階梯組成,這些位置階梯由諸如"/"的分隔符隔開(kāi)。在相對(duì) 位置路徑內(nèi)的這些步驟從左向右組合在一起。每個(gè)階梯選擇一節(jié)點(diǎn),該節(jié)點(diǎn)是前一 階梯節(jié)點(diǎn)的子節(jié)點(diǎn)。絕對(duì)位置路徑由其后可任選地跟隨著相對(duì)位置路徑的"/"組 成。"/"本身選擇包含上下文節(jié)點(diǎn)的文檔的根節(jié)點(diǎn)。如果其后跟隨相對(duì)位置路徑, 則隨后該位置路徑就選擇一組節(jié)點(diǎn)集,該結(jié)點(diǎn)集由該相對(duì)位置路徑相對(duì)于包含上下 文節(jié)點(diǎn)的文檔的根節(jié)點(diǎn)而選擇。在BNF范式中PathExpr::= RelativePathExpr | "/,,RelativePathExpr RelativePath::= StepExpr("/" StepExpr)*位置階梯可以任一選擇命名的子節(jié)點(diǎn)、 考慮如下BNF:StepExpr ::= AxisStep | FilterExpr AxisStep ::= ForwardStep PredicateList ForwardStep ::二 AbbrevForwardStep AbbrevForwardStep ::= "@" QName FilterExpr ::= PrimaryExpr PredicateList屬性、或其本身中任何一個(gè)。例如,謂詞就該路徑過(guò)濾一組節(jié)點(diǎn)集以產(chǎn)生一組新的節(jié)點(diǎn)集。謂詞表達(dá)式基于提供作為上下文節(jié)點(diǎn)規(guī)定的節(jié)點(diǎn)路徑而被翻譯成SQL。在BNF: PredicateList::= '[' Expr '],*需要表達(dá)式作為過(guò)濾-表達(dá)式。圓括號(hào)可用于分組。考慮以下用于表達(dá)式的BNF:PrimaryExpr ::= Literal | VarRef |'(' Expr ')' | ContextltemExpr | FunctionCall Literal ::= Same literals as SQL VarRef ::= "$" QName ContextltemExpr ::='.'Expr::=Expr BinaryOperator Expr| UnaryOperator Expr | PathExprBinaryOperator '*' | 'div' | 'mod' | '+, | '-'| '=, | '>,| '<, | '>=' | '<=, | '!=, | '!>' |'!<, |'A, I '&, I T I 'NOT' I 'AND' I 'ALL' | 'ANY, | 'BETWEEN' | 'IN, | 'LIKE' | 'OR, |'SOME' I ,IS NULL'UnaryOperator::- '-' | '+, | ' ,應(yīng)該注意到運(yùn)算符的優(yōu)先和關(guān)聯(lián)與SQL的相同。以上語(yǔ)法的效果是優(yōu)先次序是(最高優(yōu)先級(jí)優(yōu)先)+ (Positive), - (Negative), ~ (Bitwise NOT) (note: Unary operator)* (Multiply), / (Division), % (Modulo)+ (Add), (+ Concatenate), - (Subtract)=,>,<,>=,<=,<>,!=,!>,!< (Comparison operators)A (Bitwise Exlusive OR), & (Bitwise AND), | (Bitwise OR)NOTANDALL, ANY, BETWEEN, IN, LIKE, OR, SOME, IS NULL當(dāng)一個(gè)表達(dá)式中有兩個(gè)相同運(yùn)算符優(yōu)先級(jí)的運(yùn)算符時(shí),則基于它們?cè)诒磉_(dá)式中的位 置從左向右求值??紤]以下呈現(xiàn)的示例。以下闡述從SQL查詢到XML數(shù)據(jù)類型CREATE TABLE XmlDT(name nvarchar(15), data xml)INSERT XmlDT VALUES ('Joe', '<Order><Item>TabletPC</Item></Order>')INSERT XmlDT VALUES ('Jim', '<Order><Item>Laptop</Item></Order>')相關(guān)的映射文件是:<Map Source="XmlDT" Target="Sample"〉<FieldMap SourceField="name" TargetField="@name7> <FieldMap SourceField="data" TargetField="Order" xe:MergeToLevel="true'7> </Map>可應(yīng)用的查詢:/Sample
','nvarchar(15)')='TabletPC,將生成以下SQL語(yǔ)句SELECT name,data FROM XmlDTWHERE data.value('(Order/Item)[l]','nvarchar(15)') = TabletPC'已經(jīng)關(guān)于一些組件之間的交互作用描述了上述系統(tǒng)。應(yīng)該明白,此類系統(tǒng)和 組件可以包括在此所指定的那些組件或子組件、所指定組件或子組件中的一些和/ 或另外的組件。例如,系統(tǒng)可以具有語(yǔ)法分析程序組件IIO、翻譯組件120、句法匹 配組件310、用戶界面組件320、映像生成組件330、接收器組件410、注冊(cè)組件420、 語(yǔ)言標(biāo)識(shí)組件510、和映像檢索組件520、或者它們的結(jié)合。另外,應(yīng)該注意, 一個(gè) 或多個(gè)組件可以被組合成提供集合功能性的單個(gè)組件,或者被分割成若干子組件。 諸組件也可以與在此未具體描述但本領(lǐng)域的技術(shù)人員已知的一個(gè)或多個(gè)其他組件 交互。此外,應(yīng)該明白以上公開(kāi)的系統(tǒng)以及以下方法的不同部分可以包括或包含基 于人工智能或知識(shí)或規(guī)則的組件、子組件、進(jìn)程、裝置、方法或機(jī)制(例如,支持 向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎、分類 器等)。此類組件和其他組件可以自動(dòng)化地執(zhí)行特定機(jī)制或進(jìn)程,由此使得系統(tǒng)和 方法的諸部分變得更加自適應(yīng)、高效及智能。例如,翻譯組件120可以利用人工智 能、機(jī)器學(xué)習(xí)或者類似的機(jī)制來(lái)促進(jìn)代碼的展開(kāi)或翻譯。額外地或者作為替代,句 法匹配組件310可以利用這些智能機(jī)制以促進(jìn)對(duì)多種語(yǔ)言句法的匹配??紤]到以上描述的示例性系統(tǒng),參考圖7-11的流程圖將可以更好地理解依照 所公開(kāi)的主題實(shí)現(xiàn)的方法。盡管出于簡(jiǎn)化解釋的目的,各方法被顯示和描述為一系 列的框,但應(yīng)該理解和明白,所要求保護(hù)的主題不受框的順序所限,因?yàn)橐恍┛蚰軌蛞耘c在此所敘述和描述所不同的順序發(fā)生和/或與其他框同時(shí)發(fā)生。而且,實(shí)現(xiàn) 以下所描述的方法并非需要全部示例的框。另外還應(yīng)該明白,下文以及本說(shuō)明書(shū)全文中所揭示的方法可以被存儲(chǔ)在產(chǎn)品 上,以便于把此類方法傳送和傳輸給計(jì)算機(jī)。所使用的術(shù)語(yǔ)"產(chǎn)品"意指包含可以 從任何計(jì)算機(jī)可讀設(shè)備、載體或介質(zhì)訪問(wèn)的計(jì)算機(jī)程序。轉(zhuǎn)向圖7,描繪了語(yǔ)言翻譯方法論700。在710處,從第一或源語(yǔ)言中獲取代碼。 作為示例而非限制,第一語(yǔ)言可以是面向?qū)ο蟮恼Z(yǔ)言或標(biāo)記査詢語(yǔ)言。在框720, 定位翻譯或句法映像。映像可以提供關(guān)于從第一源語(yǔ)言的句法到第二目標(biāo)語(yǔ)言的句 法的句法信息。映像可以被存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上或存儲(chǔ)在翻譯系統(tǒng)內(nèi)。在框 730,利用句法映像把從第一語(yǔ)言獲取的代碼展開(kāi)為第二語(yǔ)言的代碼。方法論700 例如可用于將基于XML的查詢翻譯成基于關(guān)系的查詢,或許就是SQL。該査詢可 由查詢處理器執(zhí)行并可生成關(guān)系結(jié)果。類似的方法論可用于隨后以XML傳遞回各 個(gè)結(jié)果。例如,可以利用相同的映像或者其中SQL是源而XML是目標(biāo)語(yǔ)言的另 一映像。隨后可利用該映像將結(jié)果翻譯回XML.圖8是表達(dá)式翻譯方法800的流程圖。在編號(hào)810處,接收、檢索或以其他 方式獲取源語(yǔ)言的表達(dá)式(例如,査詢表達(dá)式)。表達(dá)式能夠包括諸如自變量的子 表達(dá)式。例如,表達(dá)式可以指定數(shù)據(jù)的路徑或位置,而子表達(dá)式可以指定某些過(guò)濾 器邏輯或謂詞。在820處,該表達(dá)式被翻譯成目標(biāo)語(yǔ)言相關(guān)句法的表達(dá)式。這一翻 譯動(dòng)作能夠涉及主表達(dá)式,例如面向?qū)ο蟮幕驑?biāo)記語(yǔ)言表達(dá)式標(biāo)識(shí)要査詢的數(shù)據(jù)以 使得該表達(dá)式被翻譯成諸如SQL的目標(biāo)語(yǔ)言。作為示例,表達(dá)式"cs.where(lcl c.name ="Jones")"的"cs.where"可以被翻譯成"Select * From Customers Where"。在此 示例中,Where子句不包括任何邏輯或表達(dá)式,因?yàn)樗怯勺颖磉_(dá)式提供的。在 820處,將子表達(dá)式的句法從源語(yǔ)言翻譯成目標(biāo)語(yǔ)言,并且填充由主表達(dá)式生成的 句法或結(jié)構(gòu)。子表達(dá)式的翻譯無(wú)需保存源語(yǔ)言的語(yǔ)義。因此,子表達(dá)式或其部分能 夠被逐字翻譯,由此僅保存子表達(dá)式的句法。在之前的示例中,子表達(dá)式"lcl c.name ="Jones""能夠被簡(jiǎn)單地翻譯成"name = "Jones""并且作為自變量提供給Where 子句。圖9示出了翻譯或展開(kāi)映像方法900。在編號(hào)910處,第一語(yǔ)言的程序句法與 第二語(yǔ)言的程序句法相匹配。該動(dòng)作可以是自動(dòng)的、半自動(dòng)的或手動(dòng)的。在920 處,可以基于匹配信息生成映像。該映像可以包括對(duì)諸如操作符的對(duì)應(yīng)基本元素的 映射,并且還可以包括數(shù)據(jù)或?qū)崿F(xiàn)指定的信息,例如"cs"對(duì)應(yīng)于名為"coustomers"的表。在930處,可以將生成的映像提供給語(yǔ)言展開(kāi)/翻譯系統(tǒng)以供使用。方法900 可用于產(chǎn)生固有和非固有映射。因此,翻譯系統(tǒng)廠商可以利用方法900來(lái)產(chǎn)生可由 該系統(tǒng)包括的映像。額外地或者作為替代,第三方可以創(chuàng)建它們自己的映像,這些 映像可被添加或插入該系統(tǒng)。圖IO示出了展開(kāi)或翻譯系統(tǒng)映像注冊(cè)方法論1000。作為示例而非限制,方法 IOOO可用于支持插件或非固有映像。在1010處,接收、檢索或以其他方式獲取句 法映像。如前所述,映像可以記錄來(lái)自多種語(yǔ)言的對(duì)應(yīng)句法,尤其包括操作符和上 下文指定的信息(例如,數(shù)據(jù)方案)。在1020處,映射可以在計(jì)算機(jī)可讀存儲(chǔ)中 持有。在1030處,該映像被注冊(cè)。注冊(cè)尤其可以包括對(duì)映像位置或指向其的指針 的記錄,以及有關(guān)該映像可用于哪些語(yǔ)言的信息。映像一旦被注冊(cè),它就變得可用。 方法1000提供用于接收和操作固有以及非固有映像的手段。轉(zhuǎn)向圖11,描繪了翻譯方法論1100的流程圖。在編號(hào)1110處,標(biāo)識(shí)源語(yǔ)言和 目標(biāo)語(yǔ)言。例如,Xpath可以是源語(yǔ)言而SQL可以是目標(biāo)語(yǔ)言,或者反之亦然。 在1120處,定位映射源語(yǔ)言和目標(biāo)語(yǔ)言的句法映像。這可以通過(guò)査閱注冊(cè)表并檢 索指向合適映像的位置的指針以執(zhí)行展開(kāi)來(lái)實(shí)現(xiàn)。最后,在1130,利用該映像翻 譯一個(gè)或多個(gè)表達(dá)式或其他程序單元。該翻譯是從源句法到目標(biāo)句法的翻譯,而無(wú) 需完全實(shí)施源語(yǔ)言的語(yǔ)義。語(yǔ)義可由目標(biāo)語(yǔ)言定義。為給所公開(kāi)的主題的各方面提供上下文,圖12和13以及下列討論旨在提供 可以在其中實(shí)現(xiàn)所公開(kāi)主題的各方面的合適的計(jì)算環(huán)境的簡(jiǎn)要、概括的描述。盡管 前面己經(jīng)在運(yùn)行在一個(gè)或多個(gè)計(jì)算機(jī)上的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令的一般 上下文中描述了本發(fā)明,然而本領(lǐng)域內(nèi)的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明也可以和其他 程序模塊結(jié)合實(shí)現(xiàn)。 一般地,程序模塊包括執(zhí)行特定任務(wù)和/或?qū)崿F(xiàn)特定抽象數(shù)據(jù) 類型的例程、程序、對(duì)象、數(shù)據(jù)結(jié)構(gòu)等等。而且,本領(lǐng)域內(nèi)的技術(shù)人員將會(huì)理解, 本發(fā)明的方法可以與其他計(jì)算機(jī)系統(tǒng)配置一起實(shí)施,包括單處理器或多處理器計(jì)算 機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備(例如,個(gè) 人數(shù)字助理(PDA)、電話、手表等)、基于微處理器的或可編程的消費(fèi)性或工業(yè) 電子產(chǎn)品等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐所例示的方面,在這些分布式計(jì)算 環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。然而,若非全部也 有部分本發(fā)明的方面可以在獨(dú)立計(jì)算機(jī)上實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可 被置于本地或遠(yuǎn)程的存儲(chǔ)器設(shè)備中。參考圖12,為實(shí)現(xiàn)在此公開(kāi)的各方面的示例性環(huán)境1210包括計(jì)算機(jī)1212(例如,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、手持式計(jì)算機(jī)、可編程消費(fèi)者或工業(yè)電子產(chǎn)品等)。計(jì)算機(jī)1212包括處理器單元1214,系統(tǒng)存儲(chǔ)器1216,以及系統(tǒng)總線 1218。系統(tǒng)總線1218把包括但不限于系統(tǒng)存儲(chǔ)器1216的系統(tǒng)部件連接到處理單元 1214。處理單元1214可以是各種可用處理器中的任意一種。雙微處理器和其它多 處理器結(jié)構(gòu)也可用作處理單元1214。系統(tǒng)總線1218可以是幾種類型的總線結(jié)構(gòu)中的任意一種,包括存儲(chǔ)器總線或 存儲(chǔ)器控制器,外圍總線或外部總線,和/或利用下述可用總線結(jié)構(gòu)中的任意一種 的本地總線,包括但不限于,11位總線,工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA),微通道結(jié)構(gòu)(MCA), 擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EISA),智能化驅(qū)動(dòng)器電子接口(IDE), VESA本地總線(VLB), 外圍部件互連(PCI),通用串行總線(USB),高級(jí)圖形端口 (AGP),個(gè)人計(jì) 算機(jī)內(nèi)存卡國(guó)際聯(lián)合會(huì)總線(PCMCIA),以及小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)。系統(tǒng)存儲(chǔ)器1216包括易失性存儲(chǔ)器1220以及非易失性存儲(chǔ)器1222。基本輸 入/輸出系統(tǒng)(BIOS)包含諸如在啟動(dòng)期間在計(jì)算機(jī)1212的元件之間傳送信息的 基本例程,被存儲(chǔ)在非易失性存儲(chǔ)器1222中。作為例子而不是限制,非易失性存 儲(chǔ)器1222可以包括只讀存儲(chǔ)器(ROM),可編程ROM (PROM),電可編程ROM (EPROM),電可擦除ROM (EEPROM),或者閃存。易失性存儲(chǔ)器1220包括 用作外部高速緩存的隨機(jī)存取存儲(chǔ)器(RAM)。作為例子而不是限制,RAM可以 是很多形式,諸如同步RAM(SRAM),動(dòng)態(tài)RAM(DRAM),同步DRAM(SDRAM), 雙速SDRAM (DDR SDRAM),增強(qiáng)型SDRAM (ESDRAM),同步鏈接DRAM (SLDRAM),以及直接存儲(chǔ)器總線RAM (DRRAM)。計(jì)算機(jī)1212還包括可移動(dòng)/不可移動(dòng),易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。例 如,圖12示出了磁盤存儲(chǔ)器1224。磁盤存儲(chǔ)器1224包括但不限于諸如磁盤驅(qū)動(dòng) 器、軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、Jaz驅(qū)動(dòng)器、Zip驅(qū)動(dòng)器、LS-100驅(qū)動(dòng)器、閃存卡、 或者記憶棒之類的設(shè)備。此外,磁盤存儲(chǔ)器1224可以包括獨(dú)立的或者與其它存儲(chǔ) 介質(zhì)結(jié)合的存儲(chǔ)介質(zhì),包括但不限于諸如壓縮盤ROM驅(qū)動(dòng)器(CD-ROM)、可記 錄CD驅(qū)動(dòng)器(CD-R驅(qū)動(dòng)器)、可重寫(xiě)CD驅(qū)動(dòng)器(CD-RW驅(qū)動(dòng)器)或者數(shù)字 視頻盤ROM驅(qū)動(dòng)器(DVD-ROM)等光盤驅(qū)動(dòng)器。為了便于把磁盤存儲(chǔ)裝置1224 連接到系統(tǒng)總線1218,通常把可移動(dòng)或不可移動(dòng)的接口用作諸如接口 1226。應(yīng)該明白,圖12描述了在合適的操作環(huán)境1210中描述的基礎(chǔ)計(jì)算機(jī)資源和 用戶之間起到中介作用的軟件。這些軟件包括操作系統(tǒng)1228。存儲(chǔ)在磁盤存儲(chǔ)器 1224上的操作系統(tǒng)1228,在運(yùn)行時(shí)控制并分配計(jì)算機(jī)系統(tǒng)1212的資源。系統(tǒng)應(yīng)用程序1230通過(guò)存儲(chǔ)在系統(tǒng)內(nèi)存1216或磁盤存儲(chǔ)器1224中的程序模塊1232和程序 數(shù)據(jù)1234,利用操作系統(tǒng)1228對(duì)資源進(jìn)行管理。應(yīng)該明白,本發(fā)明可以用各種操 作系統(tǒng)或操作系統(tǒng)的組合來(lái)實(shí)施。用戶通過(guò)輸入裝置1236把命令或信息輸入到計(jì)算機(jī)1212中。輸入裝置1236 包括但不限于定點(diǎn)設(shè)備諸如鼠標(biāo)、軌跡球、指示筆、觸摸板、鍵盤、麥克風(fēng)、操縱 桿、游戲手柄、衛(wèi)星反射器、掃描儀、TV調(diào)諧卡、數(shù)碼相機(jī)、數(shù)字?jǐn)z像機(jī)、網(wǎng)頁(yè) 照相機(jī)等等。這些以及其它輸入裝置通過(guò)系統(tǒng)總線1218經(jīng)由接口端口 1238連至處 理單元1214。接口端口 1238包括,例如串行端口、并行端口、游戲端口、以及通 用串行總線(USB)。輸出裝置1240利用和輸入裝置1236相同類型的端口。因此, 例如,USB端口可以用來(lái)向計(jì)算機(jī)1212提供輸入,以及把來(lái)自計(jì)算機(jī)1212的信 息輸出到輸出裝置1240。輸出適配器1242是用來(lái)舉例說(shuō)明存在某些輸出裝置1240, 像顯示器(例如,平板、CRT、 LED、 LCD等)、揚(yáng)聲器、以及打印機(jī)等需要專 用適配器。輸出適配器1242,作為例子而不是限制,包括視頻和聲頻卡,其在輸 出裝置1240和系統(tǒng)總線1218之間提供了連接裝置。應(yīng)該注意到,其它設(shè)備和/或 設(shè)備的系統(tǒng)提供了諸如遠(yuǎn)程計(jì)算機(jī)1244這樣的輸入和輸出能力。計(jì)算機(jī)1212可以利用到諸如遠(yuǎn)程計(jì)算機(jī)1244這樣的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī) 的邏輯連接在聯(lián)網(wǎng)的環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1244可以是個(gè)人計(jì)算機(jī)、服務(wù)器、 路由器、網(wǎng)絡(luò)PC、工作站、基于設(shè)備的微處理器,對(duì)等裝置或者其它普通網(wǎng)絡(luò)節(jié) 點(diǎn)等,通常包括所描述的有關(guān)于計(jì)算機(jī)1212中的很多或者全部元件。為了簡(jiǎn)明, 只舉例說(shuō)明了遠(yuǎn)程計(jì)算機(jī)1244的存儲(chǔ)器存儲(chǔ)設(shè)備1246。遠(yuǎn)程計(jì)算機(jī)1244經(jīng)由網(wǎng) 絡(luò)接口 1248被邏輯地連接到計(jì)算機(jī)1212然后經(jīng)由通信連接1250被物理連接。網(wǎng) 絡(luò)接口 1248包括諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)這樣的通信網(wǎng)絡(luò)。LAN 技術(shù)包括光纖分布式數(shù)據(jù)接口 (FDDI)、銅線分布式數(shù)據(jù)接口、以太網(wǎng)/IEEE 802.3、 令牌環(huán)/IEEE 802.3等。WAN技術(shù)包括但不限于,點(diǎn)對(duì)點(diǎn)鏈接,像綜合業(yè)務(wù)數(shù)字網(wǎng) (ISDN)和其各種變形的線路交換網(wǎng),分組交換網(wǎng),以及數(shù)字用戶專線(DSL)。通信連接1250指的是把網(wǎng)絡(luò)接口 1248連接到總線1218的硬件/軟件。雖然為 了清楚地舉例說(shuō)明,通信連接1250顯示在計(jì)算機(jī)1212的內(nèi)部,但其也可以在計(jì)算 機(jī)1212的外部。連接到網(wǎng)絡(luò)接口 1248所需要的硬件/軟件包括(僅為了舉例說(shuō)明) 內(nèi)部和外部技術(shù),諸如調(diào)制解調(diào)器包括常規(guī)電話級(jí)別的調(diào)制解調(diào)器、電纜調(diào)制解調(diào) 器以及DSL調(diào)制解調(diào)器、ISDN適配器、和以太網(wǎng)卡或組件。圖13是本發(fā)明可以與之交互的示例性計(jì)算環(huán)境1300的示意性框圖。系統(tǒng)1300包括一個(gè)或多個(gè)客戶端1310。(諸)客戶端1310可以是硬件和/或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。系統(tǒng)1300也包括一個(gè)或多個(gè)服務(wù)器1330。因此,系統(tǒng)1300 可以對(duì)應(yīng)于兩層客戶端服務(wù)器模型或多層模型(例如,客戶端、中間層服務(wù)器、數(shù) 據(jù)服務(wù)器)以及其他模型。(諸)服務(wù)器1330可以是硬件和/或軟件(例如,線程、 進(jìn)程、計(jì)算設(shè)備)。服務(wù)器1330可以容納各線程以通過(guò)例如利用本發(fā)明執(zhí)行轉(zhuǎn)換。 在客戶端1310和服務(wù)器1330之間的一種可能的通信能夠以適合在兩個(gè)或多個(gè)計(jì)算 機(jī)進(jìn)程之間傳輸?shù)臄?shù)據(jù)分組的形式進(jìn)行。環(huán)境1300包括可以用來(lái)促進(jìn)(諸)客戶端1310和(諸)服務(wù)器1330之間通 信的通信框架1350。(諸)客戶端1310工作時(shí)被連接到一個(gè)或多個(gè)可以用來(lái)存儲(chǔ) (諸)客戶端1310的本地信息的客戶端數(shù)據(jù)存儲(chǔ)1360。同樣地,(諸)服務(wù)器1330 工作時(shí)被連接到一個(gè)或多個(gè)可以用來(lái)存儲(chǔ)(諸)服務(wù)器1330的本地信息的服務(wù)器 存儲(chǔ)1340。以上所已經(jīng)描述的內(nèi)容包括所要求保護(hù)的主題的各方面的例子。當(dāng)然,出于 描繪所要求保護(hù)的主題的目的而描述每一個(gè)可以想到的組件或方法的組合是不可 能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,所要求保護(hù)的主題的許多進(jìn)一步的 組合和排列都是可能的。因此,所要求保護(hù)的主題被規(guī)定為包括所有這些屬于所附 權(quán)利要求書(shū)的精神和范圍內(nèi)的改變、修改和變動(dòng)。此外,在詳細(xì)描述或權(quán)利要求書(shū) 中用到的術(shù)語(yǔ)"包含"、"具有"的范圍內(nèi),此類術(shù)語(yǔ)被規(guī)定為以類似于術(shù)語(yǔ)"包 括"的方式包括在內(nèi),此處的"包括"作為過(guò)渡詞在權(quán)利要求書(shū)中使用時(shí)做出解釋。
權(quán)利要求
1.一種用于計(jì)算機(jī)編程代碼的翻譯系統(tǒng),包括接收程序性代碼的語(yǔ)法分析程序組件;以及基于第一源語(yǔ)言相對(duì)于第二目標(biāo)語(yǔ)言的句法、操作和標(biāo)識(shí)符名的映像來(lái)執(zhí)行所述代碼的句法翻譯的翻譯組件。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述翻譯組件將所述句法、操作、 表達(dá)式和/或語(yǔ)句的至少一部分映射至所述第二目標(biāo)語(yǔ)言以反映所述目標(biāo)語(yǔ)言的語(yǔ) 義。
3. 如權(quán)利要求2所述的系統(tǒng),其特征在于,所述翻譯組件映射所述句法、操 作、表達(dá)式和/或語(yǔ)句的至少一部分以反映源語(yǔ)言的語(yǔ)義。
4. 如權(quán)利要求3所述的系統(tǒng),其特征在于,所述翻譯組件從所述源語(yǔ)言到所述目標(biāo)語(yǔ)言逐字映射標(biāo)識(shí)符名。
5. 如權(quán)利要求4所述的系統(tǒng),其特征在于,所述源語(yǔ)言是面向?qū)ο蟮恼Z(yǔ)言而所述目標(biāo)語(yǔ)言是數(shù)據(jù)庫(kù)查詢語(yǔ)言。
6. 如權(quán)利要求4所述的系統(tǒng),其特征在于,所述源語(yǔ)言是XML查詢或變換 語(yǔ)言而所述目標(biāo)語(yǔ)言是數(shù)據(jù)庫(kù)查詢語(yǔ)言。
7. 如權(quán)利要求l所述的系統(tǒng),其特征在于,還包括接收來(lái)自所述系統(tǒng)外部的 映像的接收器組件以及將所述映像存儲(chǔ)至計(jì)算機(jī)可讀介質(zhì)的注冊(cè)組件。
8. 如權(quán)利要求l所述的系統(tǒng),其特征在于,還包括標(biāo)識(shí)源語(yǔ)言和目標(biāo)語(yǔ)言的 語(yǔ)言標(biāo)識(shí)組件以及定位所述映像以便于從所述源語(yǔ)言至所述目標(biāo)語(yǔ)言的翻譯的映 像檢索組件。
9. 如權(quán)利要求l所述的系統(tǒng),其特征在于,還包括在所述源語(yǔ)言和所述目標(biāo)語(yǔ)言的程序性元素之間標(biāo)識(shí)所述最相關(guān)句法、操作 和標(biāo)識(shí)符名的句法匹配組件;以及生成將所述源語(yǔ)言的所述句法、操作和標(biāo)識(shí)符名與所述目標(biāo)語(yǔ)言的相關(guān)聯(lián)的 所述映像的生成組件。
10. —種計(jì)算機(jī)實(shí)現(xiàn)的程序性展開(kāi)方法,包括 獲取包括第一程序語(yǔ)言的至少一個(gè)子表達(dá)式的表達(dá)式; 將所述表達(dá)式翻譯成第二程序語(yǔ)言的對(duì)應(yīng)句法;以及將所述子表達(dá)式邏輯從所述第一程序語(yǔ)言逐字翻譯至所述第二程序語(yǔ)言而不 考慮所述第一語(yǔ)言的語(yǔ)義。
11. 如權(quán)利要求IO所述的方法,其特征在于,還包括標(biāo)識(shí)所述第一語(yǔ)言和第 二語(yǔ)言并且定位對(duì)應(yīng)的句法映像。
12. 如權(quán)利要求ll所述的方法,其特征在于,還包括利用所述映像在翻譯期 間標(biāo)識(shí)對(duì)應(yīng)的句法。
13. 如權(quán)利要求10所述的方法,其特征在于,所述第一程序語(yǔ)言表達(dá)式是査 詢而所述第二程序語(yǔ)言是數(shù)據(jù)源查詢語(yǔ)言。
14. 如權(quán)利要求13所述的方法,其特征在于,所述第一程序語(yǔ)言是面向?qū)ο蟮摹?br>
15. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述第一程序語(yǔ)言是XML查 詢或變換語(yǔ)言而所述第二語(yǔ)言是結(jié)構(gòu)化的査詢語(yǔ)言。
16. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述第一編程語(yǔ)言是 XPath/XQuery而所述第二編程語(yǔ)言是SQL,所述表達(dá)式是路徑而所述子表達(dá)式是 被直接翻譯成Select語(yǔ)句的Where子句的謂詞或過(guò)濾器表達(dá)式。
17. —種語(yǔ)法翻譯方法,包括 獲取第一程序語(yǔ)言的句法; 獲取第二程序語(yǔ)言的句法;以及 生成對(duì)應(yīng)句法的計(jì)算機(jī)可讀映像。
18. 如權(quán)利要求17所述的方法,其特征在于,還包括獲取上下文信息并利用 這些信息來(lái)生成所述映像。
19. 如權(quán)利要求17所述的方法,其特征在于,還包括將所述映像提供給系統(tǒng), 該系統(tǒng)將程序性表達(dá)式和子表達(dá)式從所述第一語(yǔ)言的所述句法翻譯成所述第二語(yǔ) 言的所述句法,而所述子表達(dá)式被沒(méi)有轉(zhuǎn)換地一對(duì)一地映射。
20. —種其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令用以執(zhí)行如權(quán)利要求17所述方法的計(jì) 算機(jī)可讀介質(zhì)。
全文摘要
公開(kāi)的主題涉及計(jì)算機(jī)編程語(yǔ)言及其翻譯或轉(zhuǎn)換。并非是從第一源語(yǔ)言(710)到第二目標(biāo)語(yǔ)言的復(fù)雜的保存語(yǔ)義的翻譯或轉(zhuǎn)換,該轉(zhuǎn)換可以是句法之一(730)。例如,該轉(zhuǎn)換可通過(guò)利用定義了第一語(yǔ)言和第二語(yǔ)義的句法之間的關(guān)系的映像來(lái)完成。第一語(yǔ)言的至少一部分語(yǔ)義可由第二目標(biāo)語(yǔ)言來(lái)定義。于是,第一語(yǔ)言可以是開(kāi)放式的和/或是基于第二語(yǔ)言語(yǔ)義可擴(kuò)展的。
文檔編號(hào)G06F9/44GK101253476SQ200680028547
公開(kāi)日2008年8月27日 申請(qǐng)日期2006年7月20日 優(yōu)先權(quán)日2005年8月10日
發(fā)明者A·Y·阿哈羅尼, H·J·M·梅杰, H·阿莫德, T·F·弗雷格 申請(qǐng)人:微軟公司