模块化森林自动机的制作方法

文档序号:6595126阅读:250来源:国知局
专利名称:模块化森林自动机的制作方法
模块化森林自动机背景编程语言可以使用模式来区别值的类。例如,下面的两行伪代码定义计算一列整数的总和的函数。Sum (nil) = 0 ;Sum (cons [head, tail]) = head+Sum(tail);此示例中的模式有两个目的。首先,它们区别输入情况。其次,它们允许通过使用模式变量和类型推断来进行简洁值解构。模式与结构类型紧密相关。此处所描述的正则树模式是也可以包括变量绑定的正则树类型。与语义动作相耦合的树模式叫做树变换规则。诸如XML模式语言之类的结构类型系统定义各类别的值。编程语言常常使用结构类型系统来静态地检查程序安全属性。SQL数据库还使用主要聚焦于结构的类型系统。通过联接所产生的表例如包含可以描述为具有匿名结构类型的元组。数据库管理系统要求各种程序可以解释存储在该系统中的数据。结构类型系统帮助数据库管理系统满足这一要求。分布式系统也产生对于结构类型的要求。由于等待时间,在分布式程序组件之间交换的消息常常比在对象之间交换的方法参数更大、更加复杂。存储在数据库中的并且在分布式组件之间交换的值在复杂性方面介于由程序表达式操纵的简单值和图灵机的复杂性之间。如此处所描述的,正则树模式被用来定义结构复杂性的这些中间级别。表达和分析有序的和无序的正则树模式是有用的和有益的能力。其中分析将被有利地改进的域的示例包括模型校验和使用部分有序的树模式的授权逻辑。诸如XML 模式之类的某些现有语言可以使用部分有序的正则树,但是当前缺乏用于进行子类型化 (subtyping)的手段。此外,这样的语言可以施加语义约束,以便在当前已知方法下支持有效的实现。对贪婪正则表达式匹配和编程语言XStatic的某些工作已经研究了如何将正则有序的树类型合并到面向对象的语言中。类似于ffluce,XMatic对于序列使用统一表示。 这样的工作将正则有序的树类型映射到对象,但是使用展平处理(flattening)来支持所包括的正则语言的自然语义。最后,(模式)的上下文中研究正则有序的树类型。对下推森林自动机(PFA)也完成了某些工作。然而,PFA却不提供子类型化算法, 或用于寻址无序的嵌套(多重集)的机制。简要概述本发明的各实施例涉及模块化森林自动机(MFA)。此处所描述的模块化森林自动机可以被用来描述和分析正则树模式,并可以创建可以简明地表达带标记的有向图的转换的模块化森林转换器(transducer) (MFT)。图转换是逻辑、过程模型、以及编程语言的实现中的基本成份。模块化森林自动机的实现可以被用来支持高性能的、强类型的图转换。
模块化森林自动机是用于定义、重新组织、以及转换部分有序的、有限的、未分层级(unranked)的树的集合的机制。MFA支持对MFA分层结构的分析和合成。MFA提供对有序的和无序的树模式的统一处理。此处所描述的实施例包括用于分析正则树模式的方法、系统、以及计算机程序产品。特定实施例允许接收可以被确定或重写为描述序列和集合两者的模块(机器)的数据。 可以从根据接收到的数据确定的模块创建并集。所确定的模块和模块的并集可以包括带标记的接受状态。根据带标记的接受状态,可以为模块确定子类型关系。此处所描述的其他实施例还包括用于表达正则树模式的转换的方法、系统、以及计算机程序产品。可以接收正则树模式,并可以接收特定实例数据。可以从接收到的正则树模式编译转换器。可以利用对应于所需转换的指令来扩充转换器变换。可以根据经扩充的转换器变换和实例数据,确定正则树模式的元素和实例数据的元素之间的对应关系。提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。附图简述为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中

