專利名稱:模塊化有限狀態(tài)變換機的變換的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般針對諸如有限狀態(tài)變換機等有限狀態(tài)自動機,尤其涉及其變換。
扭且 冃豕
作為一般背景,也被稱為有限狀態(tài)自動機(FSA)的有限狀態(tài)機(FSM) 是由狀態(tài)、轉(zhuǎn)移和動作組成的系統(tǒng)的行為的模型。FSM或FSA可使用狀態(tài)圖、 狀態(tài)轉(zhuǎn)移圖、狀態(tài)表、標(biāo)記有向圖、樹等按照各種概念方式表示,它們保存構(gòu) 成該機器即自動機的狀態(tài)、轉(zhuǎn)移和動作的關(guān)系。存在不同種類的FSM或FSA 及其等效方式,以及其中某些的各種已知轉(zhuǎn)換。
目前,存在某些圖變換機和樹變換機,它們實現(xiàn)例如對某些類型的有向圖 數(shù)據(jù)結(jié)構(gòu)變換由FST建模的一組系統(tǒng),以形成新的一個或一組FST,例如新的 有向圖數(shù)據(jù)結(jié)構(gòu)的某些方面,然而,這樣的系統(tǒng)由于各種原因而受限。例如, 可擴展樣式表語言變換(XSLT)是用于XML文檔變換的基于XML的語言。 當(dāng)用于變換其他XML文檔時,該文檔不被改變;相反,基于現(xiàn)有的XML文 檔的內(nèi)容創(chuàng)建新文檔。新文檔可由處理器以標(biāo)準(zhǔn)XML句法或按照諸如HTML 或純文本等另一格式串行化(輸出)。XSLT通常用于在不同XML模式之間 轉(zhuǎn)換數(shù)據(jù),或者將XML數(shù)據(jù)轉(zhuǎn)換成網(wǎng)頁或PDF文檔。
實質(zhì)上,XSLT允許創(chuàng)建描述其他XML文檔的變換的XML文檔,其又 可被轉(zhuǎn)換成不同的格式。然而,XSLT無法考慮到可用FST表示的動作語義。 在這一方面,動作可能是"當(dāng)處于預(yù)定義狀態(tài)時, 一旦識別某一信息,例如名 字,即執(zhí)行某一動作"。然而,就可為FST定義這樣的任意動作而言,XSLT 無法處理作為其變換能力一部分的對這樣的任意動作的調(diào)用。此外,XSLT無 法在機器上執(zhí)行補、交和并運算的全部。
而且,諸如XSLT等現(xiàn)有變換也無法匹配和構(gòu)成具有諸如有序和無序嵌套 (例如,被表示為樹結(jié)構(gòu))的有序和無序分層信息兩者的FSM。盡管,在某些環(huán)境中,存在當(dāng)變換樹時能夠處理僅保存有序信息的某些系統(tǒng),且存在當(dāng)變換 時能夠處理僅保存無序信息的某些系統(tǒng),但是XSLT或者任何已知的系統(tǒng)都不 包括能跨有向圖或樹結(jié)構(gòu)保存有序和無序嵌套兩者的變換能力?,F(xiàn)有技術(shù)的有 限狀態(tài)變換機的變換中的這些和其他缺陷在以下更詳細(xì)地闡述的本發(fā)明的各 種示例性非限制性實施例的描述后將變得顯而易見。 概述
考慮現(xiàn)有技術(shù)的上述缺陷,本發(fā)明提供用于對FST執(zhí)行高效樹變換,例
如交、并、補等的一般框架,該框架跨一組不同類型的表示為在其表示中支持
動作信息的FST跨變換運算保存動作語義。用于對FST執(zhí)行高效樹變換的框 架也能夠在執(zhí)行樹變換的同時保存有序和無序的嵌套信息,且能夠支持非確定 性數(shù)據(jù)結(jié)構(gòu)到確定性數(shù)據(jù)結(jié)構(gòu)的變換。
在一個實施例中,本發(fā)明提供一種用于在計算機系統(tǒng)中將指定樹結(jié)構(gòu)的數(shù) 據(jù)結(jié)構(gòu)變換成模塊化有限狀態(tài)變換機(MFST)的方法。該方法包括接收指定 樹結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),樹結(jié)構(gòu)表示包括用于定義有序和無序信息的語義以及由該 數(shù)據(jù)結(jié)構(gòu)表示的任何類型的有限狀態(tài)機(FSM)模型的語義的有限狀態(tài)變換機 (FST),該方法將數(shù)據(jù)結(jié)構(gòu)變換成MFST同時在MFST中保存數(shù)據(jù)結(jié)構(gòu)的有 序和無序信息。變換包括對數(shù)據(jù)結(jié)構(gòu)執(zhí)行任何交、并和補運算,以及可歸約成 任何交、并和補運算的任何運算。在本發(fā)明的另一方面中,可根據(jù)結(jié)果FSM 判定得到的FSM是否接受非空輸入。
此處提供了簡化概述以幫助對以下更詳細(xì)的描述和附圖中的示例性、非限 定性實施例的各方面的基本或大體的理解。然而,本概述并不旨在作為詳盡的 或窮盡的概觀。本概述的唯一目的是以簡化的形式來介紹與本發(fā)明的各種示例 性、非限定性的實施例相關(guān)的一些高層概念,作為以下更為詳細(xì)的描述的序言。
附圖簡述
將參考附圖進一步描述本發(fā)明的用于變換模塊化有限狀態(tài)變換機的樹語 法的技術(shù)及其相關(guān)聯(lián)的過程,附圖中
圖1A示出了顯示采用由本發(fā)明提供的一般變換框架變換FST以保存動作 語義的示例性過程的示例性、非限定性流程圖1B示出了顯示采用由本發(fā)明提供的一般變換框架變換FST以保存動作語義的示例性過程的示例性、非限定性框圖1C示出了顯示用于根據(jù)本發(fā)明變換FST的示例性框架和變換引擎的示
例性、非限定性框圖2A示出了結(jié)合本發(fā)明的變換引擎提供的示例性接口 ;
圖2B和2C分別示出了根據(jù)本發(fā)明的實施例提供的PushEnvironment (推
入環(huán)境)和PopEnvironment (彈出環(huán)境)方法的示例性操作。
圖2D示出了結(jié)合本發(fā)明的變換引擎提供的另一示例性接口;
圖2E列出了如在由本發(fā)明提供的變換框架中實現(xiàn)的示例性、非限定性e
閉包算法;
圖2F示出了如由本發(fā)明提供的變換框架中實現(xiàn)的容納動作的子集構(gòu)造技 術(shù)的修改;
圖3A示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的動作正則表達式 (REGEX)范例,即ar范例的示例性轉(zhuǎn)換;
圖3B示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的綁定嵌套范例,即;c: [T]范例的示例性轉(zhuǎn)換;
圖3C示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的綁定嵌套重復(fù)范例, 即1:[7]*|+|7范例的示例性轉(zhuǎn)換;
圖3D示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的x : (7)范例的示例性
轉(zhuǎn)換;
圖3E示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的;c : r^e/范例,即使
用調(diào)用的擴充的示例性轉(zhuǎn)換;
圖3F示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的x : r/ e,l+|7范例,即 使用調(diào)用的擴充的示例性轉(zhuǎn)換;
圖4A和4B分別在概念上示出有序(或列表)模式和無序(或集合)模 式,結(jié)合這些模式本發(fā)明的QFX用于跨FST的變換保存有序和無序嵌套信息 兩者;
圖5A示出了顯示采用由本發(fā)明提供的一般變換框架變換FST以保存有序
和/或無序信息的示例性過程的示例性、非限定性流程圖5B示出了顯示采用由本發(fā)明提供的一般變換框架變換FST以保存有序示例性、非限定性框圖5C到5L示出了根據(jù)本發(fā)明在存在有序或標(biāo)記信息的情況下對狀態(tài)機 的變換的示例性、非限定性的各方面;
圖6A示出了根據(jù)本發(fā)明的QFX的示例性有限狀態(tài)變換機;
圖6B到6C分別示出了表示示例性有序嵌套和無序嵌套的樹數(shù)據(jù)結(jié)構(gòu), 結(jié)合這些嵌套本發(fā)明的QFX用于保存有序和無序嵌套信息兩者;
圖7A示出了根據(jù)本發(fā)明將FSM示例性建模成狀態(tài)轉(zhuǎn)移表作為示例性狀 態(tài)機數(shù)據(jù)結(jié)構(gòu);
圖7B示出了根據(jù)本發(fā)明將FSM示例性建模成狀態(tài)表作為示例性狀態(tài)機 數(shù)據(jù)結(jié)構(gòu);
圖8A示出了將FSM示例性建模成狀態(tài)轉(zhuǎn)移圖8B示出了根據(jù)本發(fā)明將Moore模型示例表示成示例性類型的狀態(tài)機數(shù) 據(jù)結(jié)構(gòu)的變換機;
圖8C示出了根據(jù)本發(fā)明將Mealy模型示例表示成示例性類型的狀態(tài)機數(shù) 據(jù)結(jié)構(gòu)的變換機;
圖9是表示其中可實現(xiàn)本發(fā)明的示例性、非限定性網(wǎng)絡(luò)化環(huán)境的框圖; 圖IO是表示其中可實現(xiàn)本發(fā)明的示例性、非限定性計算系統(tǒng)或操作環(huán)境 的框圖。
詳細(xì)描述
如背景中所述,用于變換例如往往在計算存儲器中表示的標(biāo)記有向圖等 FST和樹數(shù)據(jù)結(jié)構(gòu)的當(dāng)前框架,對于在跨所有類型的FST變換時保存某些類型 的信息而言不夠通用。例如,當(dāng)前框架無法跨許多類型的FST保存某些FST 的動作語義或由FST表示的有序和無序嵌套信息兩者。
從而,本發(fā)明提供此處被稱為Q框架(即QFX)的一般框架,用于執(zhí)行 實現(xiàn)對在其表示中支持動作信息的FST保存動作語義的高效樹變換。用于執(zhí)行 本發(fā)明的高效樹變換的Q框架也能夠在執(zhí)行其高效樹變換的同時保存有序和 無序嵌套信息。如根據(jù)以下描述將理解地,QFX也允許各種其他新穎的方面,
涉及所定義樹語法和相應(yīng)轉(zhuǎn)換的變換能力、變換機圖、變換引擎和變換引擎執(zhí) 行的操作、轉(zhuǎn)換范例以及包括變量重命名的確定化(determinization),如將在以下更詳細(xì)描述。在本發(fā)明的一個實施例中,本發(fā)明對樹表示或樹表示的集合 啟用至少交、并、補和空測試變換。
作為進一步的介紹,模塊化有限狀態(tài)變換機(MFST)是實現(xiàn)變換的狀態(tài)
機。具體地,MFST是擴充了被稱為"動作"的程序片段的MFA。常見的動作 包括根據(jù)存儲在環(huán)境中的其他對象來構(gòu)造對象、綁定環(huán)境內(nèi)的變量以及在模式 匹配期間執(zhí)行謂詞。
就此方面,在高層,本發(fā)明的Q框架(QFX)允許程序員定義具有動作 的正則樹語法并將這些語法轉(zhuǎn)換成MFST。 QFX支持使用任何域?qū)S谜Z言 (DSL)來定義動作。此外,QFX提供對變量綁定動作的特殊支持,產(chǎn)生被稱 為屬性化樹語法的一種樹語法。本發(fā)明的以下示例性、非限定性實現(xiàn)描述QFX 如何能夠編譯和執(zhí)行屬性化樹語法。
就此方面,本發(fā)明的編譯方法因多個原因而是有利的。該編譯方法經(jīng)由優(yōu) 化和其他高性能方法提供對高性能變換的支持。該編譯技術(shù)也允許對運行時組 件的簡化,使得可容易地產(chǎn)生簡單變換機。如將在以下示例性、非限定性詳細(xì) 描述,此處所述的編譯技術(shù)也提供一組清楚的語義。就此方面,本發(fā)明的編譯 方法使地程序員能夠容易地推理樹語法的語義,包括組合(composition)和側(cè) 放作用(side effect)。
一般而言,如圖1A的流程圖所示,在100本發(fā)明在計算系統(tǒng)中啟用用于 接收具有動作語義信息的各種類型的有限狀態(tài)變換機(FST)數(shù)據(jù)結(jié)構(gòu)的一般 框架,然后在105將框架的變換引擎應(yīng)用于FST。然后,在110,根據(jù)任何類 型的FST表示的預(yù)定義樹語法進行FST的分析和變換,如將在以下更詳細(xì)描 述的。結(jié)果,在115, FST被變換以生成MFST,這保存FST的動作信息等, 例如在對兩個或多個FST執(zhí)行任何交、補和并運算的同時保存有序和無序嵌套 信息,并允許將非確定性FST變換成確定性結(jié)果。
圖1B是大體對應(yīng)于示出本發(fā)明的樹語法所允許的一方面的以上過程的框 圖。變換框架125接收包括動作語義的一個或多個MFST 120,根據(jù)任何交、 并和補變換運算(和/或其他布爾運算符,帶有組合)變換MFST,并將動作語 義信息保存在輸出130中。
圖1C示出了顯示用于根據(jù)本發(fā)明變換FST的示例性框架和變換引擎的示例性、非限定性框圖。如圖所示,在計算系統(tǒng)中可在各個存儲元件140a到140n 中找到各種有限狀態(tài)機表示,在計算環(huán)境中具有用于與根據(jù)本發(fā)明提供的Q框 架150交互的處理器P。 一般而言,Q框架150經(jīng)由用于變換和生成MFST 190 的變換引擎180接收有限狀態(tài)機表示140a到140n的子集。變換參考屬性化樹 語法170對有限狀態(tài)機表示140a到140n的子集執(zhí)行分析160,以便確定如何 最佳地將有限狀態(tài)機表示140a到140n的子集變換到MFST 190。也在計算環(huán) 境中設(shè)置接口 II,用于接收和定義基于并用于預(yù)定義的樹語法170的有向圖數(shù) 據(jù)結(jié)構(gòu)。
因此,在各個非限定性實施例中,本發(fā)明允許在計算系統(tǒng)中將樹數(shù)據(jù)結(jié)構(gòu) 變換成模塊化有限狀態(tài)變換機(MFST)。表示FSM (例如FST)的樹數(shù)據(jù)結(jié) 構(gòu)包括定義關(guān)于通過變換過程保存的FSM的動作信息的動作語義。在一個實 施例中,對由樹數(shù)據(jù)結(jié)構(gòu)表示的任何類型的FSM模型,例如有向圖數(shù)據(jù)結(jié)構(gòu)、 XML文檔等,本發(fā)明將樹數(shù)據(jù)結(jié)構(gòu)變換成MFST并同時保存動作信息??蓴U 展、預(yù)定義轉(zhuǎn)換語法由無論由樹數(shù)據(jù)結(jié)構(gòu)表示的FSM模型的類型是什么都保 存動作信息、保存樹數(shù)據(jù)結(jié)構(gòu)的有序和無序嵌套信息兩者以及將非確定性數(shù)據(jù) 結(jié)構(gòu)變換成確定性MFST的變換引擎實現(xiàn)。有利地,本發(fā)明可處理FSM類型 的補、交和并作為變換過程的一部分。
在其它實施例中,本發(fā)明包括Q框架(QFX),它包括用于執(zhí)行有向圖 到模塊化有限狀態(tài)變換機(MFST)的變換的組件和軟件,包括在計算系統(tǒng)中 分析任何類型的有向圖數(shù)據(jù)結(jié)構(gòu)并基于分析將有向圖數(shù)據(jù)結(jié)構(gòu)變換成MFST 同時保存有向圖數(shù)據(jù)結(jié)構(gòu)的動作語義的能力。QFX以跨任何類型的有向圖表示 保存有向圖數(shù)據(jù)結(jié)構(gòu)的動作語義信息的方式對由有向圖數(shù)據(jù)結(jié)構(gòu)表示的有限 狀態(tài)機(FSM)執(zhí)行控制流程分析算法。
此外,QFX包括結(jié)合變換有向圖數(shù)據(jù)結(jié)構(gòu)執(zhí)行專用的綁定處理的變換引 擎。專用綁定處理包括在模式匹配期間對動作語義信息執(zhí)行綁定。而且,變換 包括內(nèi)聯(lián)如由向圖數(shù)據(jù)結(jié)構(gòu)中的一有向圖數(shù)據(jù)結(jié)構(gòu)所定義的至少一個變換機 定義的能力。而且,變換包括將有向圖數(shù)據(jù)結(jié)構(gòu)的變量綁定編譯到現(xiàn)有激活記 錄中的槽,還包括對由有向圖數(shù)據(jù)結(jié)構(gòu)表示的有限狀態(tài)機(FSM)的寄存器分 析。本發(fā)明定義的、實現(xiàn)本發(fā)明的以上效果和優(yōu)點的語法可經(jīng)由諸如C弁接口等描述包括動作語義信息的有向圖數(shù)據(jù)結(jié)構(gòu)的軟件接口實現(xiàn)。
此外,在各個實施例中,本發(fā)明實現(xiàn)采用變量綁定的詞匯分析。而且, QFX是可擴展的,提供與不同的變換供應(yīng)商的高效互操作性。另外,本發(fā)明實 現(xiàn)對編譯和執(zhí)行性能之間的折衷的控制,即實現(xiàn)可在不采用昂貴編譯的情形解 釋模式以及編譯特定模式以供重復(fù)使用。最后,運行時組件可通過提供可變粒
度的繼續(xù)點來參與QFX調(diào)度規(guī)程,從而允許使用同一機制提供單個或多個結(jié)
以下表I中簡化的樹語法句法是可結(jié)合根據(jù)本發(fā)明的編譯過程使用的示例 性、非限定性模型。
樹語法 一定義+
定義 一正則表達式名選擇
選擇 一規(guī)則('r規(guī)則)* (或)
規(guī)則 一動作 規(guī)則條款+ (動作正則表達式)
規(guī)則條款 一嵌套正則表達式動作? (正則表達式動
作)
>或'
嵌套正則表達式
(基本) (通配符)
引用
—基本符號 變量綁定 通配符
(引用)
嵌套正則表達式嵌套正則表達式 (序列) 變量綁定 ,[,嵌套正則表達式,],(綁定嵌套) 變量綁定 '('嵌套正則表達式')'(綁定組) 嵌套正則表達式('+' I I , ') (重復(fù)) 嵌套正則表達式'與'嵌套正則表達式 (與) 引用一變量綁定 正則表達式名(綁定引用)
變量綁定一變量''
表I-簡化樹語法句法
在以上語法中,可應(yīng)用的示例性運算法優(yōu)先順序是重復(fù)>綁定>序列>與 在以下描述中,;c用于表示變量;6用于表示基本符號(類型或基本類型
的值);r用于表示MFST; ot用于表示動作;而r^e/用于表示對r的引用。參考正則表達式轉(zhuǎn)換成NFA的現(xiàn)有技術(shù)并參考NFA的確定化,可例如在 Addison-Wesley出版社1986年出版的Aho等人的"Compilers: Principles, Techniques and Tools (編譯器原理、技術(shù)和工具)"或Addison-Wesley出版 社2000年出版的Hopcroft等人的"Introduction to Automata Theory, Language and Computation (自動機理論、語言和計算的介紹)"中找到這樣的轉(zhuǎn)換技術(shù) 的概觀。作為現(xiàn)有技術(shù)的改進,根據(jù)QFX,經(jīng)由本發(fā)明的技術(shù)定義的正則樹語 法可用對MFST的動作擴充。
而且,在Aho等人的文章中討論的轉(zhuǎn)換支持根據(jù)以上語法覆蓋以下范例 或、與、基本、序列、重復(fù)和引用;然而,為了根據(jù)本發(fā)明處理(1)動作、
(2)嵌套以及(3)變量綁定,對在下表II中示出的以下附加范例需要轉(zhuǎn)換 a r (動作正則表達式)
r (正則表達式動作)
x : [7] (綁定嵌套)
x : [7]*l+|7 (綁定嵌套重復(fù))
x : (7) (綁定組)
x : (7)*l+|7 (綁定組重復(fù))
x:r/ e/ (綁定引用) x:rRe—+17 (綁定引用重復(fù))
表II-由QFX處理的轉(zhuǎn)換范例的增強集
動作正則表達式和正則表達式動作范例處理具有一般動作的樹語法的編 譯。綁定引用、綁定組、綁定嵌套、綁定引用重復(fù)、綁定組重復(fù)以及綁定嵌套 重復(fù)范例處理變量綁定的編譯。綁定嵌套范例還將正則表達式擴展成嵌套正則 表達式。
盡管未在表I的簡化樹語法句法中示出,但根據(jù)本發(fā)明的非終止定義可具 有正則參數(shù)和類型參數(shù)。在一個實施例中,編譯器將正則參數(shù)作為繼承屬性處 理,并使用綁定應(yīng)用和綁定應(yīng)用重復(fù)轉(zhuǎn)換處理類型參數(shù)。
根據(jù)本發(fā)明變換成MFST可使用定義MFST的狀態(tài)機圖以示例性方式描 述。在示意圖中,轉(zhuǎn)移被如下標(biāo)記6/cc,其中6是所消費的輸入符號,而a 是所執(zhí)行的動作。e/a表示不消費輸入但執(zhí)行某種動作的轉(zhuǎn)移。這類轉(zhuǎn)移被稱為動作轉(zhuǎn)移。在執(zhí)行變換機時,在本發(fā)明的一個實施例中,實現(xiàn)最大行進策略
(maximal progress policy),它向自一狀態(tài)的動作轉(zhuǎn)移分派低于自該狀態(tài)的所
有輸入消費轉(zhuǎn)移的優(yōu)先級。在示意圖中,特殊符號T以及T分別表示輸入集合
的開始和結(jié)束。變量綁定被寫成^=表達式,并應(yīng)用于變換機的當(dāng)前環(huán)境。 對重復(fù)運算符,即,+,、 '*'、和' ',結(jié)果的集合使用列表累積,但可推廣
該機制以覆蓋將結(jié)果累積成任何集合類型,例如通過使用相應(yīng)的聯(lián)接運算符。 根據(jù)本發(fā)明的各個實施例,按以下兩種方式擴充綁定引用和綁定應(yīng)用重復(fù)
范例內(nèi)聯(lián)和調(diào)用。內(nèi)聯(lián)擴充以空間交換時間,因此在本發(fā)明的一個非限定性 的實現(xiàn)中,當(dāng)確定化MFST時內(nèi)聯(lián)擴充是優(yōu)選的。 一般,調(diào)用擴充在三種情況 中使用。第一種情況是當(dāng)編譯以便解釋時。在這種情況中,編譯器不確定化 MFST,并將所有的引用擴充為調(diào)用。第二種情況是遞歸。例如,如果T Ref 引用了起始符號,則編譯器將引用擴充為調(diào)用。第三種情況是擴展。如果TRef 引用了不透明的MFST,則編譯器將引用擴充成調(diào)用。
本發(fā)明的編譯器為稱為變換引擎(XE)的虛擬機將樹語法轉(zhuǎn)換成指令。 XE支持以下(1)變換機的定義和操作,(2)控制轉(zhuǎn)移到其它變換引擎實 例以及(3)對環(huán)境的管理和訪問。
關(guān)于第一類別,用于保存和解釋狀態(tài)機定義的技術(shù)是己知的。從而,以下 描述的是用于實現(xiàn)第二和第三指令類別的示例性、非限定性方法轉(zhuǎn)移和管理。 根據(jù)本發(fā)明,這些指令被定義為一對接口中的方法。編譯器不直接生成對這些 接口的調(diào)用;相反,編譯器生成由XE實現(xiàn)解釋的XE指令。
根據(jù)本發(fā)明提供的接口 XEControlInstructions (控制指令)在圖2A的示例 性偽代碼200中示出。XEControlInstructions接口 200令當(dāng)前XE實例作為隱式 的操作數(shù),即XEControlInstructions接口 200的"該指針"。
在QFX的示例性實施例中提供的Mark (標(biāo)記)方法在標(biāo)記棧上的輸入項 中記錄當(dāng)前位置。Yield (產(chǎn)生)方法從標(biāo)記棧彈出標(biāo)記M,并返回輸入項在 M與當(dāng)前位置之間的部分。在一個實施例中,QFX經(jīng)由遍歷供應(yīng)商接口間接 實現(xiàn)這些方法。這樣的方法有利地將項表示和遍歷與項變換分開。遍歷供應(yīng)商 因此可通過將QFX變換框架應(yīng)用于任何特定的數(shù)據(jù)表示來實現(xiàn)遍歷。
根據(jù)本發(fā)明提供的Call (調(diào)用)方法創(chuàng)建新環(huán)境E,并在E中保存continuation (延續(xù))和callingEnvironment (調(diào)用環(huán)境)(見例如圖2A的 XEControlInstructions接口 200) 。 Call方法然后返回將控制轉(zhuǎn)移給target (目 標(biāo))的continuation。 Call方法也調(diào)用Mark方法以保存當(dāng)前輸入位置。Return (返回)方法逆轉(zhuǎn)該操作,并用于使用Yield方法將所匹配的項目保存在當(dāng)前 環(huán)境(E)中E.term-Yield()。然后,Return方法在變量callingEnvironment. result (調(diào)用環(huán)境的結(jié)果)中存儲E;最后,Return方法返回continuation。當(dāng)被調(diào)用 時,continuation將當(dāng)前環(huán)境設(shè)置成callingEnvironment,并從調(diào)用狀態(tài)繼續(xù)。
NewEnvironment (新建環(huán)境)方法根據(jù)本發(fā)明創(chuàng)建新環(huán)境。此外,圖2B 和2C的示例性、非限定性偽代碼210和偽代碼220分別概述了 PushEnvironment 禾口 PopEnvironment方法的操作。
PushEnvironment方法在內(nèi)部環(huán)境棧上保存當(dāng)前環(huán)境,并創(chuàng)建例如名為 tempEnv (臨時環(huán)境)的新環(huán)境。PushEnvironment然后將tempEnv綁定到 variableName (變量名),將當(dāng)前環(huán)境設(shè)置成tempEnv,并調(diào)用Mark來記錄當(dāng) 前輸入位置。
P叩Environment方法在變量"term (項)"中記錄自前一 Mark調(diào)用以來 匹配的子項。PopEnvironment然后從環(huán)境棧中還原當(dāng)前環(huán)境。P叩Environment 不保存彈出的環(huán)境,因為對PushEnvironment的相應(yīng)調(diào)用已綁定所彈出的環(huán)境。
另外,Exec (執(zhí)行)方法根據(jù)本發(fā)明執(zhí)行動作。在QFX的示例性實現(xiàn)中, ActionRefemce (動作引用)是對應(yīng)于方法指針的單獨保存和加載的表的表索 引。
根據(jù)本發(fā)明提供的XEEnvironmentlnstructions (環(huán)境指令)接口在圖2D 的示例性偽代碼230中示出。XEEnvironmentlnstructions接口 230令環(huán)境實例 為顯式的操作數(shù),即XEEnvironmentlnstructions接口 230的"該指針"。
ChildEiw (子環(huán)境)方法創(chuàng)建其父親為該指針的"該環(huán)境"的新嵌套環(huán)境。 Bind (綁定)方法將變量綁定到值,如果綁定成功則返回真。在示例性、非限 定性實施例中,如果variableName具有當(dāng)前綁定,則Lookup (査找)方法將 值設(shè)置成該綁定并返回真。否則,它返回假。
本發(fā)明的變換引擎(XE)的操作支持向狀態(tài)轉(zhuǎn)移分派優(yōu)先級。編譯器通 過對每一狀態(tài)上可能的轉(zhuǎn)移定序而解決因模式之間的選擇引起的歧義。在一個非限定性實施例中,對正常輸入的所有轉(zhuǎn)移優(yōu)先于通配符轉(zhuǎn)移,而后者優(yōu)先于 動作轉(zhuǎn)移。而且,在這些優(yōu)先級組中,程序員可任選地向特定轉(zhuǎn)移分派優(yōu)先級。 XE實例可通過支持其中它們使用所有適用的轉(zhuǎn)移以從一狀態(tài)繼續(xù)并按優(yōu) 先級次序?qū)ρ永m(xù)部分排隊的模式來解決多個結(jié)果的生成。
圖3A示出了根據(jù)本發(fā)明定義的轉(zhuǎn)換范例的增強集的aT范例的示例性轉(zhuǎn) 換。更具體地,圖3A示出了動作正則表達式范例的轉(zhuǎn)換。該轉(zhuǎn)換是嵌套正則 表達式序列范例的轉(zhuǎn)換的應(yīng)用。正則表達式動作范例未示出,因為它是對序列 范例的直接應(yīng)用。在示意圖中,圓圈SC1、SC2和SC3表示起始狀態(tài),圓圈IC1、 IC2和IC3表示中間狀態(tài),而雙圓圈DC1、 DC2和DC3表示接受狀態(tài)。
圖3B示出了綁定嵌套范例x : [T]的示例性轉(zhuǎn)換。在圖3B中,方法 PushEnvironment和PopEnvironment被分別縮寫成PushEnv和PopEnv。起始狀 態(tài)SC4、中間狀態(tài)IS3和IS4以及接受狀態(tài)DC4示出了圖3B定義的機器的不 同狀態(tài)。在讀取[之后,機器創(chuàng)建新環(huán)境E,并將其綁定至x。機器然后推入當(dāng) 前環(huán)境C,并令E為當(dāng)前環(huán)境。機器也標(biāo)記當(dāng)前輸入位置。然后,機器執(zhí)行T, 綁定E中的變量。在T執(zhí)行期間,變量綁定在E中累積。機器然后在E.term (環(huán)境項)中存儲[T]匹配的項,并還原C作為當(dāng)前環(huán)境。
圖3C示出了綁定嵌套重復(fù)范例x : [丁]*|+| 的示例性轉(zhuǎn)換。圖3C示出了 編譯器如何轉(zhuǎn)換帶有重復(fù)的嵌套正則表達式。起始狀態(tài)SC5、中間狀態(tài)IS5、 IS6、 IS7和IS8以及接受狀態(tài)DC5示出了圖3C定義的機器的不同狀態(tài)??梢?, 由狀態(tài)IS5、 IS6、 IS7和IS8狀態(tài)定義的變換機的內(nèi)在部分與圖3B中的機器相 同。在該機器周圍的是容器狀態(tài)機,包括起始狀態(tài)SC5和接受狀態(tài)DC5。容 器機器的目標(biāo)在于累積環(huán)境作為綁定至變量x的列表。
就此方面,變換機創(chuàng)建空列表并將其綁定至x。接著,變換機將執(zhí)行a[T] 的結(jié)果追加到x。執(zhí)行和追加步驟通過標(biāo)記為"對'*'和'?'使用該弧"的正向e 轉(zhuǎn)移而可任選地呈現(xiàn)。執(zhí)行和追加步驟通過遍歷標(biāo)記為"對'*'和'+'使用該弧" 的反向e轉(zhuǎn)移而可任選地重復(fù)。
圖3D示出了x:(T)范例的示例性轉(zhuǎn)換。起始狀態(tài)SC6、中間狀態(tài)IS9和 IS10以及接受狀態(tài)DC6示出了圖3D定義的機器的不同狀態(tài)。圖3D示出了與 圖3B的綁定嵌套范例的變換機類似的變換機,除了圖3D中進出T的轉(zhuǎn)移不消費輸入符號。圖3E示出了x:TRef范例的示例性轉(zhuǎn)換,即使用調(diào)用擴充。圖3E定義 了包括起始狀態(tài)SC7、中間狀態(tài)ISll和接受狀態(tài)DC7的機器,并示出了對擴 充x : TRef的調(diào)用策略的使用。第一轉(zhuǎn)移執(zhí)行了調(diào)用指令Call(T),這是以下示 例性、非限定性偽代碼的簡寫Call(T, CurrentContinuation (當(dāng)前延續(xù)),CurrentEnvironment (當(dāng)前環(huán)境)) 調(diào)用指針處的CurrentContinuation是轉(zhuǎn)移箭頭尾部的中間狀態(tài)ISll。所調(diào) 用的變換機在變量結(jié)果中返回其環(huán)境。最后,進行調(diào)用的變換機將結(jié)果綁定至圖3F示出了x:TRePM 范例的示例性轉(zhuǎn)換,即使用調(diào)用擴充。圖3F定 義了包括起始狀態(tài)SC8、中間狀態(tài)IS12和IS13以及接受狀態(tài)DC8的機器,并 示出了應(yīng)用于調(diào)用的重復(fù)容器。該變換機類似于圖3C的變換機,采用對T的 調(diào)用作為內(nèi)在變換機以代替T的內(nèi)聯(lián)擴充。在圖3A到3F中沒有描述的轉(zhuǎn)換范例是綁定組重復(fù)范例和綁定引用范例 的內(nèi)聯(lián)版本。綁定組重復(fù)組合了圖3F的重復(fù)容器與圖3D中所示的綁定組變換 器。另外,綁定引用和綁定重復(fù)范例的內(nèi)聯(lián)版本分別與綁定組和綁定組重復(fù)范 例相同。根據(jù)本發(fā)明,確定化描述如何制定子集構(gòu)造技術(shù)以慮及可能具有動作的轉(zhuǎn) 移。根據(jù)本發(fā)明,允許動作與轉(zhuǎn)移和狀態(tài)兩者的關(guān)聯(lián)。盡管可僅采用對轉(zhuǎn)移的 動作來構(gòu)造確定性變換機,但該選擇令算法更為復(fù)雜,而高效地為狀態(tài)和轉(zhuǎn)移 兩者存儲動作是直接的。簡化某些細(xì)節(jié),圖2E列出了如在QFX中實現(xiàn)的示例性、非限定性e閉包 算法,即State〈T〉.EClosure+。擴充該方法以累積對e轉(zhuǎn)移的動作。圖2E的 示例性偽代碼240中標(biāo)記為(A1)和(A2)的行在列表"actions (動作)"中保存 在e閉包構(gòu)造期間遍歷的對epsilon (s)轉(zhuǎn)移的所有動作??偟拇_定化算法將 這些所保存的動作轉(zhuǎn)移到自e閉包構(gòu)造的確定性有限狀態(tài)變換機(DFST)狀 態(tài)。圖2F示出了如按照QFX中的示例性方式所實現(xiàn)的被修改以容納動作的子 集構(gòu)造,即NFA〈T〉.SubsetConstruction。修改并添加圖2F的示例性偽代碼250標(biāo)簽(B1)到(B6)的標(biāo)記行以容納動作。行(B1)和(B2)找到源狀態(tài)(src)具有對 符號的轉(zhuǎn)移的所有狀態(tài);這些行也在symActions (符號動作)中累積每一轉(zhuǎn)移 的動作。行(B3)和(B4)執(zhí)行e轉(zhuǎn)移的類似功能。最后,行(B5)將symActions添 加到src與dst (目的)狀態(tài)之間的DFST轉(zhuǎn)移,且行(B6)將epsActions ( e動 作)添加到src狀態(tài)。這些動作然后在完成到src的轉(zhuǎn)移之后執(zhí)行。在一個實 施例中,這些算法假定動作除了在當(dāng)前環(huán)境中綁定變量之外不會有側(cè)放作用。 總體上,有利地,根據(jù)本發(fā)明的用于確定化的該方法實現(xiàn)以下保證1. 如果一對動作al和a2是同一產(chǎn)生的元素,則動作al和a2按詞匯次 序調(diào)用;2. 如果動作al是產(chǎn)生pl的一部分,而動作a2是產(chǎn)生p2的一部分,pl # p2,則變換機將調(diào)用al或a2中的任一個。變換機僅在pl和p2共享前綴 p 且pw包含pl中的al且p"包含p2中的a2的情況下調(diào)用這兩個動作;以 及3. 在語法的起始定義內(nèi),每一產(chǎn)生的最后動作具有側(cè)放作用。在一個實 施例中,變換機不會運行該動作,直到所有其它動作均完成。在這一方面,屬性化樹語法允許程序員利用以上保證。使用屬性語法,程 序員可將所有的動作表達為當(dāng)前環(huán)境內(nèi)的變量綁定。這樣的動作可采取兩種形 式之一;c:r或x: ;^^"式,其中;^^^C可從當(dāng)前環(huán)境讀取值或調(diào)用代碼來計 算值。只要表達式執(zhí)行的代碼不引入次序依賴關(guān)系,執(zhí)行樹語法的結(jié)果就是確 定性的。程序員可使用屬性語法來推遲側(cè)放作用,直到明確地該側(cè)放作用應(yīng)被調(diào) 用。例如,為了遍歷樹打印文本,程序員可使用屬性將文本收集成串,然后根 據(jù)與樹語法起始符號相關(guān)聯(lián)的最后動作打印該串。程序員也可通過使打印動作 遵循明確的非終止定義而選擇"在運行時"打印子樹。對于根據(jù)本發(fā)明的示例性、非限定性實施例的變量重命名,為確保變量綁 定動作的獨立性,編譯器重命名變量,使得MFST中綁定的每一變量是唯一的。 如果編譯器也為給定動作生成代碼,則編譯器也重命名a中的變量。如果代碼 塊B對于編譯器是不透明的,則編譯器安排向B傳遞間接通過原始變量名更 新后的名字來査找其原始名字的環(huán)境??扇芜x地,可通過執(zhí)行活動范圍分析和令若干原始變量共享同一更新后的名字來優(yōu)化變量重命名。而且,變換機性能可通過使用編譯器確定的偏移量而將變量弓I用實現(xiàn)為數(shù)組訪問來改進。
從而,在一個方面中,本發(fā)明提供用于執(zhí)行高效樹變換的一般框架,該變換跨一組不同的FST表示實現(xiàn)對在其表示中支持動作信息的FST的動作語義
的保存??蓪ST執(zhí)行任何交、并和補變換運算以及帶有組合的其它布爾運算
符,同時保存動作語義。
此外,如以上在背景中所提及地,在有限的環(huán)境下,存在可跨樹變換保存有序嵌套信息的某些系統(tǒng)以及可跨樹變換保存無序嵌套信息的某些系統(tǒng),但尚不存在可跨例如交、并、補等樹變換保存有序和無序樹信息兩者的系統(tǒng)。從而,
在各個非限定性實施例中,用于執(zhí)行高效樹變換的框架還在執(zhí)行FST的樹變換的同時保存有序和無序嵌套信息。
有序和無序信息之間的區(qū)別在圖4A和4B中概念性示出。圖4A示出了也被稱為列表模式的有序模式,它要求紅、然后綠、然后藍、然后再紅的序列以便匹配模式。從而,在模式匹配意義上,考慮了模式元素出現(xiàn)的次序。圖4B示出了也被稱為集合模式的無序模式。圖4B的集合模式示出了與圖4A的列表模式相同的元素,但這次沒有任何次序。圖4B的集合模式因此表示了以任何次序的兩個紅、 一個綠和一個藍的集合。當(dāng)進行模式匹配時,考慮的是元素在集合中的出現(xiàn),即元素是否出現(xiàn)在兩個樹中,而非元素以何種次序出現(xiàn)。
計算系統(tǒng)中列表模式匹配情形的實例可以有口令的輸入,其中口令是數(shù)字
的順序集合。由于為口令輸入的每一字符必須以特定次序輸入以便匹配為該用戶存儲在系統(tǒng)中的正確口令,口令匹配情形將基于具有有序信息的樹結(jié)構(gòu)匹配模式。
計算系統(tǒng)中集合模式匹配情形的示例有在文件系統(tǒng)中搜索一組指定的文件,例如Pic—Amy、 Pic_Greg、 Pic—Neyda。當(dāng)搜索這些圖片出現(xiàn)的文件夾時,匹配的是它們在文件夾中的出現(xiàn)而非它們以何種次序出現(xiàn)。換言之,搜索情形中的用戶僅關(guān)注找到具有這些文件中的每一個的文件夾,而圖片在系統(tǒng)中存儲的次序?qū)τ脩舳允遣恢匾?。集合模式匹配情形的另一示例是在?shù)據(jù)庫中一起找到某一名、中間名和姓,結(jié)果不依賴于數(shù)據(jù)是被存儲為"姓、名、中間名"、"名、中間名、姓"還是"名、姓、中間名"。這三者全部以任何次序的任何出現(xiàn)都滿足該數(shù)據(jù)庫查詢。
根據(jù)本發(fā)明的框架,可對MFST執(zhí)行變換同時保存由樹數(shù)據(jù)結(jié)構(gòu)表示的有
序和無序信息兩者,包括任何交、并和補變換。因此可對組合關(guān)于樹的孩子的集合和列表假設(shè)的模式執(zhí)行變換。因此,嵌套在樹結(jié)構(gòu)的節(jié)點中的有序或無序信息均跨變換保存。
如圖5A的流程圖所示,在500本發(fā)明在計算系統(tǒng)中啟用用于接收包括有序和/或無序信息的各種類型的有限狀態(tài)變換機(FST)數(shù)據(jù)結(jié)構(gòu)的一般框架,然后在505將框架的變換引擎應(yīng)用于FST。在510,根據(jù)上述任何類型的FST表示的樹語法進行FST的分析和變換。結(jié)果,在515,F(xiàn)ST被變換以生成MFST,這保存FST的動作信息,例如在對兩個或多個FST執(zhí)行任何交、補和并運算的同時保存有序和無序嵌套信息,并允許將非確定性FST變換成確定性結(jié)果。
圖5B是大體對應(yīng)于示出本發(fā)明的樹語法所允許的這一方面的以上過程的框圖。變換框架530接收分別包括有序信息、無序信息或兩者的一個或多個MFST520、 522或524,根據(jù)任何交、并和補變換運算(和/或其他布爾運算符,帶有組合)變換MFST,并將有序和/或無序信息保存在輸出540中。
圖5C到51示出了在存在有序或標(biāo)記信息的情況下對狀態(tài)機的變換的示例性、非限定性的各方面。如圖5C的框圖中所示,問題涉及兩個狀態(tài)機M,和M2的并,狀態(tài)機M!和M2各自具有單獨的接受狀態(tài)550和555,即如何在機器的變換表示中表示該信息。在以往,這是通過將兩個接受狀態(tài)550和555組合成表示兩者的單個接受狀態(tài)而實現(xiàn)的,這可導(dǎo)致來自原始機器的信息的損失。
根據(jù)圖5D的框圖,在示例性、非限定性方面中,本發(fā)明在結(jié)果變換機560中接受自家狀態(tài)機標(biāo)記的接受狀態(tài)。在各個非限定性實施例中,本發(fā)明在變換期間引入對標(biāo)記并的處理,這是用接受狀態(tài)所源于的機器的名字標(biāo)記并機器的接受狀態(tài)的并的變體。
如圖5E的示例所示,當(dāng)執(zhí)行M! ULM2時,存在接受狀態(tài)標(biāo)簽的三種可能"M, 575、 "M!,M2" 580和"M2" 585。這指示標(biāo)記并機器中的接受狀態(tài)分別表示由M" M,和M2兩者、以及M2接受的輸入。如在圖51中更詳細(xì)地示出,在示例性、非限定性實現(xiàn)中,這些標(biāo)簽可被示為位,每一原始機器一個位。例如,可向Mi分派低位,而向M2分派高位。于是,可能的標(biāo)簽可被表示為"01"(即,M,而非M2接受輸入),"11"(即,M!和M2均接受輸入)以
及"10"(即,M2而非]V^接受輸入)。另一種可能性是"00"。并機器的均非接受狀態(tài)可被視為具有該標(biāo)簽(因為M,或M2均不接受輸入)。
在此方面,如圖5E的框圖中所示,除了生成表示N^M2組合的結(jié)果接受狀態(tài)節(jié)點580以外,本發(fā)明也生成表示接受狀態(tài)M,和接受狀態(tài)M2的接受狀態(tài)節(jié)點575和585。如圖5F中所示,當(dāng)遇到并運算符M, u M2時,這些接受狀態(tài)575、 580和/或585中的任一個可以是得到的接受狀態(tài)的一部分,而如圖5G中所示,交運算符Mi D M2僅意味著]V^M2節(jié)點580。例如,當(dāng)向Mj分派低位而向M2分派高位時,在一個非限定性實施例中,并機器被通過找到標(biāo)記為"11"的接受狀態(tài)而被轉(zhuǎn)換成交機器。如果不存在這樣的狀態(tài),則交機器為空。給定標(biāo)記為"11"的一組狀態(tài)A,通過從并機器移除不能從其到達A中任何狀態(tài)的任何狀態(tài)而生成交機器。
如圖5H的框圖所示,也可在根據(jù)本發(fā)明的變換期間捕捉子類型化。關(guān)于類型化存在可在確定化組件570時確定的三種結(jié)果。Mi c M2是如果沒有接受狀態(tài)被標(biāo)記為M,的一個結(jié)果,如頂部所示。M,-M2是如果在中間僅生成接受狀態(tài)M!M2 580時的另一結(jié)果。M2 c 是如果沒有接受狀態(tài)被標(biāo)記為M2的一個結(jié)果,如在底部所示。給定以上變換過程,可確定子類型化。例如,當(dāng)向M!分派低位而向M2分派高位時,如果所有接受狀態(tài)都被標(biāo)記為11,則Mj等于M2。如果存在標(biāo)記為10和11的接受狀態(tài),則M2包含M(即,Mi是
M2的子類型)。
圖51示出了根據(jù)標(biāo)記并運算符變換機器590和機器592的示例性、非限定性過程的流程圖,其中兩個機器590和592中的每一個是兩位機器。根據(jù)應(yīng)用位標(biāo)簽的上述示例性、非限定性實現(xiàn),向機器590的標(biāo)簽L!和L2分派兩位,并向機器592的標(biāo)簽L3和U分派兩位。當(dāng)根據(jù)本發(fā)明的標(biāo)記并運算符組合時,這在結(jié)果4位機器595中產(chǎn)生16個接受狀態(tài)。例如,L2將接收標(biāo)簽0010, L2L4接收標(biāo)簽IOIO, L山2L3U接收標(biāo)簽1111,依此類推,直到表示了所有組合。
圖5J示出了如何變換有序機器以構(gòu)造和組合相應(yīng)的無序機器。例如,模式集合P可能包括可任選出現(xiàn)的約束,諸如由以下集合(Ph p2*, P3"表示的約束,這指示包括至少一個p!的集合、包括零或多個P2以及一個或多個P3的集合。根據(jù)本發(fā)明的示例性、非限定性實現(xiàn),集合模式P被分成兩個組成部分(A)并模式596,諸如在目前描述的示例集合P中的p!up2Up3,以及(B)標(biāo)記運行的集合598,其各自接受某些輸入。在目前所述示例中,這可得到
{LhLAL/},其中L!、 L2和L3分別標(biāo)記接受狀態(tài)p!、 P2和P3。
從而,如圖5K所示,為根據(jù)本發(fā)明的示例性、非限定性實現(xiàn)對諸如給定
無序模式Pl和P2等無序模式執(zhí)行標(biāo)記并14,計算以下表達式U(Pi)、U(P2)、
r(P0和r(P2),其中u(x)是x的并模式,而r(x)是x的接受運行的集合。于是,
基于這些表達式,獲得以下兩個結(jié)果
(1) U(P!Ul P2"U(P')Ul u(P2)
(2) r(p, uL p2) = r(p)* r(p2)
其中圖5K以及以上等式(2)中的的"*"運算符LUCP表示標(biāo)記并叉積運算。
接著,重新標(biāo)記U(PtULP2),使得運行標(biāo)記是一致的。例如,通過重寫R
的冗余標(biāo)簽組中的每一個/來實現(xiàn)重新標(biāo)記。從R中,選擇任意成員z(例如,上述按標(biāo)簽的位的實現(xiàn)中的編號最低標(biāo)簽或次序最低位),且對R中的每一/將/重寫成z。例如,如圖5L中所示,其中?(P,?tP2)具有示例性接受狀態(tài)標(biāo)簽ASL1,包括"L山"、"L山,",L2"和"L2,L4",則L3可由"替換,而L4可由L2替換以形成壓縮接受狀態(tài)標(biāo)簽ASL2,即"LV' 、 "LhU"和"L2,, 。
如上所述,圖5K以及以上等式(2)中的"*"運算符LUCP表示標(biāo)記并叉積運算。在如上圖所述重新標(biāo)記了 Pi和P2的接受運行之后,可根據(jù)以下非限定性過程定義標(biāo)記并叉積運算。首先,為一對運行R,和R2定義運算符Ul。為此,標(biāo)簽(R)被定義為運行R的標(biāo)簽。R然后被定義為對(/,[x,y])的集合,其中/是來自重新標(biāo)記的P! uL P2的某一標(biāo)簽,而x是/的最小出現(xiàn)數(shù),而y是/的最大出現(xiàn)數(shù),且[x, y] g
。通過考慮R^R2 (即,R,和R2的叉積)中的每一元素對來計算R,UlR2,如下。對每一 對(A, [xh y!])、 (/2, [x2,y2]),則(",[x!,y,]), (/2, [X2,y2])使用區(qū)間并運算變?yōu)?/!, [x,y①U(/2, [x2,y2])。否則,(A, [x!,y①,(/2, [&,》])是空集。因此,對R一R2(即Rj和R2的叉積)中的成員Z, UL被計算為或者是(Zl,) U (/2, [x2, y2])或者是空集。然后通過取得這些結(jié)果的并來形成結(jié)果
集s而計算RiULR2。如果s具有與i^和R2相同的基數(shù),則i^ULR2是帶有
例如標(biāo)簽(R2)和標(biāo)簽(R2)等標(biāo)簽的S。否貝U, Rtl^R2是(RhR2),其中Ri和R2不相交,且它們具有單獨的標(biāo)簽。
例如,如果<formula>formula see original document page 22</formula>
則R,ULR^帶有標(biāo)簽標(biāo)簽(R!)、標(biāo)簽(R2)的K丄,,
),丄2, n,①]),丄3, [1,
1])}。
又例如,如果
R廣((U[l,l]), L2, [2, L3,[l,l〗)}R2 = {(Lb
),L2,[I,1]), L3, [4, 4])}則R! UL R2 = {R!, R2}因為Ri和R2不相交。又例如,如果
R1= {A,丄2}其中^是(丄i, [1, l])等R2={"丄2,丄3*}
則R^Ul R2=帶有標(biāo)簽標(biāo)簽(R^、標(biāo)簽(R2)的"b丄2}以及帶有標(biāo)簽標(biāo)簽(R2)的(丄b丄2,丄3+}。
總而言之,根據(jù)上述過程首先計算R,Ut R2,即根據(jù)本發(fā)明的運行R,和
R2的ul的定義。然后,通過取得R,與(R,ul R2)的交以及R2與(R,Ul R2)的
交即R! nuL Rz)和r2 n (R! uL R2)來細(xì)化結(jié)果,即R丄n (r! ul r。和r2 n
Ul R2)是使用類似于并運算符的方法執(zhí)行的,只是用區(qū)間交代替了區(qū)間并運算。
在本發(fā)明的示例性、非限定性實施例中,為此,并運行被分成片段R,、R2和R! n R2。這些片段R" R2和R, n R2然后分別用標(biāo)簽(RJ、標(biāo)簽(R。和標(biāo)簽(R,),標(biāo)簽(R2)標(biāo)記。
從而,其中Pi和P2是無序模式,可執(zhí)行Pil^P2的確定化。就此而言,
本發(fā)明使得Pt P2能被計算成帶有并模式部分以及并模式的接受運行的集合的無序模式,每一運行標(biāo)記了來自Pi、 P2或兩者的標(biāo)簽。P,UlP2于是可以是與某個其它無序模式P3的并,該模式也具有并模式以及標(biāo)記運行的集合,對另一無序模式P4依此類推。
示例性、非限定性使用情形為了補充理解,本發(fā)明的各個使用情形示出了可在計算系統(tǒng)中應(yīng)用使用本發(fā)明的Q框架的模式匹配的各種應(yīng)用。匹配同時保存嵌入正在變換的樹中的動作語義或有序和無序信息的能力由此在計算系統(tǒng)中啟用了各種模式匹配系統(tǒng)的集合。然而,所選的實際情形僅是示例性的,從而不作為對本發(fā)明適用的模
式匹配的領(lǐng)域的限制。實際上,根據(jù)本發(fā)明變換MFST的能力,按定義是相當(dāng)
廣泛的,因為無需顧及丟失關(guān)于動作約束的信息或嵌入正在變換的樹表示中的有序和無序信息。
就此方面,如上所述,Q框架允許在根據(jù)至少交、并和補變換而變換MFST時保存這樣的動作或有序和無序的信息。采用這三種變換運算,可執(zhí)行樹數(shù)據(jù)結(jié)構(gòu)上的一性質(zhì),其被本領(lǐng)域的技術(shù)人員稱為結(jié)構(gòu)兼容性或子類型化。通常,計算應(yīng)用程序想要知道給定樹是否是另一給定樹的子集或樹的集合(或并、補或交所定義的這些樹的某種變換運算)。
本發(fā)明可應(yīng)用的另一類重要情形是執(zhí)行靜態(tài)類型檢査的大量應(yīng)用程序,其中編譯器查看程序,并要求過程兼容性。過程兼容性檢查涉及樹集合的模式匹配,且有助于找出計算機程序中的隱錯。
一般而言,用戶或計算系統(tǒng)可能希望針對樹數(shù)據(jù)集合或樹數(shù)據(jù)的子集實現(xiàn)的測試類是無限的。然而,通常會發(fā)生某些遞歸測試。例如,通常測試希望知道第一樹或第一樹集合是否與第二樹或第二樹集合相交?;蛘?,可能希望知道是否存在樹集合的合計,以及是否存在對樹遍歷的所有路徑的覆蓋?;蛘哂脩艨赡芟M朗裁礃鋵?dǎo)致默認(rèn)情況。還可希望測試空測試,這詢問了是否可接受任何樹作為模式匹配的問題。如前所述,在本發(fā)明的一個實施例中,本發(fā)明
允許以下四種變換測試交、并、補和空測試。
以上描述了采用編譯器對本發(fā)明的有利使用。本發(fā)明也可用于各種其它情形,諸如模式確認(rèn)。例如,消息隨購買定單而來,問題是購買定單是否兼容某種模式。本發(fā)明的模式匹配可用于針對模式確認(rèn)消息,而不考慮動作語義或有序/或無序信息而同時在結(jié)果中保存動作語義或有序/無序信息。
契約檢查是本發(fā)明的另一示例性用途。例如,公司可能具有涉及公司的人力資源計算系統(tǒng)的策略,它規(guī)定它必須遵守一組表示物理系統(tǒng)的計算機要求
(例如,X數(shù)量的存儲、Y數(shù)量的安全、Z數(shù)量的處理能力等)。就此方面,每一配置可被表示為樹表示中的一組要求,且根據(jù)本發(fā)明的框架的樹變換能力,系統(tǒng)分析者可根據(jù)預(yù)定義變換來變換計算機配置,并査看新的計算機配置是否匹配HR計算系統(tǒng)所需的契約。
本發(fā)明還可應(yīng)用于找到計算系統(tǒng)所記錄的日志數(shù)據(jù)集合中的安全漏洞模式,或確定計算系統(tǒng)的可能配置。本發(fā)明可應(yīng)用于防火墻,在那里傳入和傳出防火墻的消息可被視為樹,其中可采用模式匹配來觀察是否應(yīng)不讓任何給定消
息通過防火墻。由于本文提及的、Q框架所支持的變換布爾運算可用于形成任
何邏輯語句,計算系統(tǒng)中的任何規(guī)則系統(tǒng)可被歸約成樹,且可應(yīng)用模式匹配來確定是否遵守這些規(guī)則。因此,應(yīng)清楚本發(fā)明的應(yīng)用是不受限制的。
有限狀態(tài)自動機和變換機
對附加的上下文,有限狀態(tài)機(FSM)或有限狀態(tài)自動機(FSA)是由狀態(tài)、轉(zhuǎn)移和動作組成的行為的模型。FSM的狀態(tài)存儲關(guān)于過去的信息,即狀態(tài)反映從系統(tǒng)起始到目前時刻的輸入改變。轉(zhuǎn)移指示狀態(tài)改變,且由要求履行以允許轉(zhuǎn)移的條件描述。動作是要在給定時刻執(zhí)行的活動的描述。存在若干動作類型進入、退出、輸入和轉(zhuǎn)移動作。進入動作在進入狀態(tài)時執(zhí)行該動作。退出動作在退出狀態(tài)時執(zhí)行該動作。輸入動作依賴于目前狀態(tài)和輸入條件執(zhí)行動作。轉(zhuǎn)移動作在執(zhí)行某一轉(zhuǎn)移時執(zhí)行該動作。
有限狀態(tài)變換機(FST)是使用動作基于給定輸入和/或狀態(tài)生成輸出的一類FSM,且可用于控制應(yīng)用程序、構(gòu)造計算機程序等。圖6A示出了簡單的有限狀態(tài)變換機620。變換機620基于給定輸入610生成輸出630,如由FSM 620所轉(zhuǎn)換或變換地。存在的兩類變換機FSM是Moore模型和Mealy模型,它們將在以下更詳細(xì)描述。也常使用混合模型。
因此,可理解可將眾多不同種類的計算機系統(tǒng)和進程建模成FSM和FST。例如,可使用有向圖將任何可擴展標(biāo)記語言(XML)文檔表示成FSM。關(guān)系數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)也可按照這種方式表示,例如借此輸入(例如,查詢)由 FST轉(zhuǎn)換成輸出(例如,查詢結(jié)果),F(xiàn)ST表示底層關(guān)系存儲。 一般而言,當(dāng)
用于對計算機進程建模時,F(xiàn)ST通常被表示為標(biāo)記邊有向圖,其中每一頂點表 示n個狀態(tài)之一,而每一邊表示在接收標(biāo)記該邊的字母符號時從一個狀態(tài)到另 一個狀態(tài)的轉(zhuǎn)移。
當(dāng)計算機系統(tǒng)中的眾多復(fù)雜子系統(tǒng)和進程被通信耦合成總系統(tǒng)的一部分 時,為了設(shè)計總系統(tǒng)的軟件,設(shè)計者可首先將每一子系統(tǒng)和進程表示為FST, 例如有向圖或其它等效表示。然后,為了為連接不同子系統(tǒng)的單個系統(tǒng)創(chuàng)建復(fù) 雜計算機程序,例如有向圖的FST可根據(jù)各種操作組合或以其它方式變換以便 形成表示總系統(tǒng)的行為的新的有向圖。
例如,假定用戶Jane經(jīng)由因特網(wǎng)從客戶計算機向因特網(wǎng)服務(wù)器作出對存 儲在數(shù)據(jù)庫中的朋友John的度假照片的請求,并得到因特網(wǎng)服務(wù)器上的應(yīng)用 程序的服務(wù)。如可以理解地,根據(jù)這樣的請求進行的端對端通信是數(shù)目眾多的, 以對Jane的認(rèn)證開始并確保除了執(zhí)行請求本身以外Jane還被授權(quán)査看John的 照片。作為簡單的示例,作出和處理請求本身可被建模成第一FST。在服務(wù)器 處,第二FST可對參考各種規(guī)則檢查Jane是否是John的朋友的行為建模,這 些規(guī)則諸如可在訪問控制列表(ACL)和相應(yīng)的策略的集合中找到,它們可被 表示成一連串XML片段、樹或有向圖。另外,第三FST可對關(guān)系數(shù)據(jù)庫本身 建模。通過對第一、第二和第三FST集合進行變換、組合、匹配、轉(zhuǎn)換等,可 形成新的有向圖,它表示系統(tǒng)并對特定的輸入請求返回是("授權(quán)")或否("未 被授權(quán)")的回答,且處理照片的傳遞。
一般而言,F(xiàn)SM可使用如圖8A的簡單狀態(tài)轉(zhuǎn)移圖的狀態(tài)圖(或狀態(tài)轉(zhuǎn)移 圖)表示。在圖8A中,表示了分別具有進入動作進入A1和進入A2的兩個狀 態(tài)S1和S2,意味著在進入狀態(tài)S1時執(zhí)行進入動作進入Al,而在進入狀態(tài)S2 時執(zhí)行進入動作進入A2。而且,當(dāng)轉(zhuǎn)移條件TC1發(fā)生時,發(fā)生自狀態(tài)S1到 S2的轉(zhuǎn)移T1;而當(dāng)轉(zhuǎn)移條件TC2發(fā)生時,發(fā)生自狀態(tài)S2到S1的轉(zhuǎn)移T2。 狀態(tài)S1可能是"門打開",而狀態(tài)S2可能是"門關(guān)上"。從而,為了從狀態(tài) Sl轉(zhuǎn)到狀態(tài)S2,必須發(fā)生轉(zhuǎn)移T1,這僅當(dāng)轉(zhuǎn)移條件TC1發(fā)生時才發(fā)生,而 TC1可能是"力正使得門在關(guān)閉方向上移動"。在進入狀態(tài)S2時執(zhí)行的進入動作進入A2因此可能是"關(guān)上門"。在打開門時可跟隨類似的轉(zhuǎn)移鏈,即從 狀態(tài)S2轉(zhuǎn)到狀態(tài)S1。
除了示意圖之外,還可使用不同類型的狀態(tài)轉(zhuǎn)移表來表示FSA。這樣的狀 態(tài)轉(zhuǎn)移表STT1的常見表示在圖7A中示出,其中諸如當(dāng)前狀態(tài)B等表STT1 的列與諸如狀態(tài)Y等表STT1的行的組合指示處于狀態(tài)B時當(dāng)發(fā)生條件Y時 發(fā)生的下一狀態(tài),即狀態(tài)C。然而,采用諸如狀態(tài)轉(zhuǎn)移表STT1的表,僅可使 用腳注來添加完整的動作信息。
然而,存在使用狀態(tài)表包括全部動作信息的FSM定義。例如,在虛擬環(huán) 境中定義的FSM被稱為虛擬有限狀態(tài)機(VFSM),它涉及使用輸入控制性質(zhì) 和輸出動作的分派名字描述控制系統(tǒng)的行為的軟件指定方法。
虛擬環(huán)境表征其中VFSM操作的環(huán)境,且由三個名字集合定義輸入名、 輸出名和狀態(tài)名。輸入名由所有可用變量的控制性質(zhì)表示。輸出名由對變量的 所有可用動作表示,而狀態(tài)名為FSM的每一狀態(tài)定義。輸入名用于構(gòu)建執(zhí)行 狀態(tài)轉(zhuǎn)移或輸入動作的虛擬條件。虛擬條件是使用正邏輯代數(shù)構(gòu)建的。輸出名 用于觸發(fā)動作(進入動作、退出動作、輸入動作或轉(zhuǎn)移動作)。
狀態(tài)表定義VFSM狀態(tài)行為的細(xì)節(jié),如圖7B的示例性狀態(tài)表ST1所示。 狀態(tài)轉(zhuǎn)移表ST1包括三列在第一列中,使用狀態(tài)名SN;在第二列中,放置 了使用正邏輯代數(shù)根據(jù)輸入名構(gòu)建的虛擬條件CO;在第三列中,出現(xiàn)用于觸 發(fā)動作AC的輸出名。
除了如在此處呈現(xiàn)的其對反應(yīng)系統(tǒng)建模的用途,F(xiàn)SA在眾多不同領(lǐng)域中是 重要的,包括語言、計算機科學(xué)、哲學(xué)、生物學(xué)、數(shù)學(xué)和邏輯。有限狀態(tài)機是 在自動機理論和計算理論中研究的一種類型的自動機。在計算機科學(xué)中,有限 狀態(tài)機廣泛用于對應(yīng)用程序行為建模、硬件數(shù)字系統(tǒng)的設(shè)計、軟件工程、編譯 器以及計算和語言的研究。對FSA應(yīng)用的完整審視實際上是不可能的——存 在將FSA應(yīng)用到系統(tǒng)中任何地方的實際上無限的應(yīng)用。
一般而言,變換機計算兩種形式語言之間的關(guān)系。在FSM和FSA的上下 文中,變換機使用動作基于給定輸入和/或狀態(tài)生成輸出,且可用于控制應(yīng)用程 序。 一般區(qū)分兩種類型的變換機FSM: Moore模型和Mealy模型。實際上,常 使用混合模型。為說明性的目的,圖8B示出了變換機FSM 800,它示出具有四個狀態(tài)S3、 S4、 S5和S6以及相應(yīng)的輸出03、 04、 05和06的Moore模型示例。采用 Moore機器,F(xiàn)SM僅使用進入動作,即輸出僅依賴于狀態(tài)。Moore模型的優(yōu)點 在于行為的簡化。圖8B中的示例示出了電梯門MooreFSM 800。狀態(tài)機識別 兩個命令"命令開"Cl和"命令關(guān)"C2,它們觸發(fā)狀態(tài)改變。例如,在"正 在打開"狀態(tài)S6中的進入動作EA1啟動打開門的電機,而"正在關(guān)閉"狀態(tài) S4中的進入動作EA2啟動關(guān)閉門的另一方向上的電機。"已打開"狀態(tài)S3 和"已關(guān)閉"狀態(tài)S5在此示例中不執(zhí)行任何動作,相反它們分別向外部系統(tǒng) (例如,其它狀態(tài)機)用信號表示"門打開"或"門關(guān)上"。
圖8C示出了變換機FSM810,它示出了具有兩個狀態(tài)S7和S8、相應(yīng)的 輸出07和08以及輸入動作II和12的Mealy模型示例。采用Mealy機器,F(xiàn)SM 僅使用輸入動作,即輸出依賴于輸入和狀態(tài)。對Mealy FSM的使用通常導(dǎo)致 狀態(tài)數(shù)目的減少。圖8C中的示例示出實現(xiàn)與圖8B的Moore示例800相同行 為的Mealy FSM 810.存在兩個輸入動作"如果命令關(guān)到達,則啟動電動機以 關(guān)閉門"II和"如果命令開到達,則啟動另一方向上的電動機以打開門"12。
有限自動機的另一區(qū)分是確定性有限自動機(DFA)和非確定性(NDFA) 或通用非確定性有限自動機(GNFA)。在確定性自動機中,對于每一狀態(tài), 對每一可能的輸入存在恰好一個的轉(zhuǎn)移。在非確定性自動機中,對給定可能的 輸入,自給定的狀態(tài)可能存在零個或一個以上的轉(zhuǎn)移。這種區(qū)分是關(guān)乎實際, 而非理論的,因為存在可將任何NDFA變換成等效的DFA的算法,盡管這種 變換通常顯著增加自動機的復(fù)雜性。
僅具有一個狀態(tài)的FSM被稱為組合FSM,且僅使用輸入動作。這一概念 在其中需要多個FSM來一起工作,且便于將純粹組合的部分考慮成一種形式 的FSM以適合設(shè)計工具的情況中有用。
一般而言,變換機計算兩種形式語言之間的關(guān)系。有限狀態(tài)變換機(FST) 計算的一類關(guān)系被稱為有理關(guān)系類。FST通常有助于自然語言處理研究。
FST是具有兩個帶的有限狀態(tài)機,它與具有單個帶的普通有限狀態(tài)自動機 形成對比。關(guān)于命名,將自動機說成識別串,如果其帶的內(nèi)容被視為輸入。換 言之,自動機計算將串映射到集合{0, 1}的函數(shù)。或者,將自動機說成生成串,這意味著其帶被視作輸出帶。根據(jù)這一觀點,自動機生成作為串的集合的形式 語言。自動機的這兩種觀點是等價的自動機計算的函數(shù)正是它所識別的串集 合的指示函數(shù)。有限自動機生成的語言類被稱為正則語言類。
變換機的兩個帶一般被視為輸入帶和輸出帶。就此而言,將變換機說成通 過接受其輸入帶上的串并在其輸出帶上生成另一串而將其輸入帶的內(nèi)容變換 (即,轉(zhuǎn)換)成其輸出帶。它可非確定性地這樣做,且它可能會對每一輸入串 產(chǎn)生多于一個的輸出。變換機也可能對給定輸入串不產(chǎn)生輸出,在這種情況下, 將它稱作拒絕輸入。
對于附加的上下文,在形式上,有限狀態(tài)變換機T是多元組(Q,S,r,I,F,
5),使得
Q是有限集,狀態(tài)的集合; 2是有限集,被稱為輸入字母表;
r是有限集,被稱為輸出字母表; I是Q的子集,初始狀態(tài)的集合; F是Q的子集,最終狀態(tài)的集合;以及
3Ggx(2:u{e})x(ru{e})x2 (其中e是空)是轉(zhuǎn)移關(guān)系。
(Q, S)可被視為標(biāo)記有向圖,被稱作T的轉(zhuǎn)移圖頂點的集合為0,且 C仏a,&,f) G5意味著存在自頂點《到頂點r的標(biāo)記邊。在此方面,a是該邊
輸入標(biāo)簽,而6是輸出標(biāo)簽。
將擴展轉(zhuǎn)移關(guān)系S *定義成使以下公式成立的最小集合 J 。+ ;
對所有的9GQ, (g,e,e,g) G 5 ;以及 只要(g, :r,仏r) G 5*且(r, a, 6, s) G 5 ,則(g,認(rèn),y&, s) G (f 。
擴展轉(zhuǎn)移關(guān)系實質(zhì)上是已經(jīng)擴充來考慮邊標(biāo)簽的轉(zhuǎn)移圖的自反傳遞閉包。 8*的元素被稱為路徑。路徑的邊標(biāo)簽通過按次序串接其組成轉(zhuǎn)移的邊標(biāo)簽來獲 得。
變換機r的/f為是如下定義的有理關(guān)系[7]: x[71y當(dāng)且僅當(dāng)存在《€ /和 /GF使得(i,T,y,/) G(f 。即如果存在自輸出狀態(tài)到最終狀態(tài)的輸入標(biāo)簽
為x而輸出標(biāo)簽為少的路徑,則r將串r e sr變換成串^ g 。對有限自動機定義的以下運算也適用于有限變換機并、串接、克林閉包、 組合、輸入帶的投影以及輸出帶的投影。
對于并運算,給定變換機r和s,存在變換機rus,使得r[rus]y當(dāng)
且僅當(dāng)x[71y或x[5]少。
對于串接運算,給定變換機r和s,存在變換機T s ,使得"iP"'習(xí)"^ 當(dāng)且僅當(dāng)HHy或x問z。
對于克林閉包運算,給定變換機r,存在具有以下性質(zhì)的變換機7^: (i) s[r']e; (2)如果w[廣ly且;c[7]z,則薦[7^]yz;且不成立除非由(1) 或(2)委托。
注意到不存在變換機的交的概念。相反,存在組合運算,這是變換機專用 的,且其構(gòu)成類似于自動機的交。如下定義組合
給定字母表s和r上的變換機r,以及字母表r和A上的變換機s,存在 2和△上的變換機r o s ,使得^P" o《2當(dāng)且僅當(dāng)存在使得4Hv且乂5]z的
也可將變換機的任一帶投影來獲得自動機。存在兩種投影函數(shù)7H保存輸 入帶,而兀2保存輸出帶。第一投影即7t,被定義如下
給定變換機r,存在有限自動機 r,使得7nr接受x當(dāng)且僅當(dāng)存在x[7iy
的串y。類似定義第二投影即兀2。
此外,有限狀態(tài)機可用于表示偏序,這形成了集合元素的定次序、定順序 或排列的直觀概念。偏序不必是全序,這保證了集合中所有元素可互相比較。 就此方面,全序是為集合項目的所有對定義的一種偏序。
因此,對某些但不必是全部項目對定義偏序。例如,集合(a,b)和(a,c,d) 是(a,b,c,d)的子集,但它們不是彼此的子集。因此"子集"是集合上的偏序。 作為另一示例,《(小于或等于)是整數(shù)上的全序,因為對任何兩個整數(shù),整 數(shù)之一總是小于或等于另一個整數(shù)。
如圖6B中所示,有序嵌套表示"a""隱含""b"的信息,但根據(jù)該有 序分層結(jié)構(gòu)周圍不存在其它方式(即,"b"不必"隱含""a")。因此,圖 6B的樹是有序嵌套的表示的示例。相反,圖6C的樹表示無序嵌套的示例。在 此方面,無論圖6C的樹表示的事實信息是從左向右讀取的還是從右向左讀取的,都收集了同樣的事實信息,即"塊等于(是)紅"或"紅等于(是)塊" 在邏輯上均指示塊是(=)紅。從而,這樣的信息是無序的,且遍歷樹的次序?qū)τ?獲取無序信息而言不是重要的。
示例性網(wǎng)絡(luò)化和分布式環(huán)境 本領(lǐng)域的普通技術(shù)人員可以理解,本發(fā)明可以結(jié)合任何計算機或可作為計 算機網(wǎng)絡(luò)的一部分來部署的其它客戶機或服務(wù)器設(shè)備來實現(xiàn),或可在連接至任 何種類的數(shù)據(jù)存儲的分布式計算環(huán)境中實現(xiàn)。在這一點上,本發(fā)明涉及任何計 算機系統(tǒng)或環(huán)境,其具有任意數(shù)目的存儲器或存儲單元,以及發(fā)生在任意數(shù)目 的存儲單元或巻上的任意數(shù)目的應(yīng)用程序和進程,它們可結(jié)合根據(jù)本發(fā)明的 QFX的實施例來使用。本發(fā)明可應(yīng)用于具有部署在具有遠(yuǎn)程或本地存儲的網(wǎng)絡(luò) 環(huán)境或分布式計算環(huán)境中的服務(wù)器計算機和客戶計算機的環(huán)境。本發(fā)明也可應(yīng) 用于具有編程語言功能、用于生成、接受和發(fā)送關(guān)于遠(yuǎn)程或本地服務(wù)和進程的
信息的解釋和執(zhí)行能力的獨立計算設(shè)備。如前所述,MFST普遍適用于多個機 器和計算設(shè)備上的軟件進程,因此根據(jù)本發(fā)明用于將語法轉(zhuǎn)換成MFST的技術(shù) 可高效地在各種計算環(huán)境中應(yīng)用。
分布式計算通過計算設(shè)備和系統(tǒng)之間的交換提供了計算機資源和服務(wù)的 共享。這些資源和服務(wù)包括信息的交換、對于諸如文件等對象的高速緩存存儲 和盤存儲。分布式計算利用網(wǎng)絡(luò)連接,允許客戶機利用它們的集體力量來使整 個企業(yè)受益。就此,各種設(shè)備可以含有其中蘊含本發(fā)明的QFX的應(yīng)用程序、 對象或資源。
圖9提供了示例性的網(wǎng)絡(luò)化或分布式計算環(huán)境的示意圖。分布式計算環(huán)境 包括計算對象910a、 9勵等,以及計算對象或設(shè)備920a、 920b、 920c、 920d、 920e等。這些對象可包括程序、方法、數(shù)據(jù)存儲、可編程邏輯等等。這些對象 可包括諸如PDA、音頻/視頻設(shè)備、MP3播放器、個人計算機等的相同或不同 設(shè)備的各部分。每一對象可通過通信網(wǎng)絡(luò)940與另一對象通信。該網(wǎng)絡(luò)本身可 以包括向圖9的系統(tǒng)提供服務(wù)的其它計算對象和計算設(shè)備,且其本身可以表示 多個互連的網(wǎng)絡(luò)。根據(jù)本發(fā)明的一方面,每一對象910a、 910b等,或920a、 920b、 920c、 920d、 920e等,可包含可利用適用于根據(jù)本發(fā)明的QFX的各個 實施例的API、或其它對象、軟件、固件和/或硬件的應(yīng)用程序。還可以理解,諸如920c等對象可以主存在另一計算設(shè)備910a、 910b等或 920a、 920b、 920c、 920d、 920e等上。因此,盡管所示的物理環(huán)境可以將所連 接的設(shè)備示為計算機,但是這樣的圖示僅是示例性的,并且該物理環(huán)境可以被 替換地描述或描繪成含有諸如PDA、電視機、MP3播放器等的各種數(shù)字設(shè)備, 它們中的任何一個可采用諸如接口、 COM對象等各種有線和無線服務(wù)、軟件 對象。
存在支持分布式計算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計算系統(tǒng) 可以由有線或無線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許多 網(wǎng)絡(luò)耦合至因特網(wǎng),后者為廣泛分布的計算提供了基礎(chǔ)結(jié)構(gòu)并包含許多不同的 網(wǎng)絡(luò)。任何基礎(chǔ)架構(gòu)可用于便于本發(fā)明的QFX的實施例的示例性通信。
在家庭網(wǎng)絡(luò)環(huán)境中,有至少四個全異的網(wǎng)絡(luò)傳輸媒體,其每一個可支持一 種唯一的協(xié)議,這些媒體如電力線、數(shù)據(jù)(無線和有線)、語音(如,電話) 和娛樂媒體。諸如電燈開關(guān)和電器設(shè)備等大多數(shù)家庭控制設(shè)備可使用電力線來 連接。數(shù)據(jù)服務(wù)可通過寬帶(如,DSL或電纜調(diào)制解調(diào)器)進入家庭,并可在 家庭內(nèi)使用無線(如,HomeRF或802.11B)或有線(如,家庭PNA、 Cat 5、 以太網(wǎng)、甚至是電力線)連接來訪問。語音話務(wù)可通過有線(如,Cat3)或無 線(如,蜂窩電話)進入家庭,并可在家庭中使用Cat3連線來分布。娛樂媒 體或其它圖形數(shù)據(jù)可通過衛(wèi)星或電纜進入家庭,并通常在家庭中使用同軸電纜 來分布。IEEE 1394和DVI也是用于媒體設(shè)備群集的數(shù)字互聯(lián)??勺鳛閰f(xié)議標(biāo) 準(zhǔn)浮現(xiàn)或已經(jīng)浮現(xiàn)的所有這些網(wǎng)絡(luò)環(huán)境和其它環(huán)境可被互聯(lián)來形成可通過諸 如因特網(wǎng)等廣域網(wǎng)連接到外部世界的網(wǎng)絡(luò),諸如內(nèi)聯(lián)網(wǎng)。簡而言之,對數(shù)據(jù)的 存儲和傳輸存在各種不同的源,因此本發(fā)明的任何計算設(shè)備可按照任何現(xiàn)有方 式共享和傳輸數(shù)據(jù),且在本文實施例中描述的方式不旨在是限定性的。
因特網(wǎng)通常指使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議套件的網(wǎng)絡(luò)和 網(wǎng)關(guān)的集合,該協(xié)議在計算機聯(lián)網(wǎng)領(lǐng)域中是公知的。因特網(wǎng)可被描述為由執(zhí)行 允許用戶通過網(wǎng)絡(luò)交互和共享信息的聯(lián)網(wǎng)協(xié)議的計算機互連的地理上分布的 遠(yuǎn)程計算機網(wǎng)絡(luò)的系統(tǒng)。由于這類廣泛分布的信息共享,諸如因特網(wǎng)等遠(yuǎn)程網(wǎng) 絡(luò)至今發(fā)展成一種開放式系統(tǒng),開發(fā)者可用該開放式系統(tǒng)設(shè)計用于執(zhí)行專用操 作或服務(wù)的軟件應(yīng)用程序,在本質(zhì)上沒有限制。由此,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)啟用了諸如客戶機/服務(wù)器、對等或混合體系結(jié)構(gòu)等 大量網(wǎng)絡(luò)拓樸結(jié)構(gòu)。"客戶機"是使用與它無關(guān)的另一類或組的服務(wù)的一個類 或組中的成員。由此,在計算時,客戶機是進程,即,粗略地而言是一組請求 由另一程序提供的服務(wù)的指令或任務(wù)。客戶機進程利用所請求的服務(wù),而不必 "知道"有關(guān)其它程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機/服務(wù)器體系結(jié)構(gòu) 中,尤其在網(wǎng)絡(luò)化系統(tǒng)中,客戶機通常是訪問由例如服務(wù)器等另一計算機提供
的共享的網(wǎng)絡(luò)資源的計算機。在圖7A的圖示中,作為一個示例,計算機920a、 920b、 920c、 920d、 920e等可以被認(rèn)為是客戶機,而計算機910a、 910b等可 以被認(rèn)為是服務(wù)器,其中服務(wù)器910a、 910b等維護隨后被復(fù)制到客戶計算機 920a、 920b、 920c、 920d、 920e等的數(shù)據(jù),然而任何計算機都可被認(rèn)為是客戶 機、服務(wù)器或兩者,取決于環(huán)境。任何這些計算設(shè)備可能正在處理數(shù)據(jù)或請求 服務(wù)或任務(wù),這些數(shù)據(jù)、服務(wù)或任務(wù)可能隱含本發(fā)明的QFX的各個實施例的 樹語法和轉(zhuǎn)換技術(shù)。
服務(wù)器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)等遠(yuǎn)程網(wǎng)絡(luò)或本地 網(wǎng)絡(luò)訪問的遠(yuǎn)程計算機系統(tǒng)??蛻魴C進程可以在第一計算機系統(tǒng)中活動,而服 務(wù)器進程可以在第二計算機系統(tǒng)中活動,它們通過通信介質(zhì)彼此通信,從而提 供分布式功能并允許多個客戶機利用服務(wù)器的信息收集能力。按照本發(fā)明的 QFX利用的任何軟件對象可跨多個計算設(shè)備或?qū)ο蠓植肌?br>
客戶機和服務(wù)器利用由協(xié)議層提供的功能來彼此通信。例如,超文本傳輸 協(xié)議(HTTP)是結(jié)合萬維網(wǎng)(WWW),即"Web"使用的常見協(xié)議。通常, 諸如網(wǎng)際協(xié)議(IP)地址或諸如統(tǒng)一資源定位器(URL)等其它引用的計算機 網(wǎng)絡(luò)地址可以用于彼此標(biāo)識服務(wù)器或客戶計算機。網(wǎng)絡(luò)地址可以被稱為URL 地址。可以通過通信介質(zhì)來提供通信,例如客戶機和服務(wù)器可以通過TCP/IP 連接來彼此耦合以進行大容量通信。
由此,圖9示出了其中可采用本發(fā)明的具有通過網(wǎng)絡(luò)/總線與客戶計算機 通信的服務(wù)器的示例性聯(lián)網(wǎng)或分布式環(huán)境。更詳細(xì)而言,根據(jù)本發(fā)明,多個服 務(wù)器910a、910b等經(jīng)由通信網(wǎng)絡(luò)/總線940互連,通信網(wǎng)絡(luò)/總線14可以是LAN、 WAN、內(nèi)聯(lián)網(wǎng)、GSM網(wǎng)絡(luò)、因特網(wǎng)等,它具有多個客戶機或遠(yuǎn)程計算設(shè)備920a、 920b、 920c、 9200d、 920e等,如便攜式計算機、手持式計算機、瘦客戶機、聯(lián)網(wǎng)設(shè)備或其它設(shè)備,如VCR、 TV、烤箱、燈、加熱器等等。因此構(gòu)想了, 本發(fā)明可應(yīng)用于期望根據(jù)本發(fā)明定義的Q框架編譯和執(zhí)行屬性化樹語法并轉(zhuǎn)
換成MFST的任何計算設(shè)備。
例如,在其中通信網(wǎng)絡(luò)/總線940是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器910a、 910b等可以是客戶機920a、 920b、 920c、 920d、 920e等通過諸如HTTP等多 種己知協(xié)議中的任一種與其通信的web服務(wù)器。服務(wù)器910a、 910b等也可擔(dān) 當(dāng)客戶機920a、 920b、 920c、 920d、 920e等,這是分布式計算環(huán)境的特性。
如上所述,通信可以是有線或無線的,或者在適當(dāng)時是兩者的組合??蛻?機設(shè)備920a、 920b、 920c、 920d、 920e等可以通過或不通過通信網(wǎng)絡(luò)/總線14 通信,并可具有與其相關(guān)聯(lián)的獨立通信。例如,在TV或VCR的情況下,可 以有或沒有其控制的網(wǎng)絡(luò)化方面。每一客戶計算機920a、 920b、 920c、 920d、 920e等以及服務(wù)器計算機910a、 910b等可以具備各種應(yīng)用程序模塊或?qū)ο?135a、 135b、 135c等,并具有對各種類型的存儲元件或?qū)ο蟮倪B接或訪問,在 這些存儲元件或?qū)ο笊峡蓛Υ嫖募驍?shù)據(jù)流,或者可向其下載、發(fā)送或遷移文 件或數(shù)據(jù)流的各部分。計算機910a、 910b、 920a、 920b、 920c、 920d、 920e 等中的任何一個或多個可負(fù)責(zé)維護并更新數(shù)據(jù)庫930或其它存儲元件,諸如用 于儲存根據(jù)本發(fā)明處理或保存的數(shù)據(jù)的數(shù)據(jù)庫或存儲器930。由此,本發(fā)明可 以用于具有可訪問計算機網(wǎng)絡(luò)/總線940并與其交互的客戶計算機920a、 920b、 920c、 920d、 920e等,以及可與客戶機計算機920a、 920b、 920c、 920d、 920e 等交互的服務(wù)器計算機910a、 910b等,以及其它類似的設(shè)備和數(shù)據(jù)庫930的 計算機網(wǎng)絡(luò)環(huán)境中。
示例性計算設(shè)備
如本文所述,本發(fā)明適用于可能期望應(yīng)用根據(jù)本發(fā)明定義的QFX技術(shù)的 任何設(shè)備。從而,應(yīng)當(dāng)理解,構(gòu)想了所有種類的手持式、便攜式和其它計算設(shè) 備和計算對象來用于本發(fā)明,即,在設(shè)備可實現(xiàn)表示狀態(tài)機的軟件進程或以其 它方式接收、處理或存儲數(shù)據(jù)的任何地方。因此,在下面的圖10中描述的以 下通用遠(yuǎn)程計算機僅是一個示例,且本發(fā)明可用具有網(wǎng)絡(luò)/總線互操作性和交互 的任何客戶機來實現(xiàn)。由此,本發(fā)明可在其中蘊含了極少或最小客戶機資源的 聯(lián)網(wǎng)的主存服務(wù)的環(huán)境,例如其中客戶機設(shè)備僅用作到網(wǎng)絡(luò)/總線的接口一如置于電器中的對象一的聯(lián)網(wǎng)環(huán)境中實現(xiàn)。
盡管并非所需,但本發(fā)明可以部分地經(jīng)由操作系統(tǒng)來實現(xiàn),以供設(shè)備或?qū)?象的服務(wù)開發(fā)者使用,和/或被包括在結(jié)合本發(fā)明的組件操作的應(yīng)用軟件中。軟 件可以在由諸如客戶機工作站、服務(wù)器或其它設(shè)備等一個或多個計算機執(zhí)行的 諸如程序模塊等計算機可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù)人員可 以理解,本發(fā)明可以用其它計算機系統(tǒng)配置和協(xié)議來實施。
圖10由此示出了其中可實現(xiàn)本發(fā)明的合適的計算系統(tǒng)環(huán)境1000a的一個 示例,但如以上清楚地描述的,計算系統(tǒng)環(huán)境1000a僅為用于介質(zhì)設(shè)備的合適 的計算環(huán)境的一個示例,并非對本發(fā)明的使用范圍或功能提出任何局限。也不 應(yīng)將計算系統(tǒng)1000a解釋為對示例性操作環(huán)境1000a中示出的任何組件或其組 合具有任何依賴性或需求。
參見圖10,用于實現(xiàn)本發(fā)明的示例性遠(yuǎn)程設(shè)備包括計算機1010a形式的 通用計算設(shè)備。計算機1010a的組件可以包括,但不限于,處理單元1020a、 系統(tǒng)存儲器1030a和將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元 1020a的系統(tǒng)總線1021a。系統(tǒng)總線1021a可以是幾種類型的總線結(jié)構(gòu)中的任 一種,包括存儲器總線或存儲控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu) 中的任一種的局部總線。
計算機1010a通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由 計算機1010a訪問的任何可用介質(zhì)。作為示例而非局限,計算機可讀介質(zhì)可以 包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機
可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易 失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不限于, RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、CDROM、數(shù)字多功能盤 (DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以 用來儲存所期望的信息并可由計算機1,010a訪問的任何其它介質(zhì)。通信介質(zhì)通 常以諸如載波或其它傳輸機制等己調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù) 結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳送介質(zhì)。
系統(tǒng)存儲器1030a可以包括諸如只讀存儲器(ROM)和/或隨機存取存儲器 (RAM)等易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。基本輸入/輸出系統(tǒng)(BIOS)可被存儲在存儲器1030a中,它包含幫助在諸如啟動期間在計算 機1010a內(nèi)元件之間傳遞信息的基本例程。存儲器1030a通常還包含處理單元 1020a可以立即訪問和/或目前正操作的數(shù)據(jù)和/或程序模塊。作為示例而非局 限,存儲器1030a還可以包括操作系統(tǒng)、應(yīng)用程序、其它程序模塊、和程序數(shù) 據(jù)。
計算機1010a也可以包括其它可移動/不可移動、易失性/非易失性計算機 存儲介質(zhì)。例如,計算機1010a可以包括對不可移動、非易失性磁介質(zhì)進行讀 寫的硬盤驅(qū)動器,對可移動、非易失性磁盤進行讀寫的磁盤驅(qū)動器,和/或?qū)χT 如CD-ROM或其它光學(xué)介質(zhì)等可移動、非易失性光盤進行讀寫的光盤驅(qū)動器。 可以在示例性操作環(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算 機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固 態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器通常由諸如接口等不可移動存儲器接 口連接至系統(tǒng)總線1021a,而磁盤驅(qū)動器或光盤驅(qū)動器通常由諸如接口等可移 動存儲器接口連接至系統(tǒng)總線1021a。
用戶可以通過輸入設(shè)備,如鍵盤和定點設(shè)備(通常指鼠標(biāo)、跟蹤球或觸摸 板)向計算機1010a輸入命令和信息。其他輸入設(shè)備可以包括話筒、操縱桿、 游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常由耦合至 系統(tǒng)總線1021a的用戶輸入1040a和相關(guān)聯(lián)的接口連接到處理單元1020a,但 是也可由諸如并行端口、游戲端口或通用串行總線(USB)之類的其它接口和 總線結(jié)構(gòu)連接。圖形子系統(tǒng)也可以被連接到系統(tǒng)總線1021a。監(jiān)視器或其它類 型的顯示設(shè)備也通過接口,如輸出接口 1050a連接至系統(tǒng)總線1021a,而輸出 接口 1050a又與視頻存儲器通信。除監(jiān)視器之外,計算機還可以包括其它外圍 輸出設(shè)備,如揚聲器和打印機,它們可以通過輸出接口 1050a連接。
計算機1010a可使用至諸如遠(yuǎn)程計算機1070a等的一個或多個遠(yuǎn)程計算機 的邏輯連接在網(wǎng)絡(luò)化或分布式環(huán)境中操作,遠(yuǎn)程計算機1070a又可以具有與設(shè) 備1010a不相同的媒體能力。遠(yuǎn)程計算機1070a可以是個人計算機、服務(wù)器、 路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點、或任何其它遠(yuǎn)程媒體消 費或傳輸設(shè)備,并且可以包括上面關(guān)于計算機1010a所描述的任何或全部元件。 圖IO所示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)等的網(wǎng)絡(luò)1071a,但也可以包括其它網(wǎng)絡(luò)/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計算 機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時,計算機1010a通過網(wǎng)絡(luò)接口或適配器連接 至LAN1071a。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機1010a通常包括通信組 件,諸如調(diào)制解調(diào)器或用于通過諸如因特網(wǎng)等的WAN建立通信的其它裝置。 諸如調(diào)制解調(diào)器等通信組件可以是內(nèi)置或外置的,它可以通過輸入1040a的用 戶輸入接口或其它適當(dāng)?shù)臋C制連接至系統(tǒng)總線1021a。在網(wǎng)絡(luò)化環(huán)境中,相對 于計算機1010a所描述的程序模塊或其部分可被儲存在遠(yuǎn)程存儲器存儲設(shè)備 中。可以理解,所示和所述的網(wǎng)絡(luò)連接是示例性的,且可以使用在計算機之間 建立通信鏈路的其它手段。
示例性分布計算體系結(jié)構(gòu)
鑒于個人計算和因特網(wǎng)的交匯,已經(jīng)開發(fā)且正在開發(fā)各種分布式計算框 架。個人和商業(yè)用戶同樣地?fù)碛杏糜趹?yīng)用程序和計算設(shè)備的無縫的互操作和啟 用web的接口 ,使得計算活動越來越面向web瀏覽器和網(wǎng)絡(luò)。
例如,MICROSOFT⑧的托管代碼平臺,即.NET包括服務(wù)器、諸如基于 web的數(shù)據(jù)存儲等構(gòu)件塊服務(wù)、以及可下載設(shè)備軟件。 一般而言,.NET平臺 提供(1)令整個范圍的計算設(shè)備共同工作并在所有設(shè)備上自動更新并同步用 戶信息的能力,(2)提高的網(wǎng)頁交互能力,通過大量使用XML而不是HTML 來實現(xiàn),(3)從用于各種應(yīng)用,如電子郵件,或軟件,如Office.NET的管理 的中央起點到用戶的具有產(chǎn)品和服務(wù)的定制訪問和傳送的特點的在線服務(wù), (4)中央化數(shù)據(jù)存儲,將增加對信息訪問以及用戶和設(shè)備間的信息同步的效 率和簡易性,(5)集成各種通信介質(zhì),如電子郵件、傳真和電話的能力,(6) 對開發(fā)員來說,創(chuàng)建可重復(fù)使用模塊的能力,借此提高生產(chǎn)力并降低編程錯誤 數(shù),以及(7)還有許多其它跨平臺和語言綜合特性。
盡管此處的某些示例性實施例是結(jié)合諸如應(yīng)用程序編程接口 (API)等駐 留在計算設(shè)備上的軟件來描述的,但本發(fā)明的一個或多個部分也可以通過操作 系統(tǒng)、"中間人"對象、控制對象、硬件、固件、中間語言指令或?qū)ο蟮葋?實現(xiàn),使根據(jù)本發(fā)明的QFX的實施例可以被包括在由諸如.NET代碼等托管代 碼啟用的所有語言和服務(wù)中,以及在其它分布式計算框架中,在其中得到支持或經(jīng)由它們來訪問。
有多種實現(xiàn)本發(fā)明的方法,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動程序代碼、操
作系統(tǒng)、控件、獨立或可下載軟件對象等,它們使得能夠使用本發(fā)明的QFX。 本發(fā)明從API (或其它軟件對象)的觀點以及從可實現(xiàn)根據(jù)本發(fā)明的QFX的 至少一部分的數(shù)據(jù)結(jié)構(gòu)、軟件或硬件對象的觀點構(gòu)想了對本發(fā)明的使用。由此, 此處描述的本發(fā)明的各種實現(xiàn)都可以具有完全采用硬件、部分采用硬件且部分 采用軟件、以及采用軟件的方面。
在此使用的詞語"示例性"意味著用作示例、實例或說明。為避免疑問,本 文公開的主體不受限于這樣的示例。此外,本文描述為"示例性"的任何方面 或設(shè)計不必解釋成優(yōu)于其它方面或設(shè)計或比其它方面或設(shè)計有利,它也不旨在 排除本領(lǐng)域的普通技術(shù)人員所知的等效示例性結(jié)構(gòu)和技術(shù)。而且,就術(shù)語"包 括"、"具有"、"包含"和其它類似的詞語在詳細(xì)描述或權(quán)利要求書中使用
而言,為避免疑問,這樣的術(shù)語旨在以類似于術(shù)語"包括"作為開放的過渡詞 的方式解釋而不排除任何附加或其它元素。
如上所述,盡管結(jié)合各種計算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了本發(fā)明的示例性 實施例,但基本概念可被應(yīng)用于其中期望包括MFST實現(xiàn)變換的任何計算設(shè)備 或系統(tǒng)。例如,本發(fā)明的算法和硬件實現(xiàn)可被應(yīng)用于計算設(shè)備的操作系統(tǒng),可 作為設(shè)備上的獨立對象、作為另一對象的一部分、作為可重復(fù)使用的控件、作 為可從服務(wù)器下載的對象、作為設(shè)備或?qū)ο蠛途W(wǎng)絡(luò)之間的"中間人"、作為分 布式對象、作為硬件、以存儲器、以上任何的組合等來提供。盡管此處選擇了 示例性編程語言、名稱和示例來表示各種選擇,但這些語言、名稱和示例不旨 在為限制性的。本領(lǐng)域的普通技術(shù)人員將認(rèn)識到,有多種方法來提供實現(xiàn)本發(fā) 明的各實施例所實現(xiàn)的相同、相似或等效的功能的目標(biāo)代碼和命名法。
如上所述,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時以兩者的 組合來實現(xiàn)。如在此所使用地,術(shù)語"組件"、"系統(tǒng)"等同樣指的是計算機 相關(guān)實體,或者是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組 件可以是但不限于是,在處理器上運行的進程、處理器、對象、可執(zhí)行碼、執(zhí) 行的線程、程序和/或計算機。作為說明,運行在計算機上的應(yīng)用程序和計算機 本身都可以是計算機組件。 一個或多個組件可以駐留在進程和/或執(zhí)行的線程內(nèi),并且組件可以位于一個計算機上和/或分布在兩個或更多的計算機之間。
由此,本發(fā)明的方法和裝置或其特定方面或部分可采取包含在諸如軟盤、
CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼
(即,指令)的形式,其中當(dāng)程序代碼被加載到諸如計算機等機器內(nèi)并由其執(zhí) 行時,該機器成為用于實現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計算機上執(zhí)行 的情況下,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性 和非易失性的存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出
設(shè)備??衫缤ㄟ^使用數(shù)據(jù)處理API、軟件對象等來實現(xiàn)或利用本發(fā)明的QFX
的一個或多個程序較佳地用高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn)以與 計算機系統(tǒng)通信。然而,如果需要,程序可以用匯編語言或機器語言來實現(xiàn)。
在任何情形中,語言可以是編譯的或解釋的語言,且與硬件實現(xiàn)相結(jié)合。
本發(fā)明的方法和裝置也可以經(jīng)由以通過某種傳輸介質(zhì)傳輸?shù)某绦虼a的 形式體現(xiàn)的通信來實現(xiàn),比如通過電線或電纜、通過光纖或經(jīng)由任何其它傳輸 形式,其中,當(dāng)程序代碼由諸如EPROM、門陣列、可編程邏輯器件(PLD)、 客戶計算機等機器接收、加載并執(zhí)行時,該機器成為用于實現(xiàn)本發(fā)明的裝置。 當(dāng)在通用處理器上實現(xiàn)時,程序代碼與處理器相結(jié)合來提供一種用于調(diào)用本發(fā) 明的功能的獨特裝置。另外,結(jié)合本發(fā)明使用的任何存儲技術(shù)總是可以是硬件 和軟件的組合。
此外,所公開的主題可以使用產(chǎn)生軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn) 編程和/或工程技術(shù)實現(xiàn)為用于控制基于計算機或處理器的設(shè)備以實現(xiàn)在此所 詳述的諸方面的系統(tǒng)、方法、裝置或制品。此處所用的術(shù)語"制品"(或作為 替換,"計算機程序產(chǎn)品")旨在涵蓋可從任何計算機可讀設(shè)備、載體或介質(zhì) 訪問的計算機程序。例如,計算機可讀介質(zhì)可以包括但不限于磁存儲設(shè)備(例 如,硬盤、軟盤、磁帶……)、光盤(例如,壓縮盤(CD)、數(shù)字通用盤(DVD)……)、 智能卡和閃存設(shè)備(例如,卡、棒)。另外知道,可以采用載波來承載計算機 可讀電子數(shù)據(jù),例如那些用于發(fā)送和接收電子郵件或用于訪問如因特網(wǎng)或局域 網(wǎng)(LAN)等網(wǎng)絡(luò)的數(shù)據(jù)。
已經(jīng)關(guān)于若干組件之間的交互描述了前述系統(tǒng)。應(yīng)該理解,這樣的系統(tǒng)和 組件可以包括那些組件或子組件,所指定組件或子組件中的一些和/或另外的組件,并根據(jù)前述的各種排列和組合。子組件也可以被實現(xiàn)為通信耦合至其它組 件而非被包括在父組件(分層)內(nèi)的組件。另外,應(yīng)注意到一個或多個組合可 被組合成提供聚集功能的單個組件,或被分成若干單獨的子組件,且諸如管理 層的任何一個或多個中間層可被設(shè)置成通信耦合到這樣的子組件以便提供集 成功能。此處描述的任何組件也可以與在此未具體描述但本領(lǐng)域的技術(shù)人員公 知的一個或多個其他組件交互。
考慮到以上描述的示例性系統(tǒng),參考圖5的流程圖將可以更好地理解依照 所公開的主題實現(xiàn)的方法。盡管出于說明簡單的目的,各方法被顯示和描述為 一系列框,但應(yīng)該理解和領(lǐng)會,所要求保護的主題不受框次序的限制,因為一 些框能夠以不同的次序和/或與在此描繪和描述的其它框同時發(fā)生,或以其它方 式提供等效的功能。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解, 可實現(xiàn)達成相同或類似結(jié)果的各種其它分支、流程路徑和塊次序。而且,并非 所有示出的框都是實現(xiàn)以下描述的方法所必需的。
此外,應(yīng)該明白以上公開的系統(tǒng)以及以下方法的不同部分可以包括或包含 人工智能或基于知識或規(guī)則的組件、子組件、進程、裝置、方法或機制(例如, 支持向量機、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯置信網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引 擎、分類器等)。這樣的組件和其它組件可以自動化執(zhí)行某些機制或進程,由 此使得QFX的各部分更為自適應(yīng)、高效及智能。
盡管已結(jié)合各個附圖的優(yōu)選實施方式對本發(fā)明進行了描述,但是可以理 解,可以使用其它類似的實施方式,或可以對所述實施方式進行修改或添加, 來實現(xiàn)本發(fā)明的相同功能而不背離本發(fā)明。例如,在諸如對等聯(lián)網(wǎng)環(huán)境等聯(lián)網(wǎng) 環(huán)境的上下文中描述了本發(fā)明的示例性網(wǎng)絡(luò)環(huán)境,但是本領(lǐng)域的技術(shù)人員將認(rèn) 識到,本發(fā)明不限于此,并且本申請中所描述的方法可應(yīng)用于任何計算設(shè)備或 環(huán)境,諸如游戲控制臺、手持式計算機、便攜式計算機等等,不論其是有線還 是無線的,并且該方法可應(yīng)用于經(jīng)由通信網(wǎng)絡(luò)連接并通過網(wǎng)絡(luò)交互的任意數(shù)量 的此類計算設(shè)備。此外,應(yīng)當(dāng)強調(diào),構(gòu)想了包括手持式設(shè)備操作系統(tǒng)和其它應(yīng) 用專用操作系統(tǒng)的各種計算機平臺,尤其是在無線聯(lián)網(wǎng)設(shè)備的數(shù)量持續(xù)增長 時。
盡管各示例性實施例涉及在特定編程語言構(gòu)造的上下文中利用本發(fā)明,但是本發(fā)明不限于此,而是可用任何語言實現(xiàn)并用于轉(zhuǎn)換包括動作的任何語法。 而且,本發(fā)明可以在多個處理芯片或設(shè)備中實現(xiàn)或跨多個處理芯片或設(shè)備實 現(xiàn),且存儲可以類似地跨多個設(shè)備來實現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個實 施例,而是應(yīng)該根據(jù)所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種用于將計算系統(tǒng)中指定至少一個樹結(jié)構(gòu)的至少一個數(shù)據(jù)結(jié)構(gòu)變換成至少一個模塊化有限狀態(tài)變換機(MFST)的方法,包括接收500指定表示包括用于定義有序和無序信息的語義的至少一個有限狀態(tài)變換機(FST)的至少一個樹結(jié)構(gòu)140a的至少一個數(shù)據(jù)結(jié)構(gòu);以及對由所述至少一個數(shù)據(jù)結(jié)構(gòu)140a表示的任何類型的有限狀態(tài)機(FSM)模型,將所述至少一個數(shù)據(jù)結(jié)構(gòu)140a變換510成至少一個MFST同時在所述至少一個MFST中保存所述至少一個數(shù)據(jù)結(jié)構(gòu)的所述有序和無序信息,其中所述變換包括對至少一個數(shù)據(jù)結(jié)構(gòu)執(zhí)行任何交、并和補運算。
2. 如權(quán)利要求1所述的方法,其特征在于,所述變換510包括用轉(zhuǎn)換語法 170變換所述至少一個數(shù)據(jù)結(jié)構(gòu)140a,所述轉(zhuǎn)換語法170不考慮所述至少一個 數(shù)據(jù)結(jié)構(gòu)140a所指定的所述至少一個樹結(jié)構(gòu)表示的FSM模型的類型而在所述 至少一個MFST中保存所述有序和無序信息。
3. 如權(quán)利要求1所述的方法,其特征在于,所述變換510包括對由至少一 個數(shù)據(jù)結(jié)構(gòu)140a表示的FST執(zhí)行至少一個控制流程分析算法,所述算法為任 何類型的表示保存所述至少一個數(shù)據(jù)結(jié)構(gòu)140a的有序和無序語義信息。
4. 如權(quán)利要求1所述的方法,其特征在于,所述變換510包括用預(yù)定義的 轉(zhuǎn)換語法170變換所述至少一個數(shù)據(jù)結(jié)構(gòu)140a,所述轉(zhuǎn)換語法170不考慮所述 至少一個數(shù)據(jù)結(jié)構(gòu)140a所指定的所述至少一個樹結(jié)構(gòu)表示的FSM模型的類型 而保存所述至少一個數(shù)據(jù)結(jié)構(gòu)140a的有序和無序嵌套信息兩者。
5. 如權(quán)利要求1所述的方法,其特征在于,所述接收500包括接收指定表示包括用于定義列表和集合模式信息的有序和無序語義的所述至少一個FST 的至少一個有向圖結(jié)構(gòu)的至少一個數(shù)據(jù)結(jié)構(gòu)140a。
6. 如權(quán)利要求4所述的方法,其特征在于,所述接收500包括接收指定表 示包括用于定義有序和無序信息的語義的所述至少一個FST的至少一個可擴 展標(biāo)記語言(XML)文檔的至少一個數(shù)據(jù)結(jié)構(gòu)140a。
7. 如權(quán)利要求1所述的方法,其特征在于,所述變換510包括對至少一個 數(shù)據(jù)結(jié)構(gòu)140a執(zhí)行空嵌套測試。
8. 如權(quán)利要求1所述的方法,其特征在于,所述變換510包括對至少兩個數(shù)據(jù)結(jié)構(gòu)執(zhí)行結(jié)構(gòu)兼容性測試,同時保存所述有序和無序信息。
9. 如權(quán)利要求1所述的方法,其特征在于,所述接收500包括接收指定至 少一個非確定性樹數(shù)據(jù)結(jié)構(gòu)的至少一個數(shù)據(jù)結(jié)構(gòu)140a,所述變換510包括將所 述至少一個數(shù)據(jù)結(jié)構(gòu)變換成確定性的MFST。
10. —種包括用于執(zhí)行如權(quán)利要求1所述的方法的計算機可執(zhí)行指令的 計算機可讀介質(zhì)。
11. 一種包括用于執(zhí)行如權(quán)利要求1所述的方法的裝置的計算設(shè)備。
12. —種用于在計算系統(tǒng)中將表示有限狀態(tài)變換機(FST)的有向圖數(shù) 據(jù)結(jié)構(gòu)變換成模塊化有限狀態(tài)變換機(MFST)的變換框架,包括用于在計算系統(tǒng)中存儲用于表示FST的各種類型的多個有向圖數(shù)據(jù)結(jié) 構(gòu)140a,包括所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a的有序和無序語義信息在內(nèi)的裝 置;以及基于預(yù)定義的樹語法170分析所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a,并將所 述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a變換成至少一個MFST同時保存所述多個有向圖 數(shù)據(jù)結(jié)構(gòu)140a的所述有序和無序語義信息的變換機150,其中所述變換機150 對所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a執(zhí)行任何交、補和并運算。
13. 如權(quán)利要求12所述的變換框架,其特征在于,所述變換機150對 由所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a表示的FST執(zhí)行至少一個控制流程分析算法, 所述算法跨任何類型的有向圖表示保存所述多個有向圖數(shù)據(jù)結(jié)構(gòu)的所述有序 和無序語義信息。
14. 如權(quán)利要求12所述的變換框架,其特征在于,所述變換機150包 括在變換所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a時執(zhí)行特定綁定處理的變換引擎180, 其中所述特定綁定處理包括在用于匹配所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a的模式 的模式匹配進程期間對所述有序和無序語義信息執(zhí)行綁定。
15. 如權(quán)利要求12所述的變換框架,其特征在于,所述變換機150內(nèi) 聯(lián)如由所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a中的一有向圖數(shù)據(jù)結(jié)構(gòu)所定義的至少一 個變換機定義,同時保存所述有序和無序語義信息。
16. 如權(quán)利要求12所述的變換框架,其特征在于,所述變換機150包括用于將所述至少一個數(shù)據(jù)結(jié)構(gòu)140a匹配到至少一個MFST,包括匹配包含 在所述至少一個數(shù)據(jù)結(jié)構(gòu)140a中的有序和無序嵌套信息兩者在內(nèi)的變換引擎 組件180。
17. 如權(quán)利要求16所述的變換框架,其特征在于,所述至少一個數(shù)據(jù) 結(jié)構(gòu)140a指定至少一個非確定性樹數(shù)據(jù)結(jié)構(gòu),且所述變換引擎組件180將所 述至少一個數(shù)據(jù)結(jié)構(gòu)140a變換成確定性的MFST。
18. 如權(quán)利要求12所述的變換框架,其特征在于,還包括 用于接收所述多個有向圖數(shù)據(jù)結(jié)構(gòu)"Oa中的一有向圖數(shù)據(jù)結(jié)構(gòu)的接口II,它根據(jù)所述預(yù)定義樹語法170定義并轉(zhuǎn)換有向圖數(shù)據(jù)結(jié)構(gòu)140a。
19. 一種用于在計算系統(tǒng)中將表示有限狀態(tài)變換機(FST)的有向圖數(shù) 據(jù)結(jié)構(gòu)變換成模塊化有限狀態(tài)變換機(MFST)的編譯器,包括表示用于計算系統(tǒng)中進程的FST的多個有向圖數(shù)據(jù)結(jié)構(gòu)140a,包括定 義所述進程的有序列表和無序集合的有序和無序信息;以及變換引擎180,它基于定義的樹語法170分析所述多個有向圖數(shù)據(jù)結(jié)構(gòu) 140a,并將所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a變換成至少一個MFST同時保存所 述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a的所述有序和無序信息,其中所述變換引擎180 對所述多個有向圖數(shù)據(jù)結(jié)構(gòu)140a執(zhí)行任何交、補和并運算以生成所述至少一 個MFST。
20. 如權(quán)利要求19所述的編譯器,其特征在于,所述多個有向圖數(shù)據(jù) 結(jié)構(gòu)140a是根據(jù)用于表示有序和無序信息的各不相同的FST模型類型表示的。
全文摘要
提供Q框架,簡稱為QFX,用于以跨一組不同的FST表示類型實現(xiàn)對在其表示中支持動作信息的FST的動作語義的保存的通用方式執(zhí)行高效樹變換。QFX也允許在執(zhí)行樹變換的同時保存有序和無序嵌套信息、支持將非確定性數(shù)據(jù)結(jié)構(gòu)變換成確定性數(shù)據(jù)結(jié)構(gòu),并允許對含有動作語義的機器進行交運算。
文檔編號G06F7/76GK101517531SQ200780034283
公開日2009年8月26日 申請日期2007年9月14日 優(yōu)先權(quán)日2006年9月15日
發(fā)明者D·E·蘭沃西, G·M·德拉-利貝拉, S·E·盧科 申請人:微軟公司