当前位置: 首页 > 专利查询>B·德斯梅特专利>正文

使用基于类型的状态机的查询约束编码制造技术

技术编号:7087839 阅读:222 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及使用基于类型的状态机的查询约束编码。可根据对目标编程语言的查询约束进行编码的基于类型的状态机来分析源编程语言中指定的查询。基于类型的状态机可将这样的约束编码为表示状态的类型以及表示状态或类型之间的转换的方法。

【技术实现步骤摘要】
使用基于类型的状态机的查询约束编码
本专利技术涉及查询约束编码,尤其是使用基于类型的状态机的查询约束编码。
技术介绍
数据处理是计算机编程的基本部分。可从各种编程语言中选择创建程序的编程语言。用于特定的应用程序的所选语言可取决于应用程序上下文、开发者的偏好、或公司策略,以及其他因素。无论所选语言如何,开发者最终将必须处理数据,即查询和更新数据。已开发称为集成语言的查询(LINQ)的技术以便于来自编程语言内部的数据交换。LINQ提供方便且声明性简写查询句法以在编程语言(例如,Visual...)内部允许对查询的指定。具体而言,提供映射到低层语言构造或原语的查询操作符,诸如方法和拉姆达表达式(lambdaexpression)。提供用于各种运算(例如,过滤、投影、连接、分组、排序……)族的查询运算符,并且查询运算符可包括但不限于映射到实现这些名称所表示的运算符的方法的“where”和“select”运算符。作为示例,用户可以以诸如“fromninnumberswheren<10selectn”的形式指定查询,其中“numbers”是数据源并且查询从数据源返回小于10的整数。此外,可以以各种方式组合查询运算符以生成任意复杂度的查询。虽然查询可以在存储器中的数据上本地地执行,但查询也可被远程传输到例如用于执行的另一台计算机。在此情形中,查询被表示为数据而非代码。接下来可转换查询的该数据表示(例如,表达式树)以将任意数据源作为目标。例如,集成语言的查询可被转换为用于由关系数据库系统执行的SQL(结构化查询语言)。作为另一个示例,集成语言的查询的数据表示可被转换为XQuery以允许相对于XML(可扩展标记语言)数据的执行。
技术实现思路
下面呈现了简化的
技术实现思路
,以便提供对所公开主题的某些方面的基本概念。本
技术实现思路
不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更详细描述的序言。简而言之,本专利技术通常涉及使用基于类型的状态机的查询约束编码。与至少包括句法限制的目标编程语言(例如,查询语言)相关联的查询约束可由基于类型的状态机捕捉,该状态机将状态编码为类型并将状态之间的转换编码为方法。相对于最终注定被转换为目标编程语言的源编程语言中所指定的查询,可采用基于类型的状态机来提供编译时检查和程序开发辅助。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本专利技术的其他优点和新颖特征将变得显而易见。附图说明图1是查询验证系统的框图。图2是状态机生成系统的框图。图3A是约束变型的图解说明。图3B是查询检查时的图解说明。图4是便于查询指定的系统的框图。图5是示例性状态机图。图6是描绘最小查询的实施的示例性状态机图。图7是示出对跨运算的谓词的跟踪的示例性状态机图。图8是用于查询运算符结果和过滤器表达式的类型化的图解说明。图9是查询分析的方法的流程图。图10是状态机生成的方法的流程图。图11是方便对查询的指定的方法的流程图。图12是示出用于本公开各方面的合适操作环境的示意性框图。具体实施方式以下细节通常涉及捕捉目标查询语言的约束,并接下来采用该约束将源集成语言的查询的表达性限于目标查询语言所支持的。集成语言的查询通常允许查询操作符的无穷的组合。但是,通过该句法(例如,经由运行时转换)定为目标的很多外部查询语言无法提供相似的灵活性。因此,给程序员一种表达性的错觉,因为存在这样的大量的查询,它们在源语言中很好地编译但不具有向目标查询语言的有意义的转换从而经常导致运行时异常。可通过捕捉目标语言的约束并且经由编译时检查在集成语言的查询表达性上强制实施这些约束来解决这个问题。更具体地,包括语法和类型系统的查询语言语义可在状态机中被编码,可采用该状态机来方便编译时检查。状态机可以是基于类型的,其中状态被编码为类型,并且状态之间的转变被编码为方法。以此方式,状态机可捕捉所支持的查询运算符和查询运算符的模式等。在编译时,状态机可用于检测无效的查询。类似的,状态机可用于辅助在查询指定期间对反馈的提供,包括错误识别和代码完成建议。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等效和替换的方案。首先参考图1,示出了查询分析系统100。查询分析系统100包括被配置为接收、检索、或以其他方式获得或获取查询120的验证组件110。例如,查询120可对应于集成语言的查询(LINQ查询)以及其它类型的查询。验证组件110根据状态机组件130(此处也被简单地称为状态机)对查询120进行检查或验证,该状态机组件捕捉目标查询语言的约束,包括但不限于例如所支持的查询运算符和查询运算符的模式(例如,对查询运算符的出现数量和查询运算符的相对排序的限制)。根据一个实施例,状态机组件130可以是如以下进一步讨论的基于类型的状态机,其捕捉约束作为类型和方法。如果确定查询120未考虑目标查询语言的约束,例如如果检测到无效的查询运算符或查询运算符的无效模式,则验证组件110可发出出错信号。根据一个实施例,验证组件110可执行查询120的编译时检查从而减轻运行时失败的风险。因此,验证组件110可构成程序语言编译器的部分。图2描绘包括分析组件210和生成组件220的状态机生成系统200。分析组件210可分析包括语法和类型系统的目标查询语言的语义(或换言之,语言说明)以确定约束,或换言之对目标查询语言的限制,其中语法描述可接受的句法,并且类型系统描述数据类型的适当使用。基于分析,生成组件220可生成捕捉目标查询语言的约束的状态机(例如,状态机组件130)。根据一个实施例,状态机可以是基于类型的,或者换言之生成组件220可生成类型的状态机。在此情形中,状态可被编码为类型,并且状态之间的转换可被编码为方法。生成组件220还可接收指示所生成的状态机的期望大小和/或复杂度的一个或多个参数(例如,以预防拒绝服务(DOS)攻击)。因此,状态机可包括由语法和类型系统指定的全部约束、约束的子集、或者甚至是约束的超集(比由语法和类型系统指定的更多的约束)。简要地转向图3A,描绘了约束变型300的图形表示。此处,例如,内圈对应于由语法310和/或类型系统指示的约束,并且外圈表示由状态机捕捉的约束。内圈和外圈之间的距离表示由语法310和状态机130所指定的约束的区别。状态机130可基于大量的因素被调整为包括更多或更少的约束,该因素包括但不限于状态机组件130的特定版本和/或费用的支付。例如,用于生成基于类型的状态机的系统的收费版本可生成包括由语法310指定的基本上全部目标程序语言的约束的状态机,而其他版本可提供例如更少的覆盖。还注意到,状态机130可如虚线所示施加比语法更多的约束以进一步减轻运行时错误的风险。图3B是查询检查时302的图形表示以有助于澄清关于本专利技术的各方面。可在运行时320或编译时330检查查询本文档来自技高网
...

