解析器生成的制作方法_2

文档序号:9769170阅读:来源:国知局
3] 图9是解析来自输入流的数据的解析器的示例。
[0044] 图10是当解析图9的数据时强调解析器所跟随的转换的转换示意图。
[004引图11是与数据操作相关联的转换列表。
【具体实施方式】
[0046] 1系统概述
[0047] 图1示出其中可W使用解析器生成技术的示例性数据处理系统100。系统100包括 数据源102,数据源102可W包括诸如存储装置或连接至在线数据流的一个或多个数据源, 其每个可W W任意多种存储格式(例如,数据库表、电子数据表文件、纯文本文件、或主机所 使用的本机格式)来存储数据。执行环境104包括解析器生成模块106和执行模块112。执行 环境104可能被托管在受合适的操作系统(诸如UNIX操作系统)控制的一个或多个通用计算 机上。例如,执行环境104可W包括多节点并行计算环境,该多节点并行计算环境包括使用 多个中央处理器(CPU)的计算机系统的配置,运些CPU可W是本地CPlK例如多处理器系统, 如SMP计算机)、或本地分布式CPU(例如多个处理器禪合为集群或MPP)、或远程CPU、或远程 分布式CPU(例如通过局域网(LAN)和/或广域网(WAN)来禪合的多个处理器)、或其组合。在 一些实施方式中,执行模块112提供操作系统,其可W是运行在一个或多个处理器上的并行 操作系统,并且解析器生成模块106被执行为在该操作系统中运行的程序。用户115还能够 通过在用户界面中观察所显示的输出和录入输入来与执行环境104交互。
[0048] 解析器生成模块106接收表示目标数据格式105的数据,目标数据格式105限定被 认为是根据目标数据格式105所(正确地)格式化的可能数据对象的允许结构、W及在输入 流中出现的多个数据对象之间的允许排序。目标数据格式105可W可选地符合描述模式的 标准,该模式用于基于模式对象和模式对象之间的关系等方面来限定什么类型的数据对象 是容许的。由目标数据格式105限定的结构可W包括表示包含数据值(例如,标记数据对象, 其中基于相关联的标签来识别数据值)的数据对象的模式对象、W及可W包含模式对象的 容器对象或基于潜在嵌套结构(例如,标签的序列、标签的集合等)的其他容器对象。例如, 如果目标数据格式105符合ASN. 1标准的版本,则模式对象可W表示包含下述的数据对象: 与数据值相关联的标签、随后是数据值的长度、随后是数据值本身。如果目标数据格式105 符合XML标准的版本,则模式对象可W表示包含下述的数据对象:开始标签、然后是数据值、 随后是结束标签。在一些示例中,目标数据格式105可W被表现为层级(例如,树或其它形式 的分层表示),其具有表示层级的节点的模式对象和容器对象。
[0049] 目标数据格式105描述输入流(例如数据流,其包括根据目标数据格式105所格式 化的一系列数据对象)中数据对象的期望格式,其将从数据源102到达执行环境104。基于层 级的结构(包括层级内模式对象和容器对象的排序),目标数据格式105也隐式地确定输入 流中连续的数据对象之间的何种转换(transition)是容许的。解析器生成模块106处理目 标数据格式,W生成能够解析来自数据源102的输入流的解析器。对于符合一些标准(诸如 ASN. 1)的目标数据格式,输入流也可W包括标签(或其它标记或分隔符),其为各类容器对 象(例如,序列或集合)指示所包含的数据对象的开始(或结束),但是系统100能够处理具有 或不具有运种标签的输入流。一般地,当执行环境104接收来自输入流的数据时,执行环境 104的执行模块112使用所生成的解析器,来解释从数据源102接收的输入流中的数据,识别 被标记数据对象之间的转换,并且使用数据操作来处理运些数据对象中的数据值W存储结 果114,该存储结果114可W包括执行环境104本地的填充记录(populating record)。在一 些示例中,记录被存储在数据存储系统116中。提供数据源102和数据存储系统116的存储装 置对执行环境104而言可W是本地的,例如,被存储在连接至运行所述执行环境104的计算 机的存储介质(例如,硬盘驱动器108)中、或者对执行环境104而言可W是远程的,例如,被 托管在通过远程连接与运行所述执行环境104的计算机进行通信的远程系统(例如,主机 100 化。
[0050] 数据存储系统116对于开发环境118也是可访问的,其中,开发者120能够开发待由 执行模块112执行的程序,W应用额外处理至正在被解析的数据、所存储的结果114和/或其 他数据。在一些实施方式中,开发环境118是用于开发如同数据流示意图的应用的系统,该 数据流示意图包括由至高点(vertice)之间的定向链路(表示工作元素的流动)所连接的至 高点(表示组件或数据集)。例如,在发明名称为"Managing Parameters for Gra地-Based Applications(管理用于基于图形应用的参数r的美国专利公开2007/0011668中更详细地 描述了运种环境,其通过引用合并于此。在美国专利5,966,072巧XECUTING COMPUTATIONS EXPRESS抓AS GRAPHS(执行被表示为图表的计算)"中描述了用于执行运种基于图表计算 的系统,其通过引用合并于此。根据运个系统得到的数据流图表提供了运样的方法,该方法 用于使信息流入和流出由图表组件表示的各个进程,用于在进程之间移动信息W及用于限 定进程的运行顺序。运个系统包括选择进程间通信方法的算法(例如,根据图表的链路的通 信路径可W使用TCP/IP或UNIX域套接字、或者使用共享内存W在进程之间传递数据)。
[0051] 参照图2,目标数据格式205的简单示例限定多个容器对象250,其每个包括一个或 多个模式对象252。在一些示例中,使用诸如XML或ASN.1符号的标准化符号规定目标数据格 式205,运使得能够根据所限定的模式来规定输入流中数据对象之间的容许格式和排序,并 且包括用于指定模式对象和容器对象的符号。本文所使用的"模式对象"包括任何元素,例 如,被用于表示相关数据对象的组的限定模式。非常一般性地,容器对象(也简称为"容器") 的示例包括序列容器(即包含对象的有序集合)、集合容器(即,包含对象的集合,从中可W 选择一个或多个对象)、或选择容器(即,包含对象的集合,从中可W选择仅仅一个对象)。容 器对象内的对象可W是模式对象、或其他容器对象,使得能够得到形成层级的嵌套结构。模 式对象252包括标签253和字段名,其中标签253将出现在输入流中的对应数据对象内W识 别特定相关数据值,并且系统100将使用上述字段名来表示在由所生成的解析器填充的记 录内的数据值。模式对象252可W具有表示该数据值的类型(例如,对于整数的"int",或者 "string",如图2所示)的相关数据类型。在一些数据格式中,字段名是标签的名称、或者与 一个或多个标签相关联。在下面的一些示例中,具有标签T'和字段名称V'的模式对象将 被描述为模式对象叮(n)"。
[0052] W下是ASN.1注释中目标数据格式205的示例。 MOD DEFINITIONS IMPLICIT TAGS ::-BEGIN A ::= SEQUENC巨 { al TagP OPTIONAL, 狂 2 TagQ, b B OPTIONAL、 狂 6 TagU
[0053] 巧::二 CHOI(沈 { 蚊 TVigR, C S 巳T OF C ) C :=化T { c4 Tags, c5: TagT } TagP ::= [UNIVE民SAL 80] INTEGE民 TagQ::=[UNIVERSALSl]INTF;GER Tag民::=[UNIVERSAL 82] IA5Strin呂 Tags ::= [UNIVE民SAL 831 INTEGE民
[0054] TagT ::二[UiNIVE民SAL 84] INTEiGE民 TagU ::= [UNIVE民SAL S5] INTEGE民 END
[0055] 标签规范[UNIV邸SAL 81]、[UNIV邸SAL 82]等使得数据具有与'P'、'Q'等的ASCII 值相同的标签。对于ASN.1,输入流也将包括标记序列容器或集合容器(除了选择容器之外) 的开始的标签,如W下一些示例中所示。
[0056] 图2的目标数据格式205包括序列容器SEQ_A,其包括第一模式对象P(al)、第二模 式对象Q(a2)、选择容器CH0ICE_B、W及第=模式对象U(a6)。选择容器CH0ICE_B包括模式对 象R(b3),和集合容器SET_CdSET_C集合容器包括两个模式对象S(c4)和T(c5)DP(al)模式对 象、CH0ICE_B选择容器和SET_C集合容器都被指定为"可选的(optionalr。可选的指定意味 着由指定的容器对象或模式对象表示的数据对象(多个)不受数据格式要求并且输入流可 W包括或可W不包括与该模式对象对应的数据对象。根据出现在目标数据格式内的对应标 签,对象可W被指定为可选的或者被指定为具有一些其他特性。一些标准可W提供目标数 据格式内对象的明确指定,并且一些标准可W提供目标数据格内对象的隐式指定。例如,一 些标准(例如抓1/抓IFACT)包括一种策略,其中如果容器中的第一模式对象具有可选的指 定,则目标数据格式指定整个容器为可选的。每个容器对象限定在本文中什么被称为包含 容器内所有对象(即,模式对象和容器对象)的"范围(scope)"。由此,SEQ_A的范围包括P (曰1)、9(曰2)、邸01〔6_8和11(曰6)。邸01〔6_8的范围包括1?(63)、沈1'_(:、5(。4)、和1'(。5)。沈1'_0 的范围包括S(c4)和T(c5)。
[0057] 参照图3,图2的目标数据格式205被示为树305,其具有被示为树305的节点319的 数据格式205的容器对象和模式对象W及被示为使节点319互连的边缘320的容器对象与模 式对象之间的关系。一般地,与模式对象和其对应数据对象相关联的叶节点(称为"数据节 点")具有关联标签和与数据值对应的字段名,而与容器相关联的内节点(称为"容器节点") 是无价值的并且可W与或可W不与标签相关联。
[0058] 在操作中,自上而下且自左手侧至右手侧来读取树。特别地,参照图4的简单转换 图400,读取根据图2的数据格式205所格式化的输入流的解析器开始于根0,作为其起始状 态。解析器期望从输入流接收到的第一标签数据对象(即,一对标签和其对应数据值,被称 为标签-值对)将是P(al)模式对象的标签-值对或Q(a2)模式对象的标签-值对(因为P(al) 模式对象被指定为可选的)。如果从输入数据流接收到P(al)模式对象的标签-值对,则从输 入流接收到的下一个标签-值对一定是Q(a2)模式对象的标签-值对。
[0059] 由于CH0ICE_B容器是可选的,所W从输入流接收到的下一个标签-值对可W是U (a6)、R(b3)、S(c4)或T(c5)模式对象中任意一个的标签-值对。对于一些标准(诸如ASN.1), 在S(c4)或T(c5)模式对象的标签-值对的情况下,也将存在标记SET_C开始的标签。如果接 收到R(b3)模式对象的标签-值对,则从输入流接收到的下一个标签-值对一定是U(a6)模式 对象的标签-值对。如果接收到T(c5)模式对象的标签-值对,则从输入流接收到的下一个标 签-值对一定是S(c4)模式对象的标签-值对。接续,由于SET_C容器被指定为集合容器的"矢 量(vector)"(由[]运算符表示),所W可W从输入流接收到S(c
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1