模块化有限状态变换机的变换的制作方法

文档序号:6455910阅读:258来源:国知局
专利名称:模块化有限状态变换机的变换的制作方法
技术领域
本发明一般针对诸如有限状态变换机等有限状态自动机,尤其涉及其变换。
祖旦 冃豕
作为一般背景,也被称为有限状态自动机(FSA)的有限状态机(FSM) 是由状态、转移和动作组成的系统的行为的模型。FSM或FSA可使用状态图、 状态转移图、状态表、标记有向图、树等按照各种概念方式表示,它们保存构 成该机器即自动机的状态、转移和动作的关系。存在不同种类的FSM或FSA 及其等效方式,以及其中某些的各种已知转换。
目前,存在某些图变换机和树变换机,它们实现例如对某些类型的有向图 数据结构变换由FST建模的一组系统,以形成新的一个或一组FST,例如新的 有向图数据结构的某些方面,然而,这样的系统由于各种原因而受限。例如, 可扩展样式表语言变换(XSLT)是用于XML文档变换的基于XML的语言。 当用于变换其他XML文档时,该文档不被改变;相反,基于现有的XML文 档的内容创建新文档。新文档可由处理器以标准XML句法或按照诸如HTML 或纯文本等另一格式串行化(输出)。XSLT通常用于在不同XML模式之间 转换数据,或者将XML数据转换成网页或PDF文档。
实质上,XSLT允许创建描述其他XML文档的变换的XML文档,其又 可被转换成不同的格式。然而,XSLT无法考虑到可用FST表示的动作语义。 在这一方面,动作可能是"当处于预定义状态时, 一旦识别某一信息,例如名 字,即执行某一动作"。然而,就可为FST定义这样的任意动作而言,XSLT 无法处理作为其变换能力一部分的对这样的任意动作的调用。此外,XSLT无 法在机器上执行补、交和并运算的全部。
而且,诸如XSLT等现有变换也无法匹配和构成具有诸如有序和无序嵌套 (例如,被表示为树结构)的有序和无序分层信息两者的FSM。尽管,在某些环境中,存在当变换树时能够处理仅保存有序信息的某些系统,且存在当变换 时能够处理仅保存无序信息的某些系统,但是XSLT或者任何已知的系统都不 包括能跨有向图或树结构保存有序和无序嵌套两者的变换能力。现有技术的有 限状态变换机的变换中的这些和其他缺陷在以下更详细地阐述的本发明的各 种示例性非限制性实施例的描述后将变得显而易见。 概述
考虑现有技术的上述缺陷,本发明提供用于对FST执行高效树变换,例
如交、并、补等的一般框架,该框架跨一组不同类型的表示为在其表示中支持
动作信息的FST跨变换运算保存动作语义。用于对FST执行高效树变换的框 架也能够在执行树变换的同时保存有序和无序的嵌套信息,且能够支持非确定 性数据结构到确定性数据结构的变换。
在一个实施例中,一种方法用于在计算机系统中将指定树结构的数据结构 变换成模块化有限状态变换机(MFST)。该方法包括接收指定表示包括用于 定义动作信息的动作语义的有限状态变换机(FST)的树结构的数据结构。对 由数据结构表示的任何类型的有限状态机(FSM)模型,该方法包括将数据结 构变换成MFST同时在MFST中保存数据结构的动作信息的能力,其中变换包 括对数据结构执行任何交、并和补运算或可归约成任何交、并和补运算的任何 运算。在本发明的另一方面中,可根据结果FSM判定得到的FSM是否接受非 空输入。
此处提供了简化概述以帮助对以下更详细的描述和附图中的示例性、非限 定性实施例的各方面的基本或大体的理解。然而,本概述并不旨在作为详尽的 或穷尽的概观。本概述的唯一目的是以简化的形式来介绍与本发明的各种示例 性、非限定性的实施例相关的一些高层概念,作为以下更为详细的描述的序言。
附图简述
将参考附图进一步描述本发明的用于变换模块化有限状态变换机的树语 法的技术及其相关联的过程,附图中


