本发明专利技术涉及解析可观察集合。解析技术被应用于可观察集合。更具体而言,诸如组合符解析器等解析器能被用来对一个或多个可观察集合执行句法分析。进而,多个可观察集合可被组合为单一集合且可通过注释集合项或生成时间项来捕捉时间。
【技术实现步骤摘要】
本专利技术涉及解析技术,尤其涉及解析可观察集合。
技术介绍
解析器使得程序能够识别与形式语法相匹配的模式。更具体而言,解析器能够以多个步骤对输入序列执行句法分析。首先,可对字符序列进行词法分析以尤其识别诸如关键词、运算符和标识符等权标。换言之,输入序列被预处理。例如,考虑包括空白的下述输入序列“{,V,a,r,,X,,=,,X,,+,,l,;,}”。词法分析能够生成下述权标序列“{,” "var ,-χ, ‘ =,’《x,《‘+,-1, ‘;,”。接下来,这些权标可被用来根据编程语言语法产生解析树或更紧凑的抽象句法树(AST),该解析树或更紧凑的抽象句法树可被用于后续的分析、优化和代码生成。关于上述示例,“ {var χ = x+1 ;} ”还能以分层格式表示。解析常规上是一种基于拉取(pull-based)的运算。例如,解析器能够请求下一权标。响应之,执行词法分析的词法分析器(lexer)在输入序列上拉取以读取形成被提供回解析器的权标的接下来的一个或多个字符。随后,解析器请求下一权标而该过程继续。输入序列通常例如以串(string)或文件形式存在,而发现输入中的模式或结构的过程是基于拉取的。只要当消费过程需要知道更多时,它就请求下一值。例如,解析器请求下一权标, 而词法分析器请求下一字符。许多解析器是手写的,而其它解析器是自动生成的。例如,可提供语法,其中解析器从该语法生成。特别是,正则表达式可用来促进基于语法自动生成解析器,其中正则表达式提供例如在现有串或文件中寻找或匹配字符序列的精确手段。无论如何,解析器以及正则表达式是基于拉取的,从而输入的消费者控制数据获取。而且,解析器和正则表达式引擎均能利用任意前瞻和/或回溯(负前瞻)来促进对输入的模式的识别。例如,就解析而言,前瞻指定在决定使用什么语法规则之前可使用的权标的最大数量。回溯指的是使用一个或多个之前获取的权标来标识适当的语法规则。在前瞻和回溯的情况下,这样的功能可以通过简单地在输入序列中将指针向前或向后移动, 随后在指针标识的位置处从序列拉取输入来实现。
技术实现思路
下面呈现了简化的
技术实现思路
,以便提供对所公开主题的某些方面的基本概念。本
技术实现思路
不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序 、曰ο简言之,本公开大体涉及解析可观察集合(observable collection).尤其是,使用解析技术来促进关于可观察集合的模式识别。依照一个实施例,组合符解析器 (combinator parser)可被生成并用于识别一个或多个可观察集合中的模式。而且,来自两个或更多个可观察集合的项可被添加到单一可观察集合以便于处理,并且通过用时间对可观察集合项进行注释或生成时间项可以捕捉时间。 为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本专利技术的其它优点和新颖特征将变得显而易见。附图说明图1是数据处理系统的框图。图2是代表性集合处理器组件的框图。图3A描绘了项时间的第一表示。图:3B示出了项时间的第二表示。图4是代表性识别器组件的框图。图5描绘了对具有失败的事件的样本左因子提取(left factoring) 0图6是数据处理系统的框图。图7是处理数据的方法的流程图。图8是集合组合的方法的流程图。图9是捕捉项时间的方法的流程图。图10是捕捉项时间的方法的流程图。图11是数据处理的方法的流程图。图12是示出用于本公开各方面的合适操作环境的示意性框图。具体实施例方式下面的细节大体针对解析可观察集合。传统上,解析器被用来对串、文件或其它基于拉取的或可枚举的集合进行操作。然而,解析器还可以用来对基于推送的数据(或换言之,诸如事件流等可观察集合)标识模式。在一个实施例中,可使用组合符解析器,组合符解析器是一种从原始的或较不复杂的解析器分段构造的解析器。换言之,可以使用解析器组合符,所述解析器组合符利用基本解析器来构建较复杂的解析器并利用复杂的解析器来构建更复杂的解析器。进而,多个可观察集合可被组合成单一可观察集合,并且可以用时间来注释可观察集合项或者可生成独立的时间项来便于解析。传统的解析器技术可被改造成便于对基于推送的或可观察的集合使用。传统解析系统对基于拉取的或可枚举的集合常使用回溯和前瞻。然而,可观察的或基于推送的数据的异步性使得对输入的回溯或缓冲困难或不可能。而且,就还没有被提供的、基于推送的数据而言,解析器不能进行前瞻。尽管如此,如本文进一步描述的,在需要时可提供有限的回溯和前瞻功能以解析可观察集合。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等效和替换的方案。首先参考图1,示出了数据处理系统100。数据处理系统100包括可观察集合110, 可观察集合110表示动态的数据集合,其中除了其他方面外,数据与在任意时间被推送到该数据的项相对应。如所示,一个或多个数据源120 (数据源f数据源M,其中M是大于或等于1的整数)可向可观察集合110提供项。换言之,数据源120相对于基于推送的运算模型进行操作,其中数据源120向消费者异步推送数据,而不是由消费者从数据源120拉取数据。由于该集合的动态性,可观察集合110可被认为是或被表示为数据流。相应地,事件(或换言之,事件流)可以是一种类型的可观察集合110。例如,可观察集合110可以是在任意时间提供的股票价格流或天气数据流。当然,可观察集合110不限于事件。其它在传统上不被视为事件的、基于推送的集合可以是一种类型的可观察集合110,诸如但不限于异步运算的结果。而且,在一个具体实施例中,可观察集合110可指代关于编程语言(诸如但不限于 c# )的“IObserveable”接口等的数据集合,其提供一种用于基于推送的通知的通用机制, 也被称为观察者设计模式。更具体而言,“ IObservable"接口可暴露“ IObserver"接口,其中“ IObservableCD”表示发送通知的类(提供者)而“ IObserverCD”表示接收通知的类 (观察者)。这里“T”表示通知的类或类型。数据处理系统100还包括集合处理器组件130,集合处理器组件130与可观察集合 110通信地耦合并被配置成对可观察集合110执行某种动作。例如,集合处理器组件130可对可观察集合110执行某种预处理以便于由识别器组件140进一步处理。识别器组件140与可观察集合110通信地耦合并被配置成分析该可观察集合并输出识别的模式、错误或其它消息。如后面将进一步描述的,识别器组件140可利用在此之前被保留用于处理串、文件或其它基于拉取的或可枚举的数据集合的解析器技术。除其它事项之外,识别器组件140提供的函数功能还能允许较低抽象层次的基于推送的数据间的模式被发现并被用来创建较高抽象层次的模式等。例如,假定在鼠标事件本文档来自技高网...
【技术保护点】
【技术特征摘要】
...
【专利技术属性】
技术研发人员:H·J·M·梅杰,J·W·戴尔,D·J·P·莱延,
申请(专利权)人:微软公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。