【技术保护点】
1.一种查询分析的方法,包括:采用至少一个处理器(1220),所述至少一个处理器被配置为执行存储在存储器(1230)中的计算机可执行指令以执行以下动作:根据对目标编程语言的查询约束进行编码的基于类型的状态机,在编译时对用源编程语言指定的查询进行分析。

【技术特征摘要】
2010.09.27 US 12/890,8701.一种查询分析的方法,包括:采用至少一个处理器(1220),所述至少一个处理器被配置为执行存储在存储器(1230)中的计算机可执行指令以执行以下动作:根据对目标编程语言的查询约束进行编码的基于类型的状态机,在编译时对用源编程语言指定的查询进行分析,其中所述状态机的节点对应于表示查询操作的类型,且所述状态机的边对应于类型上的方法,表示基于在所述类型中捕捉的历史的允许使用的查询运算符。2.如权利要求1所述的方法,其特征在于,还包括从目标编程语言的语义中自动地生成所述基于类型的状态机。3.如权利要求2所述的方法,其特征在于,还包括从语法或类型规则之一生成所述基于类型的状态机。4.如权利要求2所述的方法,其特征在于,还包括根据参数限制所述基于类型的状态机的计算复杂度。5.如权利要求1所述的方法,其特征在于,还包括在检测到一个或多个无效查询运算符或查询运算符的无效模式之后,发出出错信号。6.如权利要求5所述的方法,其特征在于,还包括在查询指定期间发出出错信号。7.如权利要求1所述的方法,其特征在于,还包括在检测到指定最小查询失败之后,发出出错信号。8.如权利要求1所述的方法,其特征在于...

【专利技术属性】
技术研发人员:B·德斯梅特H·J·M·梅杰
申请(专利权)人:B·德斯梅特H·J·M·梅杰
类型:发明
国别省市:US

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1