图1A示出了显示采用由本发明提供的一般变换框架变换FST以保存动作 语义的示例性过程的示例性、非限定性流程图1B示出了显示采用由本发明提供的一般变换框架变换FST以保存动作语义的示例性过程的示例性、非限定性框图1C示出了显示用于根据本发明变换FST的示例性框架和变换引擎的示
例性、非限定性框图2A示出了结合本发明的变换引擎提供的示例性接口;
图2B和2C分别示出了根据本发明的实施例提供的PushEnvironment (推
入环境)和PopEnvironment (弹出环境)方法的示例性操作。
图2D示出了结合本发明的变换引擎提供的另一示例性接口;
图2E列出了如在由本发明提供的变换框架中实现的示例性、非限定性e
闭包算法;
图2F示出了如由本发明提供的变换框架中实现的容纳动作的子集构造技 术的修改;
图3A示出了根据本发明定义的转换范例的增强集的动作正则表达式 (REGEX)范例,即ar范例的示例性转换;
图3B示出了根据本发明定义的转换范例的增强集的绑定嵌套范例,即x : [7]范例的示例性转换;图3C示出了根据本发明定义的转换范例的增强集的绑定嵌套重复范例, 即;c:m^范例的示例性转换;
图3D示出了根据本发明定义的转换范例的增强集的;c : (T)范例的示例性
转换;
图3E示出了根据本发明定义的转换范例的增强集的;c : r/ e/范例,即使 用调用的扩充的示例性转换;
图3F示出了根据本发明定义的转换范例的增强集的;c: 7^e,1+|7范例,即 使用调用的扩充的示例性转换;
图4A和4B分别在概念上示出有序(或列表)模式和无序(或集合)模 式,结合这些模式本发明的QFX用于跨FST的变换保存有序和无序嵌套信息 两者;
图5A示出了显示采用由本发明提供的一般变换框架变换FST以保存有序 和/或无序信息的示例性过程的示例性、非限定性流程图; ,
图5B示出了显示采用由本发明提供的一般变换框架变换FST以保存有序和/或无序信息的示例性过程的示例性、非限定性框图5C到5L示出了根据本发明在存在有序或标记信息的情况下对状态机 的变换的示例性、非限定性的各方面;
图6A示出了根据本发明的QFX的示例性有限状态变换机;
图6B到6C分别示出了表示示例性有序嵌套和无序嵌套的树数据结构, 结合这些嵌套本发明的QFX用于保存有序和无序嵌套信息两者;
图7A示出了根据本发明将FSM示例性建模成状态转移表作为示例性状 态机数据结构;
图7B示出了根据本发明将FSM示例性建模成状态表作为示例性状态机 数据结构;
图8A示出了将FSM示例性建模成状态转移图8B示出了根据本发明将Moore模型示例表示成示例性类型的状态机数 据结构的变换机;
图8C示出了根据本发明将Mealy模型示例表示成示例性类型的状态机数 据结构的变换机;
图9是表示其中可实现本发明的示例性、非限定性网络化环境的框图; 图IO是表示其中可实现本发明的示例性、非限定性计算系统或操作环境 的框图。
详细描述
如背景中所述,用于变换例如往往在计算存储器中表示的标记有向图等 FST和树数据结构的当前框架,对于在跨所有类型的FST变换时保存某些类型 的信息而言不够通用。例如,当前框架无法跨许多类型的FST保存某些FST 的动作语义或由FST表示的有序和无序嵌套信息两者。
从而,本发明提供此处被称为Q框架(即QFX)的一般框架,用于执行 实现对在其表示中支持动作信息的FST保存动作语义的高效树变换。用于执行
本发明的高效树变换的Q框架也能够在执行其高效树变换的同时保存有序和 无序嵌套信息。如根据以下描述将理解地,QFX也允许各种其他新颖的方面,
涉及所定义树语法和相应转换的变换能力、变换机图、变换引擎和变换引擎执 行的操作、转换范例以及包括变量重命名的确定化(determinization),如将在以下更详细描述。在本发明的一个实施例中,本发明对树表示或树表示的集合 启用至少交、并、补和空测试变换。
作为进一步的介绍,模块化有限状态变换机(MFST)是实现变换的状态
机。具体地,MFST是扩充了被称为"动作"的程序片段的MFA。常见的动作 包括根据存储在环境中的其他对象来构造对象、绑定环境内的变量以及在模式 匹配期间执行谓词。
就此方面,在高层,本发明的Q框架(QFX)允许程序员定义具有动作 的正则树语法并将这些语法转换成MFST。 QFX支持使用任何域专用语言 (DSL)来定义动作。此外,QFX提供对变量绑定动作的特殊支持,产生被称 为属性化树语法的一种树语法。本发明的以下示例性、非限定性实现描述QFX 如何能够编译和执行属性化树语法。
就此方面,本发明的编译方法因多个原因而是有利的。该编译方法经由优 化和其他高性能方法提供对高性能变换的支持。该编译技术也允许对运行时组 件的简化,使得可容易地产生简单变换机。如将在以下示例性、非限定性详细 描述,此处所述的编译技术也提供一组清楚的语义。就此方面,本发明的编译 方法使地程序员能够容易地推理树语法的语义,包括组合(composition)和侧 放作用(side effect)。
一般而言,如图1A的流程图所示,在100本发明在计算系统中启用用于 接收具有动作语义信息的各种类型的有限状态变换机(FST)数据结构的一般 框架,然后在105将框架的变换引擎应用于FST。然后,在110,根据任何类 型的FST表示的预定义树语法进行FST的分析和变换,如将在以下更详细描 述的。结果,在115, FST被变换以生成MFST,这保存FST的动作信息等, 例如在对两个或多个FST执行任何交、补和并运算的同时保存有序和无序嵌套 信息,并允许将非确定性FST变换成确定性结果。
图1B是大体对应于示出本发明的树语法所允许的一方面的以上过程的框 图。变换框架125接收包括动作语义的一个或多个MFST 120,根据任何交、 并和补变换运算(和/或其他布尔运算符,带有组合)变换MFST,并将动作语 义信息保存在输出130中。
图1C示出了显示用于根据本发明变换FST的示例性框架和变换引擎的示例性、非限定性框图。如图所示,在计算系统中可在各个存储元件140a到140n 中找到各种有限状态机表示,在计算环境中具有用于与根据本发明提供的Q框 架150交互的处理器P。 一般而言,Q框架150经由用于变换和生成MFST 190 的变换引擎180接收有限状态机表示140a到140n的子集。变换参考属性化树 语法170对有限状态机表示140a到140n的子集执行分析160,以便确定如何 最佳地将有限状态机表示140a到140n的子集变换到MFST 190。也在计算环 境中设置接口 II,用于接收和定义基于并用于预定义的树语法170的有向图数 据结构。
因此,在各个非限定性实施例中,本发明允许在计算系统中将树数据结构 变换成模块化有限状态变换机(MFST)。表示FSM (例如FST)的树数据结 构包括定义关于通过变换过程保存的FSM的动作信息的动作语义。在一个实 施例中,对由树数据结构表示的任何类型的FSM模型,例如有向图数据结构、 XML文档等,本发明将树数据结构变换成MFST并同时保存动作信息。可扩 展、预定义转换语法由无论由树数据结构表示的FSM模型的类型是什么都保 存动作信息、保存树数据结构的有序和无序嵌套信息两者以及将非确定性数据 结构变换成确定性MFST的变换引擎实现。有利地,本发明可处理FSM类型 的补、交和并作为变换过程的一部分。
在其它实施例中,本发明包括Q框架(QFX),它包括用于执行有向图 到模块化有限状态变换机(MFST)的变换的组件和软件,包括在计算系统中 分析任何类型的有向图数据结构并基于分析将有向图数据结构变换成MFST 同时保存有向图数据结构的动作语义的能力。QFX以跨任何类型的有向图表示 保存有向图数据结构的动作语义信息的方式对由有向图数据结构表示的有限 状态机(FSM)执行控制流程分析算法。
此外,QFX包括结合变换有向图数据结构执行专用的绑定处理的变换引 擎。专用绑定处理包括在模式匹配期间对动作语义信息执行绑定。而且,变换 包括内联如由向图数据结构中的一有向图数据结构所定义的至少一个变换机 定义的能力。而且,变换包括将有向图数据结构的变量绑定编译到现有激活记 录中的槽,还包括对由有向图数据结构表示的有限状态机(FSM)的寄存器分 析。本发明定义的、实现本发明的以上效果和优点的语法可经由诸如C存接口等描述包括动作语义信息的有向图数据结构的软件接口实现。
此外,在各个实施例中,本发明实现采用变量绑定的词汇分析。而且, QFX是可扩展的,提供与不同的变换供应商的高效互操作性。另外,本发明实 现对编译和执行性能之间的折衷的控制,即实现可在不采用昂贵编译的情形解 释模式以及编译特定模式以供重复使用。最后,运行时组件可通过提供可变粒 度的继续点来参与QFX调度规程,从而允许使用同一机制提供单个或多个结
以下表I中简化的树语法句法是可结合根据本发明的编译过程使用的示例 性、非限定性模型。
树语法 一定义+
定义 一正则表达式名'='选择
选择 一规则(,I'规则)* (或)
规则一动作 规则条款+ (动作正则表达式)
规则条款 一嵌套正则表达式动作? (正则表达式动
作)
嵌套正则表达式
(基本) (通配符)
引用
—基本符号 变量绑定 通配符 (引用)
嵌套正则表达式嵌套正则表达式 (序列)
变量绑定 T嵌套正则表达式,]'(绑定嵌套)
变量绑定?,(,嵌套正则表达式,),(绑定组) 嵌套正则表达式(,+' I ,*, I' ') (重复) 嵌套正则表达式'与'嵌套正则表达式 (与) 引用一变量绑定 正则表达式名(绑定引用)
变量绑定一变量''
表I-简化树语法句法
在以上语法中,可应用的示例性运算法优先顺序是重复>绑定>序列>与
>或。在以下描述中,X用于表示变量;6用于表示基本符号(类型或基本类型
的值);r用于表示MFST; cc用于表示动作;而ri e/用于表示对r的引用。参考正则表达式转换成NFA的现有技术并参考NFA的确定化,可例如在 Addison-Wesley出版社1986年出版的Aho等人的"Compilers: Principles, Techniques and Tools (编译器原理、技术和工具)"或Addison-Wesley出版 社2000年出版的Hopcroft等人的"Introduction to Automata Theory, Language and Computation (自动机理论、语言和计算的介绍)"中找到这样的转换技术 的概观。作为现有技术的改进,根据QFX,经由本发明的技术定义的正则树语 法可用对MFST的动作扩充。
而且,在Aho等人的文章中讨论的转换支持根据以上语法覆盖以下范例 或、与、基本、序列、重复和引用;然而,为了根据本发明处理(1)动作、
(2)嵌套以及(3)变量绑定,对在下表II中示出的以下附加范例需要转换 a r (动作正则表达式)
ra (正则表达式动作)
x : [7] (绑定嵌套) ;c: [7]*l+|7 (绑定嵌套重复) x : (绑定组) x : (7)*1+|7 (绑定组重复) x:r^/ (绑定引用) x:rRef^7 (绑定引用重复)
表II-由QFX处理的转换范例的增强集
动作正则表达式和正则表达式动作范例处理具有一般动作的树语法的编 译。绑定引用、绑定组、绑定嵌套、绑定引用重复、绑定组重复以及绑定嵌套 重复范例处理变量绑定的编译。绑定嵌套范例还将正则表达式扩展成嵌套正则
表达式o
尽管未在表I的简化树语法句法中示出,但根据本发明的非终止定义可具 有正则参数和类型参数。在一个实施例中,编译器将正则参数作为继承属性处 理,并使用绑定应用和绑定应用重复转换处理类型参数。
根据本发明变换成MFST可使用定义MFST的状态机图以示例性方式描 述。在示意图中,转移被如下标记6/a,其中6是所消费的输入符号,而ct 是所执行的动作。e/a表示不消费输入但执行某种动作的转移。这类转移被称为动作转移。在执行变换机时,在本发明的一个实施例中,实现最大行进策略
(maximal progress policy),它向自 一状态的动作转移分派低于自该状态的所
有输入消费转移的优先级。在示意图中,特殊符号'['以及']'分别表示输入集合 的开始和结束。变量绑定被写成1=表达式,并应用于变换机的当前环境。
对重复运算符,即'+'、 '*'、和' ',结果的集合使用列表累积,但可推广 该机制以覆盖将结果累积成任何集合类型,例如通过使用相应的联接运算符。
根据本发明的各个实施例,按以下两种方式扩充绑定引用和绑定应用重复
范例内联和调用。内联扩充以空间交换时间,因此在本发明的一个非限定性
的实现中,当确定化MFST时内联扩充是优选的。 一般,调用扩充在三种情况 中使用。第一种情况是当编译以便解释时。在这种情况中,编译器不确定化 MFST,并将所有的引用扩充为调用。第二种情况是递归。例如,如果T Ref 引用了起始符号,则编译器将引用扩充为调用。第三种情况是扩展。如果TRef 引用了不透明的MFST,则编译器将引用扩充成调用。
本发明的编译器为称为变换引擎(XE)的虚拟机将树语法转换成指令。 XE支持以下(1)变换机的定义和操作,(2)控制转移到其它变换引擎实 例以及(3)对环境的管理和访问。
关于第一类别,用于保存和解释状态机定义的技术是已知的。从而,以下 描述的是用于实现第二和第三指令类别的示例性、非限定性方法转移和管理。 根据本发明,这些指令被定义为一对接口中的方法。编译器不直接生成对这些 接口的调用;相反,编译器生成由XE实现解释的XE指令。
根据本发明提供的接口 XEControlInstructions (控制指令)在图2A的示例 性伪代码200中示出。XEControlInstructions接口 200令当前XE实例作为隐式 的操作数,即XEControlInstructions接口 200的"该指针"。
在QFX的示例性实施例中提供的Mark (标记)方法在标记栈上的输入项 中记录当前位置。Yield (产生)方法从标记栈弹出标记M,并返回输入项在 M与当前位置之间的部分。在一个实施例中,QFX经由遍历供应商接口间接 实现这些方法。这样的方法有利地将项表示和遍历与项变换分开。遍历供应商 因此可通过将QFX变换框架应用于任何特定的数据表示来实现遍历。
根据本发明提供的Call (调用)方法创建新环境E,并在E中保存continuation (延续)禾B callingEnvironment (调用环境)(见例如图2A的 XEControlInstructions接口 200) 。 Call方法然后返回将控制转移给target (目 标)的continuation Call方法也调用Mark方法以保存当前输入位置。Return
(返回)方法逆转该操作,并用于使用Yield方法将所匹配的项目保存在当前 环境(E)中E.term=Yield()。然后,Return方法在变量callingEnvironment. result
(调用环境的结果)中存储E;最后,Return方法返回continuation。当被调用 时,continuation将当前环境设置成callingEnvironment,并从调用状态继续。
NewEnvironment (新建环境)方法根据本发明创建新环境。此外,图2B 和2C的示例性、非限定性伪代码210和伪代码220分别概述了 PushEnvironment 和PopEnvironment方法的操作。
PushEnvironment方法在内部环境栈上保存当前环境,并创建例如名为 tempEnv (临时环境)的新环境。PushEnvironment然后将tempEnv绑定到 variableName (变量名),将当前环境设置成tempEnv,并调用Mark来记录当 前输入位置。
PopEnvironment方法在变量"term (项)"中记录自前一 Mark调用以来 匹配的子项。PopEnvironment然后从环境栈中还原当前环境。P叩Environment 不保存弹出的环境,因为对PushEnvironment的相应调用已绑定所弹出的环境。
另外,Exec (执行)方法根据本发明执行动作。在QFX的示例性实现中, ActionRefernce (动作引用)是对应于方法指针的单独保存和加载的表的表索
根据本发明提供的XEEnvironmentlnstructions (环境指令)接口在图2D 的示例性伪代码230中示出。XEEnvironmentlnstructions接口 230令环境实例 为显式的操作数,即XEEnvironmentlnstructions接口 230的"该指针"。
ChildEnv (子环境)方法创建其父亲为该指针的"该环境"的新嵌套环境。 Bind (绑定)方法将变量绑定到值,如果绑定成功则返回真。在示例性、非限 定性实施例中,如果variableName具有当前绑定,则Lookup (查找)方法将 值设置成该绑定并返回真。否则,它返回假。
本发明的变换引擎(XE)的操作支持向状态转移分派优先级。编译器通 过对每一状态上可能的转移定序而解决因模式之间的选择引起的歧义。在一个非限定性实施例中,对正常输入的所有转移优先于通配符转移,而后者优先于 动作转移。而且,在这些优先级组中,程序员可任选地向特定转移分派优先级。 XE实例可通过支持其中它们使用所有适用的转移以从一状态继续并按优 先级次序对延续部分排队的模式来解决多个结果的生成。
图3A示出了根据本发明定义的转换范例的增强集的aT范例的示例性转 换。更具体地,图3A示出了动作正则表达式范例的转换。该转换是嵌套正则
表达式序列范例的转换的应用。正则表达式动作范例未示出,因为它是对序列
范例的直接应用。在示意图中,圆圈SC1 、 SC2和SC3表示起始状态,圆圈IC1 、 IC2和IC3表示中间状态,而双圆圈DC1、 DC2和DC3表示接受状态。
图3B示出了绑定嵌套范例x : [T]的示例性转换。在图3B中,方法 PushEnvironment和PopEnvironment被分别缩写成PushEnv和PopEnv。起始状 态SC4、中间状态IS3和IS4以及接受状态DC4示出了图3B定义的机器的不 同状态。在读取[之后,机器创建新环境E,并将其绑定至x。机器然后推入当 前环境C,并令E为当前环境。机器也标记当前输入位置。然后,机器执行T, 绑定E中的变量。在T执行期间,变量绑定在E中累积。机器然后在E.term (环境项)中存储[T]匹配的项,并还原C作为当前环境。
图3C示出了绑定嵌套重复范例x : [rri+i 的示例性转换。图3C示出了 编译器如何转换带有重复的嵌套正则表达式。起始状态SC5、中间状态IS5、 IS6、 IS7和IS8以及接受状态DC5示出了图3C定义的机器的不同状态。可见, 由状态IS5、 IS6、 IS7和IS8状态定义的变换机的内在部分与图3B中的机器相 同。在该机器周围的是容器状态机,包括起始状态SC5和接受状态DC5。容 器机器的目标在于累积环境作为绑定至变量x的列表。
就此方面,变换机创建空列表并将其绑定至x。接着,变换机将执行a[T] 的结果追加到x。执行和追加步骤通过标记为"对'*'和' '使用该弧"的正向e 转移而可任选地呈现。执行和追加步骤通过遍历标记为"对'*'和'+'使用该弧" 的反向e转移而可任选地重复。
图3D示出了 x : (T)范例的示例性转换。起始状态SC6、中间状态IS9和 IS10以及接受状态DC6示出了图3D定义的机器的不同状态。图3D示出了与 图3B的绑定嵌套范例的变换机类似的变换机,除了图3D中进出T的转移不消费输入符号。
图3E示出了x:TRef范例的示例性转换,即使用调用扩充。图3E定义 了包括起始状态SC7、中间状态IS11和接受状态DC7的机器,并示出了对扩 充x:TRef的调用策略的使用。第一转移执行了调用指令Call(T),这是以下示 例性、非限定性伪代码的简写
Call(T, CurrentContinuation (当前延续),CurrentEnvironment (当前环境)) 调用指针处的CurrentContinuation是转移箭头尾部的中间状态ISll。所调 用的变换机在变量结果中返回其环境。最后,进行调用的变换机将结果绑定至
图3F示出了x:TRePI+l 范例的示例性转换,即使用调用扩充。图3F定 义了包括起始状态SC8、中间状态IS12和IS13以及接受状态DC8的机器,并 示出了应用于调用的重复容器。该变换机类似于图3C的变换机,采用对T的 调用作为内在变换机以代替T的内联扩充。
在图3A到3F中没有描述的转换范例是绑定组重复范例和绑定引用范例 的内联版本。绑定组重复组合了图3F的重复容器与图3D中所示的绑定组变换 器。另外,绑定引用和绑定重复范例的内联版本分别与绑定组和绑定组重复范 例相同。
根据本发明,确定化描述如何制定子集构造技术以虑及可能具有动作的转 移。根据本发明,允许动作与转移和状态两者的关联。尽管可仅采用对转移的 动作来构造确定性变换机,但该选择令算法更为复杂,而高效地为状态和转移 两者存储动作是直接的。
简化某些细节,图2E列出了如在QFX中实现的示例性、非限定性e闭包 算法,艮卩State〈T〉.EClosure+。扩充该方法以累积对e转移的动作。图2E的 示例性伪代码240中标记为(A1)和(A2)的行在列表"actions (动作)"中保存 在e闭包构造期间遍历的对epsilon (e)转移的所有动作。总的确定化算法将 这些所保存的动作转移到自e闭包构造的确定性有限状态变换机(DFST)状 态。
图2F示出了如按照QFX中的示例性方式所实现的被修改以容纳动作的子 集构造,即NFA〈T〉.SubsetConstmction。修改并添加图2F的示例性伪代码250标签(B1)到(B6)的标记行以容纳动作。行(B1)和(B2)找到源状态(src)具有对 符号的转移的所有状态;这些行也在symActions (符号动作)中累积每一转移 的动作。行(B3)和(B4)执行e转移的类似功能。最后,行(B5)将symActions添 加到src与dst (目的)状态之间的DFST转移,且行(B6)将epsActions "云力 作)添加到src状态。这些动作然后在完成到src的转移之后执行。在一个实 施例中,这些算法假定动作除了在当前环境中绑定变量之外不会有侧放作用。 总体上,有利地,根据本发明的用于确定化的该方法实现以下保证
1. 如果一对动作al和a2是同一产生的元素,则动作al和a2按词汇次 序调用;
2. 如果动作al是产生pl的一部分,而动作a2是产生p2的一部分,pl # p2,则变换机将调用al或a2中的任一个。变换机仅在pl和p2共享前缀 pre且pre包含pl中的al且户w包含p2中的a2的情况下调用这两个动作;以 及
3. 在语法的起始定义内,每一产生的最后动作具有侧放作用。在一个实 施例中,变换机不会运行该动作,直到所有其它动作均完成。
在这一方面,属性化树语法允许程序员利用以上保证。使用属性语法,程 序员可将所有的动作表达为当前环境内的变量绑定。这样的动作可采取两种形 式之一1:7或1= ;^^"式,其中^^式可从当前环境读取值或调用代码来计 算值。只要表达式执行的代码不引入次序依赖关系,执行树语法的结果就是确 定性的。
程序员可使用属性语法来推迟侧放作用,直到明确地该侧放作用应被调 用。例如,为了遍历树打印文本,程序员可使用属性将文本收集成串,然后根 据与树语法起始符号相关联的最后动作打印该串。程序员也可通过使打印动作 遵循明确的非终止定义而选择"在运行时"打印子树。
对于根据本发明的示例性、非限定性实施例的变量重命名,为确保变量绑 定动作的独立性,编译器重命名变量,使得MFST中绑定的每一变量是唯一的。 如果编译器也为给定动作生成代码,则编译器也重命名a中的变量。如果代码 块B对于编译器是不透明的,则编译器安排向B传递间接通过原始变量名更 新后的名字来査找其原始名字的环境。可任选地,可通过执行活动范围分析和令若干原始变量共享同一更新后的 名字来优化变量重命名。而且,变换机性能可通过使用编译器确定的偏移量而 将变量引用实现为数组访问来改进。
从而,在一个方面中,本发明提供用于执行高效树变换的一般框架,该变
换跨一组不同的FST表示实现对在其表示中支持动作信息的FST的动作语义 的保存。可对FST执行任何交、并和补变换运算以及带有组合的其它布尔运算 符,同时保存动作语义。
此外,如以上在背景中所提及地,在有限的环境下,存在可跨树变换保存 有序嵌套信息的某些系统以及可跨树变换保存无序嵌套信息的某些系统,但尚
不存在可跨例如交、并、补等树变换保存有序和无序树信息两者的系统。从而, 在各个非限定性实施例中,用于执行高效树变换的框架还在执行FST的树变换 的同时保存有序和无序嵌套信息。
有序和无序信息之间的区别在图4A和4B中概念性示出。图4A示出了也 被称为列表模式的有序模式,它要求红、然后绿、然后蓝、然后再红的序列以 便匹配模式。从而,在模式匹配意义上,考虑了模式元素出现的次序。图4B 示出了也被称为集合模式的无序模式。图4B的集合模式示出了与图4A的列 表模式相同的元素,但这次没有任何次序。图4B的集合模式因此表示了以任 何次序的两个红、 一个绿和一个蓝的集合。当进行模式匹配时,考虑的是元素 在集合中的出现,即元素是否出现在两个树中,而非元素以何种次序出现。
计算系统中列表模式匹配情形的实例可以有口令的输入,其中口令是数字
的顺序集合。由于为口令输入的每一字符必须以特定次序输入以便匹配为该用 户存储在系统中的正确口令,口令匹配情形将基于具有有序信息的树结构匹配 模式。
计算系统中集合模式匹配情形的示例有在文件系统中搜索一组指定的文 件,例如Pic一Amy、 Pic—Greg、 Pic—Neyda。当搜索这些图片出现的文件夹时, 匹配的是它们在文件夹中的出现而非它们以何种次序出现。换言之,搜索情形 中的用户仅关注找到具有这些文件中的每一个的文件夹,而图片在系统中存储 的次序对用户而言是不重要的。集合模式匹配情形的另一示例是在数据库中一 起找到某一名、中间名和姓,结果不依赖于数据是被存储为"姓、名、中间名"、"名、中间名、姓"还是"名、姓、中间名"。这三者全部以任何次序的任何 出现都满足该数据库査询。
根据本发明的框架,可对MFST执行变换同时保存由树数据结构表示的有
序和无序信息两者,包括任何交、并和补变换。因此可对组合关于树的孩子的 集合和列表假设的模式执行变换。因此,嵌套在树结构的节点中的有序或无序 信息均跨变换保存。
如图5A的流程图所示,在500本发明在计算系统中启用用于接收包括有 序和/或无序信息的各种类型的有限状态变换机(FST)数据结构的一般框架, 然后在505将框架的变换引擎应用于FST。在510,根据上述任何类型的FST 表示的树语法进行FST的分析和变换。结果,在515,FST被变换以生成MFST, 这保存FST的动作信息,例如在对两个或多个FST执行任何交、补和并运算 的同时保存有序和无序嵌套信息,并允许将非确定性FST变换成确定性结果。
图5B是大体对应于示出本发明的树语法所允许的这一方面的以上过程的 框图。变换框架530接收分别包括有序信息、无序信息或两者的一个或多个 MFST520、 522或524,根据任何交、并和补变换运算(和/或其他布尔运算符, 带有组合)变换MFST,并将有序和/或无序信息保存在输出540中。
图5C到51示出了在存在有序或标记信息的情况下对状态机的变换的示例 性、非限定性的各方面。如图5C的框图中所示,问题涉及两个状态机M,和 M2的并,状态机M,和M2各自具有单独的接受状态550和555,即如何在机 器的变换表示中表示该信息。在以往,这是通过将两个接受状态550和555 组合成表示两者的单个接受状态而实现的,这可导致来自原始机器的信息的损 失。
根据图5D的框图,在示例性、非限定性方面中,本发明在结果变换机560 中接受自家状态机标记的接受状态。在各个非限定性实施例中,本发明在变换 期间引入对标记并1^的处理,这是用接受状态所源于的机器的名字标记并机 器的接受状态的并的变体。
如图5E的示例所示,当执行Mi 1^M2时,存在接受状态标签的三种可能 "M, 575、 "M,,M2" 580和"M2" 585。这指示标记并机器中的接受状态分 别表示由M,、 Mt和M2两者、以及M2接受的输入。如在图51中更详细地示出,在示例性、非限定性实现中,这些标签可被示为位,每一原始机器一个位。 例如,可向M!分派低位,而向M2分派高位。于是,可能的标签可被表示为 "01"(即,M,而非M2接受输入),"11"(即,M!和M2均接受输入)以
及"10"(即,M2而非M,接受输入)。另一种可能性是"00"。并机器的均 非接受状态可被视为具有该标签(因为M,或M2均不接受输入)。
在此方面,如图5E的框图中所示,除了生成表示MiM2组合的结果接受 状态节点580以外,本发明也生成表示接受状态N^和接受状态M2的接受状态 节点575和585。如图5F中所示,当遇到并运算符M, u M2时,这些接受状 态575、 580和/或585中的任一个可以是得到的接受状态的一部分,而如图 5G中所示,交运算符M, PI M2仅意味着M,M2节点580。例如,当向M, 分派低位而向M2分派高位时,在一个非限定性实施例中,并机器被通过找到 标记为"11"的接受状态而被转换成交机器。如果不存在这样的状态,则交机 器为空。给定标记为"11"的一组状态A,通过从并机器移除不能从其到达A 中任何状态的任何状态而生成交机器。
如图5H的框图所示,也可在根据本发明的变换期间捕捉子类型化。关于 类型化存在可在确定化组件570时确定的三种结果。M, c M2是如果没有接受 状态被标记为1V^的一个结果,如顶部所示。M!-M2是如果在中间仅生成接 受状态M,M2 580时的另一结果。M2 c M,是如果没有接受状态被标记为M2 的一个结果,如在底部所示。给定以上变换过程,可确定子类型化。例如,当 向M,分派低位而向M2分派高位时,如果所有接受状态都被标记为11,则M, 等于M2。如果存在标记为10和11的接受状态,则M2包含Mi (即,M,是
M2的子类型)。
图51示出了根据标记并运算符变换机器590和机器592的示例性、非限 定性过程的流程图,其中两个机器590和592中的每一个是两位机器。根据应 用位标签的上述示例性、非限定性实现,向机器590的标签Li和L2分派两位, 并向机器592的标签L3和L4分派两位。当根据本发明的标记并运算符组合时, 这在结果4位机器595中产生16个接受状态。例如,L2将接收标签0010, L2L4 接收标签IOIO, L山2L3L4接收标签1111,依此类推,直到表示了所有组合。
图5J示出了如何变换有序机器以构造和组合相应的无序机器。例如,模式集合P可能包括可任选出现的约束,诸如由以下集合(p,,P2、P3+)表示的约 束,这指示包括至少一个p,的集合、包括零或多个P2以及一个或多个P3的集 合。根据本发明的示例性、非限定性实现,集合模式P被分成两个组成部分 (A)并模式596,诸如在目前描述的示例集合P中的PiUp2Up3,以及(B)
标记运行的集合598,其各自接受某些输入。在目前所述示例中,这可得到
(L,,L2、L3+),其中L。
L2和L3分别标记接受状态p" P2和P3。
从而,如图5K所示,为根据本发明的示例性、非限定性实现对诸如给定 无序模式Pl和P2等无序模式执行标记并Up计算以下表达式u(PD、u(P。、
r(po和r(p》,其中u(x)是x的并模式,而r(x)是x的接受运行的集合。于是,
基于这些表达式,获得以下两个结果
(1) u(PM P2) = "P0vjl u(P2)
(2) r(pm p2) = r(p!) * r(p2)
其中图5K以及以上等式(2)中的的"*"运算符LUCP表示标记并叉积运算。
接着,重新标记U(P,Uj^P2),使得运行标记是一致的。例如,通过重写R 的冗余标签组中的每一个/来实现重新标记。从R中,选择任意成员z(例如, 上述按标签的位的实现中的编号最低标签或次序最低位),且对R中的每一/ 将/重写成z。例如,如图5L中所示,其中?(P, LP。具有示例性接受状态标 签ASL1,包括"LlsL2" 、 "L,,L3,L4,L2"和"L2,L4",则L3可由L,替换, 而U可由L2替换以形成压縮接受状态标签ASL2,即"L," 、 "L,,L2"和 "L2,, 。
如上所述,图5K以及以上等式(2)中的""运算符LUCP表示标记并叉积 运算。在如上图所述重新标记了 P,和P2的接受运行之后,可根据以下非限定 性过程定义标记并叉积运算。首先,为一对运行R,和R2定义运算符UL。为此, 标签(R)被定义为运行R的标签。R然后被定义为对(/,[x,y])的集合,其中/是 来自重新标记的P,Ut P2的某一标签,而x是/的最小出现数,而y是/的最 大出现数,且[x,y]e[O, oo]。通过考虑R^R2 (即,R,和R2的叉积)中的每 一元素对来计算R, uL R2,如下。对每一对(/,[x', y,])、 (/2, [x2, y2]),如果= /2, 贝他,[x,,y!]), (/2, [X2,y2])使用区间并运算变为(/b [xh yi]) U [x2,y2])。否则, (A, [x!,y!]), (/2, [X2,y2])是空集。因此,对&*112(即R,和R2的叉积)中的成员z, UjJ皮计算为或者是(A, [x,, y!]) U (/2, [x2, y2])或者是空集。然后通过取得这些结果的并来形成结果 集S而计算R,ULR2。如果S具有与R,和R2相同的基数,则R,l^R2是带有
例如标签(R2)和标签(R2)等标签的S。否则,R!UlR2是(R!,R2〉,其中R,和R2
不相交,且它们具有单独的标签。
例如,如果
R广他,
),丄2, [1, 3, [1,1])} R2={(Z,, [1,2]),丄2, [2, 2]),丄3, [1,1])}
则R!ULR^带有标签标签(R,)、标签(R2)的((丄b
),丄i [1,a)]),丄3, [1,
1])}。
又例如,如果
R'= {(L,, [1, l]), L2, [2, ]),L3,[1, 1])} R,((L!,[O,①]),L2,[l,l]), L3, [4, 4])} 则Ri UL R2 = {Ri, R2}因为和R2不相交。
又例如,如果
RU2}其中A是(",[1, l])等
贝U UL R2=带有标签标签(R,)、标签(R2)的仏,丄2}以及带有标签标签 (R2)的(A, I"3+}。
总而言之,根据上述过程首先计算&UL R2,即根据本发明的运行R,和
R2的ul的定义。然后,通过取得R4与(R!ul R2)的交以及R2与(R!Ul R。的
交即门(RUL R2)和R2门(R! UL R2)来细化结果,即H (R! UL R》和R2门 (R, Ul R2)是使用类似于并运算符Ul的方法执行的,只是用区间交代替了区间 并运算。
在本发明的示例性、非限定性实施例中,为此,并运行被分成片段Rj、 R2和R^ n R2。这些片段R,、 R2和R, n R2然后分别用标签(R,)、标签(112) 和标签(RO,标签(R2)标记。
从而,其中P,和P2是无序模式,可执行P,ULP2的确定化。就此而言,
本发明使得P, Ul P2能被计算成带有并模式部分以及并模式的接受运行的集合的无序模式,每一运行标记了来自P,、 P2或两者的标签。P,UlP2于是 可以是与某个其它无序模式P3的并,该模式也具有并模式以及标记运行的集 合,对另一无序模式P4依此类推。
示例性、非限定性使用情形 为了补充理解,本发明的各个使用情形示出了可在计算系统中应用使用本 发明的Q框架的模式匹配的各种应用。匹配同时保存嵌入正在变换的树中的动 作语义或有序和无序信息的能力由此在计算系统中启用了各种模式匹配系统 的集合。然而,所选的实际情形仅是示例性的,从而不作为对本发明适用的模
式匹配的领域的限制。实际上,根据本发明变换MFST的能力,按定义是相当
广泛的,因为无需顾及丢失关于动作约束的信息或嵌入正在变换的树表示中的 有序和无序信息。
就此方面,如上所述,Q框架允许在根据至少交、并和补变换而变换MFST 时保存这样的动作或有序和无序的信息。采用这三种变换运算,可执行树数据 结构上的一性质,其被本领域的技术人员称为结构兼容性或子类型化。通常, 计算应用程序想要知道给定树是否是另一给定树的子集或树的集合(或并、补
或交所定义的这些树的某种变换运算)。
本发明可应用的另一类重要情形是执行静态类型检査的大量应用程序,其 中编译器査看程序,并要求过程兼容性。过程兼容性检查涉及树集合的模式匹 配,且有助于找出计算机程序中的隐错。
一般而言,用户或计算系统可能希望针对树数据集合或树数据的子集实现 的测试类是无限的。然而,通常会发生某些递归测试。例如,通常测试希望知 道第一树或第一树集合是否与第二树或第二树集合相交。或者,可能希望知道 是否存在树集合的合计,以及是否存在对树遍历的所有路径的覆盖。或者用户 可能希望知道什么树导致默认情况。还可希望测试空测试,这询问了是否可接 受任何树作为模式匹配的问题。如前所述,在本发明的一个实施例中,本发明
允许以下四种变换测试交、并、补和空测试。
以上描述了采用编译器对本发明的有利使用。本发明也可用于各种其它情 形,诸如模式确认。例如,消息随购买定单而来,问题是购买定单是否兼容某种模式。本发明的模式匹配可用于针对模式确认消息,而不考虑动作语义或有 序/或无序信息而同时在结果中保存动作语义或有序/无序信息。
契约检查是本发明的另一示例性用途。例如,公司可能具有涉及公司的人 力资源计算系统的策略,它规定它必须遵守一组表示物理系统的计算机要求
(例如,X数量的存储、Y数量的安全、Z数量的处理能力等)。就此方面, 每一配置可被表示为树表示中的一组要求,且根据本发明的框架的树变换能 力,系统分析者可根据预定义变换来变换计算机配置,并查看新的计算机配置 是否匹配HR计算系统所需的契约。
本发明还可应用于找到计算系统所记录的日志数据集合中的安全漏洞模 式,或确定计算系统的可能配置。本发明可应用于防火墙,在那里传入和传出 防火墙的消息可被视为树,其中可采用模式匹配来观察是否应不让任何给定消
息通过防火墙。由于本文提及的、Q框架所支持的变换布尔运算可用于形成任
何逻辑语句,计算系统中的任何规则系统可被归约成树,且可应用模式匹配来 确定是否遵守这些规则。因此,应清楚本发明的应用是不受限制的。
有限状态自动机和变换机
对附加的上下文,有限状态机(FSM)或有限状态自动机(FSA)是由状 态、转移和动作组成的行为的模型。FSM的状态存储关于过去的信息,即状态 反映从系统起始到目前时刻的输入改变。转移指示状态改变,且由要求履行以 允许转移的条件描述。动作是要在给定时刻执行的活动的描述。存在若干动作 类型进入、退出、输入和转移动作。进入动作在进入状态时执行该动作。退 出动作在退出状态时执行该动作。输入动作依赖于目前状态和输入条件执行动 作。转移动作在执行某一转移时执行该动作。
有限状态变换机(FST)是使用动作基于给定输入和/或状态生成输出的 一类FSM,且可用于控制应用程序、构造计算机程序等。图6A示出了简单的 有限状态变换机620。变换机620基于给定输入610生成输出630,如由FSM 620 所转换或变换地。存在的两类变换机FSM是Moore模型和Mealy模型,它们 将在以下更详细描述。也常使用混合模型。
因此,可理解可将众多不同种类的计算机系统和进程建模成FSM和FST。 例如,可使用有向图将任何可扩展标记语言(XML)文档表示成FSM。关系数据库中的关系数据也可按照这种方式表示,例如借此输入(例如,查询)由
FST转换成输出(例如,查询结果),FST表示底层关系存储。 一般而言,当 用于对计算机进程建模时,FST通常被表示为标记边有向图,其中每一顶点表 示n个状态之一,而每一边表示在接收标记该边的字母符号时从一个状态到另 一个状态的转移。
当计算机系统中的众多复杂子系统和进程被通信耦合成总系统的一部分 时,为了设计总系统的软件,设计者可首先将每一子系统和进程表示为FST, 例如有向图或其它等效表示。然后,为了为连接不同子系统的单个系统创建复 杂计算机程序,例如有向图的FST可根据各种操作组合或以其它方式变换以便 形成表示总系统的行为的新的有向图。
例如,假定用户Jane经由因特网从客户计算机向因特网服务器作出对存 储在数据库中的朋友John的度假照片的请求,并得到因特网服务器上的应用 程序的服务。如可以理解地,根据这样的请求进行的端对端通信是数目众多的, 以对Jane的认证开始并确保除了执行请求本身以外Jane还被授权查看John的 照片。作为简单的示例,作出和处理请求本身可被建模成第一FST。在服务器 处,第二 FST可对参考各种规则检查Jane是否是John的朋友的行为建模,这 些规则诸如可在访问控制列表(ACL)和相应的策略的集合中找到,它们可被 表示成一连串XML片段、树或有向图。另外,第三FST可对关系数据库本身 建模。通过对第一、第二和第三FST集合进行变换、组合、匹配、转换等,可 形成新的有向图,它表示系统并对特定的输入请求返回是("授权")或否("未 被授权")的回答,且处理照片的传递。
一般而言,FSM可使用如图8A的简单状态转移图的状态图(或状态转移 图)表示。在图8A中,表示了分别具有进入动作进入A1和进入A2的两个状 态SI和S2,意味着在进入状态SI时执行进入动作进入Al,而在进入状态S2 时执行进入动作进入A2。而且,当转移条件TC1发生时,发生自状态Sl到 S2的转移T1;而当转移条件TC2发生时,发生自状态S2到S1的转移T2。 状态S1可能是"门打开",而状态S2可能是"门关上"。从而,为了从状态 Sl转到状态S2,必须发生转移Tl,这仅当转移条件TC1发生时才发生,而 TC1可能是"力正使得门在关闭方向上移动"。在进入状态S2时执行的进入动作进入A2因此可能是"关上门"。在打开门时可跟随类似的转移链,即从 状态S2转到状态S1。
除了示意图之外,还可使用不同类型的状态转移表来表示FSA。这样的状 态转移表STT1的常见表示在图7A中示出,其中诸如当前状态B等表STT1 的列与诸如状态Y等表STT1的行的组合指示处于状态B时当发生条件Y时 发生的下一状态,即状态C。然而,采用诸如状态转移表STT1的表,仅可使 用脚注来添加完整的动作信息。
然而,存在使用状态表包括全部动作信息的FSM定义。例如,在虚拟环 境中定义的FSM被称为虚拟有限状态机(VFSM),它涉及使用输入控制性质
和输出动作的分派名字描述控制系统的行为的软件指定方法。
虚拟环境表征其中VFSM操作的环境,且由三个名字集合定义输入名、 输出名和状态名。输入名由所有可用变量的控制性质表示。输出名由对变量的 所有可用动作表示,而状态名为FSM的每一状态定义。输入名用于构建执行 状态转移或输入动作的虚拟条件。虚拟条件是使用正逻辑代数构建的。输出名 用于触发动作(进入动作、退出动作、输入动作或转移动作)。
状态表定义VFSM状态行为的细节,如图7B的示例性状态表ST1所示。 状态转移表ST1包括三列在第一列中,使用状态名SN;在第二列中,放置 了使用正逻辑代数根据输入名构建的虚拟条件CO;在第三列中,出现用于触 发动作AC的输出名。
除了如在此处呈现的其对反应系统建模的用途,FSA在众多不同领域中是 重要的,包括语言、计算机科学、哲学、生物学、数学和逻辑。有限状态机是 在自动机理论和计算理论中研究的一种类型的自动机。在计算机科学中,有限 状态机广泛用于对应用程序行为建模、硬件数字系统的设计、软件工程、编译 器以及计算和语言的研究。对FSA应用的完整审视实际上是不可能的——存 在将FSA应用到系统中任何地方的实际上无限的应用。
一般而言,变换机计算两种形式语言之间的关系。在FSM和FSA的上下 文中,变换机使用动作基于给定输入和/或状态生成输出,且可用于控制应用程 序。 一般区分两种类型的变换机FSM: Moore模型和Mealy模型。实际上,常
使用混合模型。为说明性的目的,图8B示出了变换机FSM 800,它示出具有四个状态S3、 S4、 S5和S6以及相应的输出03、 04、 05和06的Moore模型示例。采用 Moore机器,FSM仅使用进入动作,即输出仅依赖于状态。Moore模型的优点 在于行为的简化。图8B中的示例示出了电梯门MooreFSM 800。状态机识别 两个命令"命令开"Cl和"命令关"C2,它们触发状态改变。例如,在"正 在打开"状态S6中的进入动作EA1启动打开门的电机,而"正在关闭"状态 S4中的进入动作EA2启动关闭门的另一方向上的电机。"已打开"状态S3 和"己关闭"状态S5在此示例中不执行任何动作,相反它们分别向外部系统 (例如,其它状态机)用信号表示"门打开"或"门关上"。
图8C示出了变换机FSM810,它示出了具有两个状态S7和S8、相应的 输出07和08以及输入动作II和12的Mealy模型示例。釆用Mealy机器,FSM 仅使用输入动作,即输出依赖于输入和状态。对Mealy FSM的使用通常导致 状态数目的减少。图8C中的示例示出实现与图8B的Moore示例800相同行 为的Mealy FSM 810.存在两个输入动作"如果命令关到达,则启动电动机以 关闭门"II和"如果命令开到达,则启动另一方向上的电动机以打开门"12。
有限自动机的另一区分是确定性有限自动机(DFA)和非确定性(NDFA) 或通用非确定性有限自动机(GNFA)。在确定性自动机中,对于每一状态, 对每一可能的输入存在恰好一个的转移。在非确定性自动机中,对给定可能的 输入,自给定的状态可能存在零个或一个以上的转移。这种区分是关乎实际, 而非理论的,因为存在可将任何NDFA变换成等效的DFA的算法,尽管这种 变换通常显著增加自动机的复杂性。
仅具有一个状态的FSM被称为组合FSM,且仅使用输入动作。这一概念 在其中需要多个FSM来一起工作,且便于将纯粹组合的部分考虑成一种形式 的FSM以适合设计工具的情况中有用。
一般而言,变换机计算两种形式语言之间的关系。有限状态变换机(FST) 计算的一类关系被称为有理关系类。FST通常有助于自然语言处理研究。
FST是具有两个带的有限状态机,它与具有单个带的普通有限状态自动机 形成对比。关于命名,将自动机说成识别串,如果其带的内容被视为输入。换 言之,自动机计算将串映射到集合{0,1}的函数。或者,将自动机说成生成串,这意味着其带被视作输出带。根据这一观点,自动机生成作为串的集合的形式 语言。自动机的这两种观点是等价的自动机计算的函数正是它所识别的串集 合的指示函数。有限自动机生成的语言类被称为正则语言类。
变换机的两个带一般被视为输入带和输出带。就此而言,将变换机说成通 过接受其输入带上的串并在其输出带上生成另一串而将其输入带的内容变换 (即,转换)成其输出带。它可非确定性地这样做,且它可能会对每一输入串 产生多于一个的输出。变换机也可能对给定输入串不产生输出,在这种情况下, 将它称作拒绝输入。
对于附加的上下文,在形式上,有限状态变换机T是多元组(Q,S,r,I,F,
S),使得
Q是有限集,状态的集合;
S是有限集,被称为输入字母表;
「是有限集,被称为输出字母表; I是Q的子集,初始状态的集合; F是Q的子集,最终状态的集合;以及
3^2xfEu{e})x(ru{e})xg(其中e是空)是转移关系。
(Q, s)可被视为标记有向图,被称作r的转移图顶点的集合为2,且
(仏a,6j) G5意味着存在自顶点《到顶点r的标记边。在此方面,"是该边 输入标签,而6是输出标签。
将扩展转移关系S *定义成使以下公式成立的最小集合
对所有的3GQ, (g,e,e,g)G6;以及 只要(g, r'仏r) G 5*且(r, ci, s) G (5 ,则(:g,認,如,s) G 5* 。
扩展转移关系实质上是已经扩充来考虑边标签的转移图的自反传递闭包。 5*的元素被称为路径。路径的边标签通过按次序串接其组成转移的边标签来获 得。
变换机r的/:f为是如下定义的有理关系[71: ;c[71y当且仅当存在i G J和 /GF使得(i,x,'y,/) G(T。即如果存在自输出状态到最终状态的输入标签
为;c而输出标签为>;的路径,则r将串i' g 变换成串^ € 。对有限自动机定义的以下运算也适用于有限变换机并、串接、克林闭包、 组合、输入带的投影以及输出带的投影。
对于并运算,给定变换机r和s,存在变换机rus,使得工P"uS]y当
且仅当x[71y或x[外。
对于串接运算,给定变换机r和s,存在变换机r s ,使得^'工[T'
当且仅当w[71y或4习z。
对于克林闭包运算,给定变换机r,存在具有以下性质的变换机r': (i)
s[r*]£; (2)如果w[7^1y且;c[71z,则戰[r、z;且x[广]y不成立除非由(1) 或(2)委托。
注意到不存在变换机的交的概念。相反,存在组合运算,这是变换机专用 的,且其构成类似于自动机的交。如下定义组合
给定字母表s和r上的变换机r,以及字母表r和A上的变换机s,存在
S和△上的变换机r o S ,使得工P" O《^当且仅当存在使得且y问z的
串y《
也可将变换机的任一带投影来获得自动机。存在两种投影函数7H保存输 入带,而7t2保存输出带。第一投影即兀,被定义如下
给定变换机r,存在有限自动机7^r,使得&r接受x当且仅当存在;c[71y 的串y。类似定义第二投影即兀2。
此外,有限状态机可用于表示偏序,这形成了集合元素的定次序、定顺序 或排列的直观概念。偏序不必是全序,这保证了集合中所有元素可互相比较。 就此方面,全序是为集合项目的所有对定义的一种偏序。
因此,对某些但不必是全部项目对定义偏序。例如,集合(a,W和(a,c,d〉 是(a,b,c,d)的子集,但它们不是彼此的子集。因此"子集"是集合上的偏序。 作为另一示例,《(小于或等于)是整数上的全序,因为对任何两个整数,整 数之一总是小于或等于另一个整数。
如图6B中所示,有序嵌套表示"a""隐含""b"的信息,但根据该有 序分层结构周围不存在其它方式(即,"b"不必"隐含""a")。因此,图 6B的树是有序嵌套的表示的示例。相反,图6C的树表示无序嵌套的示例。在 此方面,无论图6C的树表示的事实信息是从左向右读取的还是从右向左读取的,都收集了同样的事实信息,即"块等于(是)红"或"红等于(是)块" 在逻辑上均指示块是(=)红。从而,这样的信息是无序的,且遍历树的次序对于 获取无序信息而言不是重要的。
示例性网络化和分布式环境 本领域的普通技术人员可以理解,本发明可以结合任何计算机或可作为计 算机网络的一部分来部署的其它客户机或服务器设备来实现,或可在连接至任 何种类的数据存储的分布式计算环境中实现。在这一点上,本发明涉及任何计 算机系统或环境,其具有任意数目的存储器或存储单元,以及发生在任意数目 的存储单元或巻上的任意数目的应用程序和进程,它们可结合根据本发明的 QFX的实施例来使用。本发明可应用于具有部署在具有远程或本地存储的网络
环境或分布式计算环境中的服务器计算机和客户计算机的环境。本发明也可应 用于具有编程语言功能、用于生成、接受和发送关于远程或本地服务和进程的
信息的解释和执行能力的独立计算设备。如前所述,MFST普遍适用于多个机 器和计算设备上的软件进程,因此根据本发明用于将语法转换成MFST的技术
可高效地在各种计算环境中应用。
分布式计算通过计算设备和系统之间的交换提供了计算机资源和服务的
共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储 和盘存储。分布式计算利用网络连接,允许客户机利用它们的集体力量来使整 个企业受益。就此,各种设备可以含有其中蕴含本发明的QFX的应用程序、 对象或资源。
图9提供了示例性的网络化或分布式计算环境的示意图。分布式计算环境 包括计算对象910a、 910b等,以及计算对象或设备920a、 920b、 920c、 920d、 920e等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象 可包括诸如PDA、音频/视频设备、MP3播放器、个人计算机等的相同或不同 设备的各部分。每一对象可通过通信网络940与另一对象通信。该网络本身可 以包括向图9的系统提供服务的其它计算对象和计算设备,且其本身可以表示 多个互连的网络。根据本发明的一方面,每一对象910a、 910b等,或920a、 920b、 920c、 920d、 920e等,可包含可利用适用于根据本发明的QFX的各个 实施例的API、或其它对象、软件、固件和/或硬件的应用程序。还可以理解,诸如920c等对象可以主存在另一计算设备910a、 910b等或 920a、 920b、 920c、 920d、 920e等上。因此,尽管所示的物理环境可以将所连 接的设备示为计算机,但是这样的图示仅是示例性的,并且该物理环境可以被 替换地描述或描绘成含有诸如PDA、电视机、MP3播放器等的各种数字设备, 它们中的任何一个可采用诸如接口、 COM对象等各种有线和无线服务、软件 对象。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统 可以由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多 网络耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的 网络。任何基础架构可用于便于本发明的QFX的实施例的示例性通信。
在家庭网络环境中,有至少四个全异的网络传输媒体,其每一个可支持一 种唯一的协议,这些媒体如电力线、数据(无线和有线)、语音(如,电话) 和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来 连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在 家庭内使用无线(如,HomeRF或802.11B)或有线(如,家庭PNA、 Cat 5、 以太网、甚至是电力线)连接来访问。语音话务可通过有线(如,Cat3)或无 线(如,蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒 体或其它图形数据可通过卫星或电缆进入家庭,并通常在家庭中使用同轴电缆 来分布。IEEE 1394和DVI也是用于媒体设备群集的数字互联。可作为协议标 准浮现或已经浮现的所有这些网络环境和其它环境可被互联来形成可通过诸 如因特网等广域网连接到外部世界的网络,诸如内联网。简而言之,对数据的 存储和传输存在各种不同的源,因此本发明的任何计算设备可按照任何现有方 式共享和传输数据,且在本文实施例中描述的方式不旨在是限定性的。
因特网通常指使用传输控制协议/网际协议(TCP/IP)协议套件的网络和 网关的集合,该协议在计算机联网领域中是公知的。因特网可被描述为由执行 允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布的 远程计算机网络的系统。由于这类广泛分布的信息共享,诸如因特网等远程网 络至今发展成一种开放式系统,开发者可用该开放式系统设计用于执行专用操 作或服务的软件应用程序,在本质上没有限制。由此,网络基础结构启用了诸如客户机/服务器、对等或混合体系结构等 大量网络拓朴结构。"客户机"是使用与它无关的另一类或组的服务的一个类 或组中的成员。由此,在计算时,客户机是进程,S卩,粗略地而言是一组请求 由另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必 "知道"有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构 中,尤其在网络化系统中,客户机通常是访问由例如服务器等另一计算机提供
的共享的网络资源的计算机。在图7A的图示中,作为一个示例,计算机920a、 920b、 920c、 920d、 920e等可以被认为是客户机,而计算机910a、 910b等可 以被认为是服务器,其中服务器910a、 910b等维护随后被复制到客户计算机 920a、 920b、 920c、 920d、 920e等的数据,然而任何计算机都可被认为是客户 机、服务器或两者,取决于环境。任何这些计算设备可能正在处理数据或请求 服务或任务,这些数据、服务或任务可能隐含本发明的QFX的各个实施例的 树语法和转换技术。
服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地 网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服 务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,从而提 供分布式功能并允许多个客户机利用服务器的信息收集能力。按照本发明的 QFX利用的任何软件对象可跨多个计算设备或对象分布。
客户机和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输 协议(HTTP)是结合万维网(WWW),即"Web"使用的常见协议。通常, 诸如网际协议(IP)地址或诸如统一资源定位器(URL)等其它引用的计算机 网络地址可以用于彼此标识服务器或客户计算机。网络地址可以被称为URL 地址。可以通过通信介质来提供通信,例如客户机和服务器可以通过TCP/IP 连接来彼此耦合以进行大容量通信。
由此,图9示出了其中可采用本发明的具有通过网络/总线与客户计算机 通信的服务器的示例性联网或分布式环境。更详细而言,根据本发明,多个服 务器910a、910b等经由通信网络/总线940互连,通信网络/总线14可以是LAN、 WAN、内联网、GSM网络、因特网等,它具有多个客户机或远程计算设备920a、 920b、 920c、 9200d、 920e等,如便携式计算机、手持式计算机、痩客户机、联网设备或其它设备,如VCR、 TV、烤箱、灯、加热器等等。因此构想了, 本发明可应用于期望根据本发明定义的Q框架编译和执行属性化树语法并转
换成MFST的任何计算设备。
例如,在其中通信网络/总线940是因特网的网络环境中,服务器910a、 910b等可以是客户机920a、 920b、 920c、 920d、 920e等通过诸如HTTP等多 种已知协议中的任一种与其通信的web服务器。服务器910a、 910b等也可担 当客户机920a、 920b、 920c、 920d、 920e等,这是分布式计算环境的特性。
如上所述,通信可以是有线或无线的,或者在适当时是两者的组合。客户 机设备920a、 920b、 920c、 920d、 920e等可以通过或不通过通信网络/总线14 通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可 以有或没有其控制的网络化方面。每一客户计算机920a、 920b、 920c、 920d、 920e等以及服务器计算机910a、 910b等可以具备各种应用程序模块或对象 135a、 135b、 135c等,并具有对各种类型的存储元件或对象的连接或访问,在 这些存储元件或对象上可储存文件或数据流,或者可向其下载、发送或迁移文 件或数据流的各部分。计算机910a、 910b、 920a、 920b、 920c、 920d、 920e 等中的任何一个或多个可负责维护并更新数据库930或其它存储元件,诸如用 于储存根据本发明处理或保存的数据的数据库或存储器930。由此,本发明可 以用于具有可访问计算机网络/总线940并与其交互的客户计算机920a、 920b、 920c、 920d、 920e等,以及可与客户机计算机920a、 920b、 920c、 920d、 920e 等交互的服务器计算机910a、 910b等,以及其它类似的设备和数据库930的 计算机网络环境中。
示例性计算设备
如本文所述,本发明适用于可能期望应用根据本发明定义的QFX技术的 任何设备。从而,应当理解,构想了所有种类的手持式、便携式和其它计算设 备和计算对象来用于本发明,g卩,在设备可实现表示状态机的软件进程或以其
它方式接收、处理或存储数据的任何地方。因此,在下面的图10中描述的以 下通用远程计算机仅是一个示例,且本发明可用具有网络/总线互操作性和交互 的任何客户机来实现。由此,本发明可在其中蕴含了极少或最小客户机资源的 联网的主存服务的环境,例如其中客户机设备仅用作到网络/总线的接口一如置于电器中的对象一的联网环境中实现。
尽管并非所需,但本发明可以部分地经由操作系统来实现,以供设备或对 象的服务开发者使用,和/或被包括在结合本发明的组件操作的应用软件中。软 件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的 诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可 以理解,本发明可以用其它计算机系统配置和协议来实施。
图10由此示出了其中可实现本发明的合适的计算系统环境1000a的一个 示例,但如以上清楚地描述的,计算系统环境1000a仅为用于介质设备的合适 的计算环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不 应将计算系统1000a解释为对示例性操作环境1000a中示出的任何组件或其组 合具有任何依赖性或需求。
参见图10,用于实现本发明的示例性远程设备包括计算机1010a形式的 通用计算设备。计算机1010a的组件可以包括,但不限于,处理单元1020a、 系统存储器1030a和将包括系统存储器在内的各种系统组件耦合至处理单元 1020a的系统总线1021a。系统总线1021a可以是几种类型的总线结构中的任 一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构 中的任一种的局部总线。
计算机1010a通常包括各种计算机可读介质。计算机可读介质可以是可由 计算机1010a访问的任何可用介质。作为示例而非局限,计算机可读介质可以 包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机
可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易 失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于, RAM、 ROM、 EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘 (DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以 用来储存所期望的信息并可由计算机1,010a访问的任何其它介质。通信介质通 常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据 结构、程序模块或其它数据,并包括任意信息传送介质。
系统存储器1030a可以包括诸如只读存储器(ROM)和/或随机存取存储器 (RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)可被存储在存储器1030a中,它包含帮助在诸如启动期间在计算机1010a内元件之间传递信息的基本例程。存储器1030a通常还包含处理单元1020a可以立即访问和/或目前正操作的数据和/或程序模块。作为示例而非局限,存储器1030a还可以包括操作系统、应用程序、其它程序模块、和程序数据。
计算机1010a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机1010a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至系统总线1021a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至系统总线1021a。
用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸板)向计算机1010a输入命令和信息。其他输入设备可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至系统总线1021a的用户输入1040a和相关联的接口连接到处理单元1020a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子系统也可以被连接到系统总线1021a。监视器或其它类型的显示设备也通过接口,如输出接口 1050a连接至系统总线1021a,而输出接口 1050a又与视频存储器通信。除监视器之外,计算机还可以包括其它外围输出设备,如扬声器和打印机,它们可以通过输出接口 1050a连接。
计算机1010a可使用至诸如远程计算机1070a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机1070a又可以具有与设备1010a不相同的媒体能力。远程计算机1070a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程媒体消费或传输设备,并且可以包括上面关于计算机1010a所描述的任何或全部元件。图IO所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络1071a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机1010a通过网络接口或适配器连接至LAN1071a。当在WAN联网环境中使用时,计算机1010a通常包括通信组件,诸如调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。诸如调制解调器等通信组件可以是内置或外置的,它可以通过输入1040a的用户输入接口或其它适当的机制连接至系统总线1021a。在网络化环境中,相对于计算机1010a所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性分布计算体系结构
鉴于个人计算和因特网的交汇,已经开发且正在开发各种分布式计算框架。个人和商业用户同样地拥有用于应用程序和计算设备的无缝的互操作和启用web的接口,使得计算活动越来越面向web浏览器和网络。
例如,MICROSOFT⑧的托管代码平台,即.NET包括服务器、诸如基于web的数据存储等构件块服务、以及可下载设备软件。 一般而言,.NET平台提供(1)令整个范围的计算设备共同工作并在所有设备上自动更新并同步用户信息的能力,(2)提高的网页交互能力,通过大量使用XML而不是HTML来实现,(3)从用于各种应用,如电子邮件,或软件,如Office.NET的管理的中央起点到用户的具有产品和服务的定制访问和传送的特点的在线服务,(4)中央化数据存储,将增加对信息访问以及用户和设备间的信息同步的效率和简易性,(5)集成各种通信介质,如电子邮件、传真和电话的能力,(6)对开发员来说,创建可重复使用模块的能力,借此提高生产力并降低编程错误数,以及(7)还有许多其它跨平台和语言综合特性。
尽管此处的某些示例性实施例是结合诸如应用程序编程接口 (API)等驻留在计算设备上的软件来描述的,但本发明的一个或多个部分也可以通过操作系统、"中间人"对象、控制对象、硬件、固件、中间语言指令或对象等来实现,使根据本发明的QFX的实施例可以被包括在由诸如.NET代码等托管代码启用的所有语言和服务中,以及在其它分布式计算框架中,在其中得到支持或经由它们来访问。
有多种实现本发明的方法,例如适当的API、工具箱、驱动程序代码、操
作系统、控件、独立或可下载软件对象等,它们使得能够使用本发明的QFX。 本发明从API (或其它软件对象)的观点以及从可实现根据本发明的QFX的 至少一部分的数据结构、软件或硬件对象的观点构想了对本发明的使用。由此, 此处描述的本发明的各种实现都可以具有完全采用硬件、部分采用硬件且部分 釆用软件、以及采用软件的方面。
在此使用的词语"示例性"意味着用作示例、实例或说明。为避免疑问,本 文公开的主体不受限于这样的示例。此外,本文描述为"示例性"的任何方面 或设计不必解释成优于其它方面或设计或比其它方面或设计有利,它也不旨在 排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语"包 括"、"具有"、"包含"和其它类似的词语在详细描述或权利要求书中使用
而言,为避免疑问,这样的术语旨在以类似于术语"包括"作为开放的过渡词 的方式解释而不排除任何附加或其它元素。
如上所述,尽管结合各种计算设备和网络体系结构描述了本发明的示例性 实施例,但基本概念可被应用于其中期望包括MFST实现变换的任何计算设备 或系统。例如,本发明的算法和硬件实现可被应用于计算设备的操作系统,可 作为设备上的独立对象、作为另一对象的一部分、作为可重复使用的控件、作 为可从服务器下载的对象、作为设备或对象和网络之间的"中间人"、作为分 布式对象、作为硬件、以存储器、以上任何的组合等来提供。尽管此处选择了 示例性编程语言、名称和示例来表示各种选择,但这些语言、名称和示例不旨 在为限制性的。本领域的普通技术人员将认识到,有多种方法来提供实现本发 明的各实施例所实现的相同、相似或等效的功能的目标代码和命名法。
如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的 组合来实现。如在此所使用地,术语"组件"、"系统"等同样指的是计算机 相关实体,或者是硬件、硬件和软件的组合、软件或执行中的软件。例如,组 件可以是但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执 行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机 本身都可以是计算机组件。 一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多的计算机之间。
由此,本发明的方法和装置或其特定方面或部分可采取包含在诸如软盘、 CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码 (即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执 行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行 的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性 和非易失性的存储器和/或存储元件)、至少一个输入设备、以及至少一个输出
设备。可例如通过使用数据处理API、软件对象等来实现或利用本发明的QFX 的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现以与 计算机系统通信。然而,如果需要,程序可以用汇编语言或机器语言来实现。 在任何情形中,语言可以是编译的或解释的语言,且与硬件实现相结合。
本发明的方法和装置也可以经由以通过某种传输介质传输的程序代码的 形式体现的通信来实现,比如通过电线或电缆、通过光纤或经由任何其它传输 形式,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、 客户计算机等机器接收、加载并执行时,该机器成为用于实现本发明的装置。 当在通用处理器上实现时,程序代码与处理器相结合来提供一种用于调用本发 明的功能的独特装置。另外,结合本发明使用的任何存储技术总是可以是硬件 和软件的组合。
此外,所公开的主题可以使用产生软件、固件、硬件或其任意组合的标准 编程和/或工程技术实现为用于控制基于计算机或处理器的设备以实现在此所 详述的诸方面的系统、方法、装置或制品。此处所用的术语"制品"(或作为 替换,"计算机程序产品")旨在涵盖可从任何计算机可读设备、载体或介质 访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储设备(例 如,硬盘、软盘、磁带……)、光盘(例如,压縮盘(CD)、数字通用盘(DVD)……)、 智能卡和闪存设备(例如,卡、棒)。另外知道,可以采用载波来承载计算机 可读电子数据,例如那些用于发送和接收电子邮件或用于访问如因特网或局域 网(LAN)等网络的数据。
已经关于若干组件之间的交互描述了前述系统。应该理解,这样的系统和 组件可以包括那些组件或子组件,所指定组件或子组件中的一些和/或另外的组件,并根据前述的各种排列和组合。子组件也可以被实现为通信耦合至其它组 件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组合可 被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理 层的任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集 成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公 知的一个或多个其他组件交互。
考虑到以上描述的示例性系统,参考图5的流程图将可以更好地理解依照 所公开的主题实现的方法。尽管出于说明简单的目的,各方法被显示和描述为 一系列框,但应该理解和领会,所要求保护的主题不受框次序的限制,因为一 些框能够以不同的次序和/或与在此描绘和描述的其它框同时发生,或以其它方 式提供等效的功能。尽管经由流程图示出了非顺序或分支的流程,但可以理解, 可实现达成相同或类似结果的各种其它分支、流程路径和块次序。而且,并非 所有示出的框都是实现以下描述的方法所必需的。
此外,应该明白以上公开的系统以及以下方法的不同部分可以包括或包含 人工智能或基于知识或规则的组件、子组件、进程、装置、方法或机制(例如, 支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引 擎、分类器等)。这样的组件和其它组件可以自动化执行某些机制或进程,由 此使得QFX的各部分更为自适应、高效及智能。
尽管已结合各个附图的优选实施方式对本发明进行了描述,但是可以理 解,可以使用其它类似的实施方式,或可以对所述实施方式进行修改或添加, 来实现本发明的相同功能而不背离本发明。例如,在诸如对等联网环境等联网 环境的上下文中描述了本发明的示例性网络环境,但是本领域的技术人员将认 识到,本发明不限于此,并且本申请中所描述的方法可应用于任何计算设备或 环境,诸如游戏控制台、手持式计算机、便携式计算机等等,不论其是有线还 是无线的,并且该方法可应用于经由通信网络连接并通过网络交互的任意数量 的此类计算设备。此外,应当强调,构想了包括手持式设备操作系统和其它应 用专用操作系统的各种计算机平台,尤其是在无线联网设备的数量持续增长 时。
尽管各示例性实施例涉及在特定编程语言构造的上下文中利用本发明,但是本发明不限于此,而是可用任何语言实现并用于转换包括动作的任何语法。 而且,本发明可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实 现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实 施例,而是应该根据所附权利要求书的广度和范围来解释。
权利要求
1.一种用于在计算系统中将至少一个树数据结构变换成至少一个模块化有限状态变换机(MFST)的方法,包括接收100表示包括用于定义动作信息的动作语义的至少一个有限状态机(FSM)的至少一个树数据结构140a;以及对由所述至少一个树数据结构140a表示的任何类型的FSM模型,将所述至少一个树数据结构变换120成至少一个MFST 190同时在所述至少一个MFST 190中保存所述至少一个树数据结构的所述动作信息。
2. 如权利要求1所述的方法,其特征在于,所述接收IOO包括接收表示包 括用于定义动作信息的动作语义的至少一个有限状态变换机(FST)的至少一 个树数据结构140a。
3. 如权利要求1所述的方法,其特征在于,所述变换120包括采用由变换 引擎180实现的可扩展预定义转换语法170变换所述至少一个树数据结构 140a,所述变换不考虑由所述至少一个树结构140表示的FSM模型的类型而 在所述至少一个MFST中保存所述动作信息。
4. 如权利要求1所述的方法,其特征在于,所述变换120包括用预定义的 转换语法170变换所述至少一个树数据结构140a,所述转换语法170不考虑所 述至少一个树结构140a所表示的FSM模型的类型而保存所述至少一个树数据 结构140a的有序和无序嵌套信息两者。
5. 如权利要求1所述的方法,其特征在于,所述接收IOO包括接收表示包 括用于定义动作信息的动作语义的所述至少一个FSM的至少一个有向图数据 结构。
6. 如权利要求6所述的方法,其特征在于,所述接收IOO包括接收表示包 括用于定义动作信息的动作语义的所述至少一个FSM的至少一个可扩展标记 语言(XML)文档。
7. 如权利要求1所述的方法,其特征在于,所述变换120包括对至少两个 树数据结构进行交运算同时在所述至少一个MFST 190中保存所述至少一个树 数据结构140a的所述动作信息。
8. 如权利要求1所述的方法,其特征在于,所述接收100包括接收至少一个非确定性树数据结构,且所述变换120包括将所述至少一个非确定性数据结 构变换成确定性的MFST 190。
9. 一种包括用于执行如权利要求1所述的方法的计算机可执行指令的计 算机可读介质。
10. —种用于将至少一个树数据结构变换成至少一个模块化有限状态 变换机(MFST)的计算系统,包括表示至少一个有限状态机(FSM)的至少一个树数据结构140a,所述至 少一个树数据结构140a是用任何类型的FSM存储模型表示的;用于将所述至少一个树数据结构140a变换成至少一个MFST 190,包括匹 配包含在所述至少一个树数据结构140a中的有序和无序嵌套信息在内的变换 引擎组件180。
11. 如权利要求10所述的计算系统,其特征在于,所述至少一个树数 据结构140a是表示至少一个有限状态变换机(FST)的至少一个有向图。
12. 如权利要求10所述的计算系统,其特征在于,所述变换引擎组件 180参考预定义转换语法170将所述至少一个树数据结构变换成所述至少一个 MFST 190,其中所述转换语法在所述至少一个MFST 190中保存所述有序和无 序嵌套信息两者。
13. 如权利要求10所述的计算系统,其特征在于,所述至少一个树数 据结构140a包括至少一个非确定性树数据结构,且所述变换引擎组件180将 所述至少一个非确定性数据结构变换成确定性的MFST 190。
14. 一种用于在计算系统中将有向图数据结构变换成模块化有限状态 变换机(MFST)的变换框架,包括用于在计算系统中存储用于表示有限状态机(FSM)的各不相同类型的 多个有向图数据结构140a的装置;以及变换机150,基于预定义树语法170分析所述多个有向图数据结构140a, 并将所述多个有向图数据结构140a变换成至少一个MFST 190同时保存所述 多个有向图数据结构140a的动作语义信息。
15. 如权利要求14所述的变换框架,其特征在于,所述变换机150对由所述多个有向图数据结构表示的有限状态机(FSM)执行至少一个控制流程 分析算法,所述算法跨任何类型的有向图表示保存所述多个有向图数据结构的 所述动作语义信息。
16. 如权利要求14所述的变换框架,其特征在于,所述变换机150包 括结合变换所述多个有向图数据结构140a而执行特定绑定处理的变换引擎 180,其中所述特定绑定处理包括在用于匹配所述多个有向图数据结构140a的 模式的模式匹配进程期间对所述动作语义信息执行绑定。
17. 如权利要求14所述的变换框架,其特征在于,所述变换机150内 联如由所述多个有向图数据结构140a中的一有向图数据结构所定义的至少一 个变换机定义,同时保存所述有序和无序语义信息。
18. 如权利要求14所述的变换框架,其特征在于,所述变换机150将 所述多个有向图数据结构140a的变量绑定编译成激活记录中的槽。
19. 如权利要求14所述的变换框架,其特征在于,所述变换机150执 行对由所述多个有向图数据结构140a表示的所述有限状态机(FSM)的寄存 器分析。
20. 如权利要求14所述的变换框架,其特征在于,还包括 用于接收所述多个有向图数据结构140a中的一有向图数据结构的接口 它根据所述预定义树语法定义有向图数据结构。
全文摘要
提供Q框架,简称为QFX,用于以跨一组不同的FST表示类型实现对在其表示中支持动作信息的FST的动作语义的保存的通用方式执行高效树变换。QFX也允许在执行树变换的同时保存有序和无序嵌套信息、支持将非确定性数据结构变换成确定性数据结构,并允许对含有动作语义的机器进行交运算。
文档编号G06F9/06GK101517533SQ200780034213
公开日2009年8月26日 申请日期2007年9月14日 优先权日2006年9月15日
发明者D·E·兰沃西, G·M·德拉-利贝拉, S·E·卢科 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1