图1示出了本发明的原理的实施例可以在其中操作的计算环境;图2示出了用于模式的嵌套内容的置换模块化森林自动机;图3示出了特定模式Expr (表达式)的所确定化的转换;图4示出了用于模式Pond(池塘)的嵌套内容的优化的模块化森林自动机;图5示出了在子类型分析中确定的各子类型的图形表示;图6示出了用于模式GTE的嵌套内容的非确定性的模块化森林自动机;图7示出了用于模式GTE的嵌套内容的所确定化的模块化森林自动机;图8示出了根据本发明的特定实施例的用于分析正则树模式的方法的流程图;图9示出了根据本发明的特定实施例的用于表达正则树模式的转换的方法的流程图。详细描述此处所描述的实施例涉及用于分析正则树模式的方法、系统、以及计算机程序产品。此处所描述的附加实施例涉及用于表达正则树模式的一个或多个转换的方法、系统、以及计算机程序产品。本发明的实施例可以包括含有各种计算机硬件的专用或通用计算机, 这将在以下更详细地讨论。图1描述了其中可以实施此处所描述的实施例的示例计算环境100。计算环境100包括一个或多个计算机处理器110。计算环境100还包括计算机存储器120的一个或多个实例。计算机存储器120可以是已知是合适的任何计算机可读存储器,并包括(但不仅限于)RAM、SRAM、以及闪存。计算机存储器也可以是诸如硬盘、固态盘驱动器、⑶R0M、DVD等等之类的持久存储130。计算机存储器120和存储130可以,如可以在任何特定实施例中合适的,是只读的,诸如ROM或CD或DVD,或者它可以是诸如RAM、闪存、以及常见的磁盘驱动器之类的可读和可写的。计算环境100还包括输入和输出140。输入和输出140可以包括诸如存储在磁盘上的数据,可通过网络访问的数据、或其他数据之类的任何合适的格式或媒体。计算环境 100还包括可以向/从其中传输数据的外部持久存储150。类似于存储130,外部持久存储 150可以采取任何合适的形式,诸如磁盘、磁带、⑶-R/W、或其他形式。本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行指令或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括存储介质,如RAM、ROM、 EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接完全视为计算机可读介质。这样的网络或通信连接此处被称为通信介质。因此,任何这样的连接被适当地称为计算机可读介质。上面介质——包括存储介质和通信介质两者——的组合也应该包括在计算机可读介质的范围内。计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。这样的计算机可执行指令可以存储在计算机存储器120 中、持久存储130中、任何输入/输出介质或设备140上或外部存储150上。也可以通过任何合适的通信介质向合适的计算环境传输计算机可执行指令。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。此处所描述的实施例涉及用于分析正则树模式的方法、系统、以及计算机程序产品。此处所描述的附加实施例涉及用于表达正则树模式的转换的方法、系统、以及计算机程序产品。本发明的实施例可以包括含有各种计算机硬件的专用或通用计算机,这将在以下更详细地讨论。例如,图8示出了用于分析正则树模式的方法。该方法包括接收810包括正则树模式的数据,该正则树模式包括序列和集合中的至少一个。当树模式包括序列时,确定820 对应于该序列的机器。该所确定的机器有时被称为“模块”。序列,如其名称暗示的,是具有特定顺序的一组元素。当树模式包括集合时,确定830对应于该集合的机器。与具有特定顺序的序列不同,集合可以是没有指定特定顺序的元素的集合。创建840所确定的机器的并集。从所确定的机器(模块)的并集,确定850 —组带标记的接受状态。最后,根据带标记的接受状态,确定860子类型关系。如此处更全面地描述的,子类型关系可以是等效、子类型、超类型、不相交、以及相
6交中的一个。如果两个模块Ml和M2具有相同的接受状态,则它们是等效的。如果Ml包含 M2的所有接受状态但是M2不包含Ml的所有接受状态,则Ml是M2的超类型,M2是Ml的子类型。如果Ml和M2没有共同的接受状态,则Ml和M2不相交。如果Ml和M2共享一些接受状态,但是Ml和M2中的每一个都具有没有被另一个共享的接受状态,则它们相交。下面结合图5更详细地讨论了子类型关系。各实施例还包括确定包括到带标记的嵌套的至少一个变换的根级机器(模块)。 如此处更全面地描述的,带标记的嵌套可以具有Label[—]或Label {—}的形式。可以创建对应于带标记的嵌套的模块。可以在堆栈中放置对应于从带标记的嵌套的返回的继续状态。在将该继续状态放置到堆栈上之后,可以执行对应于该带标记的嵌套的动作。当达到该带标记的嵌套的接受状态时,从堆栈弹出该继续状态,并且恢复根级机器的处理。在接收到的数据与定义编程语言中的结构类型的数据相对应时,可以使用此处所描述的实施例。可以通过此处所描述的技术来分析这样的数据,以确定各结构类型是否等效,或者具有如此处所讨论的其他子类型关系中的任何一种。在接收到的数据与包括数据库的模式和/或模式定义的数据相对应时,可以使用此处所描述的实施例。可以通过此处所描述的技术来分析这样的数据,以确定各模式和各模式定义是否等效,或者具有其他子类型关系中的任何一种。在接收到的数据对应于XML模式,可以使用此处所描述的实施例。可以通过此处所描述的技术来分析这样的数据,以确定各XML模式是否等效,或者具有其他子类型关系中的任何一种。可以使用此处所描述的实施例,以确定对应于所确定的子类型关系的结构和逻辑关系并用于编程语言、数据库、对象等等中的数据结构的优化、效率、以及数据转换的目的。此处所描述的实施例还包括用于表达正则树模式的转换的方法。图9示出了用于表达正则树模式的转换的方法900。该方法包括接收对应于正则树模式的第一数据910。该方法还包括接收对应于实际实例的第二数据920。例如,包括正则树模式的数据可以包括XML模式,可以包括数据库模式,可以包括编程语言或对象定义的结构类型。对应于实际实例的数据可以包括数据库内的数据,可以包括串行数据输入流,或可以包括在面向对象的对象或在编程语言内所定义的结构类型内包含的数据。方法900包括将正则树模式编译成转换器。在本说明书的以下章节更详细地描述了对树模式的编译。一旦被编译,则利用对应于所需转换的指令来扩充940转换器变换。在利用指令扩充了变换之后,可以根据经扩充的变换和对应于实际实例的数据,确定950实例的元素和正则树模式的元素之间的对应关系。例如,可以存在诸如Root[A+,B*,C ](根[A+,B*,C ])之类的模式,以及[aaa, bbb,-]的实例数据(在一环境内给出的)。从该示例中,方法900可以确定特定绑定,以便 A-' aaa' ,B = ' bbb' ,C = '-'。此外,可以执行诸如例如动作 Root [A,B,C] — Root [A, C]之类的动作。一旦确定了绑定,示例动作可以被视为“delete B(删除B)”动作。方法900可以用于变量绑定环境中。这样的变量绑定可以确定编程语言、数据库模式、XML模式等等中的结构类型与同这些类型或模式内定义的变量相对应的实际值之间的对应关系。
7
方法900的指令还可以包括匹配各条件,并可以包括语义动作。方法900的实例数据可以包括XML模式实例,可以包括根据特定数据库模式的数据库内包含的数据的实例, 或可以包括根据在编程语言内定义的结构类型来定义或存储的数据。方法900还可以包括编译查询表达式和确定查询表达式的对应于正则树模式和实际实例数据的结果。例如,这样的查询可以是诸如SQL之类的数据库查询,并可以是诸如数据访问等等之类的授权查询。应该注意,此处所描述的所有方法和技术可以在各实施例中实现,这些实施例可以包括(但不仅限于)在计算环境内执行的方法、包括用于执行此处所描述的方法和技术的计算机可执行代码的计算机程序产品、以及包括用于执行此处所描述的方法和技术的计算机处理器和计算机可执行代码的计算系统。下面将是对此处所描述的实施例的办法和技术的更详细和全面的讨论。正则树模式列表1描述了可以用于正则树模式的句法。在列表1的语法中,项Action(动作) 是引用某一语言来进行语义动作的参数。项Name (名称),Variable (变量)、以及Label (标记)是各自提供一组被称为字母表的符号的参数。如此处所描述的,假定变量(Variable)、 模式名称(Name)、以及标记(Label)符号来自不同的字母表。除这些符号之外,模式可以引
用可包括非模式类型或文字值的基本符号。
权利要求
1.一种计算机环境(100)中的用于分析正则树模式O00)的方法,所述计算机环境包括至少一个计算机处理器和计算机可读存储器,所述方法包括接收包括正则树模式的数据,所述正则树模式包括序列和集合中的至少一个(810);当所述树模式包括序列时,确定对应于所述序列的第一机器(820);当所述树模式包括集合时,确定对应于所述集合的第二机器(830);创建所述第一和第二机器的并集(840);确定所述机器的并集的一组带标记的接受状态(850);根据所述带标记的接受状态确定所述第一和第二机器的子类型关系(860)。
2.如权利要求1所述的方法,其特征在于,还包括 确定包括到带标记的嵌套的至少一个变换的根级机器; 创建对应于所述带标记的嵌套的模块;将与所述带标记的嵌套的返回相对应的继续状态放到堆栈上; 执行对应于所述带标记的嵌套的动作;以及当到达所述带标记的嵌套的接受状态时,从所述堆栈弹出所述继续状态并恢复所述根级机器的处理。
3.如权利要求1所述的方法,其特征在于,所述接收到的数据对应于在编程语言中定义结构类型的数据。
4.如权利要求1所述的方法,其特征在于,所述接收到的数据对应于包括数据库的模式的数据。
5.如权利要求1所述的方法,其特征在于,所述接收到的数据对应于XML模式。
6.一种包括在其上编码了用于分析正则树模式O00)的计算机可执行指令的计算机可读介质(150)的计算机程序产品,当所述计算机可执行指令在计算环境(100)中执行时, 执行一种方法,所述方法包括接收包括正则树模式的数据,所述正则树模式包括序列和集合中的至少一个(810);当所述树模式包括序列时,确定对应于所述序列的第一机器(820);当所述树模式包括集合时,确定对应于所述集合的第二机器(830);创建所述第一和第二机器的并集(840);确定所述机器的并集的一组带标记的接受状态(850);根据所述带标记的接受状态确定所述第一和第二机器的子类型关系(860)。
7.如权利要求8所述的计算机程序产品,其特征在于,还包括确定包括到带标记的嵌套的至少一个变换的根级机器;创建对应于所述带标记的嵌套的模块;将与所述带标记的嵌套的返回相对应的继续状态放到堆栈上;执行对应于所述带标记的嵌套的动作;以及当到达所述带标记的嵌套的接受状态时,从所述堆栈弹出所述继续状态,并恢复所述根级机器的处理。
8.如权利要求8所述的计算机程序产品,其特征在于,所述接收到的数据对应于在编程语言中定义结构类型的数据。
9.如权利要求8所述的计算机程序产品,其特征在于,所述接收到的数据对应于包括数据库的模式的数据。
10.如权利要求8所述的计算机程序产品,其特征在于,所述接收到的数据对应于XML 模式。
11.一种计算环境(100)中的用于表达正则树模式(200)的转换的方法,所述计算机环境包括至少一个计算机处理器(110)和计算机可读存储器(120),所述方法包括接收对应于正则树模式的第一数据(910);接收对应于实际实例的第二数据(920);将所述正则树模式编译成转换器(930);利用对应于所需转换的指令来扩充转换器变换(940);以及根据所述经扩充的转换器变换和所述第二数据,确定所述第二数据的元素和所述正则树模式的元素之间的对应关系(950)。
12.如权利要求15所述的方法,其特征在于,所述指令包括变量绑定。
13.如权利要求15所述的方法,其特征在于,所述指令包括匹配条件。
14.如权利要求15所述的方法,其特征在于,所述指令包括语义动作。
15.如权利要求15所述的方法,其特征在于,所述第二数据包括XML模式实例。
全文摘要
模块化森林自动机(MFA)提供部分有序的正则树模式的统一描述。MFA还提供用于这些模式的确定化、子类型化、交集、以及补集的简单方法。MFA支持高性能的模式分析和匹配。模块化森林转换器,结合模块化森林自动机,允许编译器对任何状态转换施加语义动作,而同时又支持带标记的有向图的高效转换。
文档编号G06F17/00GK102165434SQ200980139411
公开日2011年8月24日 申请日期2009年8月20日 优先权日2008年9月30日
发明者G·M·德拉-利贝拉, S·E·卢科 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1