解析器生成的制作方法

文档序号:9769170阅读:232来源:国知局
解析器生成的制作方法
【专利说明】解析器生成
[0001] 相关申请的交叉引用
[0002] 本申请要求2013年11月22日提交的美国申请第14/087,158号的优先权,其要求 2013年7月12日提交的美国临时申请第61 /845,722号的优先权。
【背景技术】
[0003]本说明书设及解析器(parser)生成。
[0004] -些系统用户解析器,用于分析输入并且确定该输入的不同部分之间的关系W便 解释该输入。一些解析器由程序员手动写入。一些解析器由解析器生成器自动生成。例如, 一些解析器生成器(也称为编译程序的编译程序(。〇1119;[1日1-(301119;[1日1'),诸如7日(3(3或8130]1) 接受具有生产规则(或者简称为"生产")的语法(grammer)作为输入,其描述根据该语法被 认为是有效的语法元素 (syntactic element)、W及它们之间的关系。解析器生成器提供用 于解析输入的输出信息,该输入符合被提供给解析器生成器的语法。各种解析器可W被用 于处理各种不同种类的数据。例如,应用-协议解析器将数据包流转化为运些数据包流中流 量的高级表示。

【发明内容】

[000引在一个方案中,一般地,一种生成数据解析器的方法,所述数据解析器用于解析数 据对象的输入流,所述方法包括:接收表示限定W层级组织的多个对象的分层数据格式的 信息,所述对象包括表示数据对象的一个或多个模式对象、W及每个与一个或多个模式对 象相关联的一个或多个容器对象;W及处理所接收到的信息W形成所述数据解析器。所述 处理包括:至少部分基于表示所述分层数据格式的所述信息,确定所述输入流中连续数据 对象之间的容许转换;将一个或多个数据操作与每个所确定的容许转换相关联;W及存储 规范(例如,可执行指令、或所述数据解析器的任何其他规范),该规范用于将处理器配置为 执行所述数据解析器W: (1)识别所述输入流中的第一数据对象与第二数据对象之间的转 换,W及(2)至少部分基于与一个或多个之前所识别的转换相关联的背景来对所述第二数 据对象内的数据值执行与所识别的转换相关联的数据操作。
[0006] 方案可W包括一个或多个W下特征。
[0007] 表示所述分层数据格式的所述信息包括表示所述分层数据格式的树,该树包括由 多个边缘互连的多个节点,多个节点中的每个表示由所述分层数据格式限定的多个对象中 的一个。
[0008] 与一个或多个之前所识别的转换相关联的所述背景对应于表示所述分层数据格 式的所述树的位置。
[0009] 所述模式对象中的至少一个包括由该模式对象表示的对应数据对象所包含的标 签。
[0010] 所述容器对象包括表示下述至少一个的至少一个容器对象:在所述输入流内所包 含的数据对象的序列、在所述输入流内所包含的数据对象的集合、或者在多个可能数据对 象中所述输入流内所包含的一个数据对象的选择。
[0011] 至少一些容器对象被规定为表示所述输入流内数据对象的一系列多个容器。
[0012] 所述多个对象中的至少一些对象在所述分层数据格式中被指定为可选的。
[0013] 确定所述输入流中所述分层数据格式的所述对象之间的容许转换包括:生成所述 分层数据格式的编译树表示,所述编译树表示包括由多个边缘互连的多个节点,所述多个 节点中的至少一些表示由所述分层数据格式限定的所述多个对象中的一个并且所述多个 节点中的至少一些表示编译特定对象。
[0014] 表示编译特定对象的所述节点包括矢量容器节点、根节点、空标签节点、W及仅扇 出节点中的一个或多个。
[0015] 确定所述输入流中所述分层数据格式的所述对象之间的容许转换包括处理所述 编译树表示W确定所述编译树表示的所述节点之间的所有容许转换。
[0016] 处理所述编译树表示W确定所述编译树表示的所述节点之间的所有容许转换包 括对于所述编译树表示的每个节点,确定到该节点具有转换的所有节点W及确定该节点到 其具有至少一个转换的所有节点。
[0017] 处理所述编译树表示W确定所述编译树表示的所述节点之间的所有容许转换包 括合并所述节点之间的重复转换W及消除所述节点之间的不完备转换。
[0018] 所述方法还包括为所识别的每个容许转换生成精细边缘,所述精细边缘包括与所 述转换相关联的源节点、与所述转换相关联的目的节点、与所述转换相关联的容器节点、W 及与所述转换相关联的循环行为。
[0019] 将一个或多个数据操作与每个所识别的转换相关联包括分析每个精细边缘W确 定所述一个或多个数据操作。
[0020] -个或多个数据操作包括推送至容器对象的范围的操作、弹出容器对象的范围的 操作、W及读取数据对象的值的操作。
[0021] 确定所述输入流中所述分层数据格式的所述对象之间的容许转换包括生成包括 下述至少一个的输出:所述分层数据格式不包括任何模糊定义的指示、所述分层数据格式 确定包括一个或多个模糊定义的指示、或者包含在所述分层数据格式中任何模糊定义的一 个或多个可能求解。
[0022] 使用下述至少一个来指定表示所述分层数据格式的数据:ASN.l符号、XML符号、 SWIFT符号、X12符号和化7符号。
[0023] 在另一个方案中,一般地,一种生成数据解析器的系统,所述数据解析器用于解析 根据分层数据格式所格式化的输入流,所述系统包括:输入装置或端口,被配置为接收表示 限定W层级组织的多个对象的分层数据格式的信息,所述对象包括表示数据对象的一个或 多个模式对象、W及每个与一个或多个模式对象相关联的一个或多个容器对象;W及至少 一个处理器,被配置为处理所接收到的信息W形成所述数据解析器。所述处理包括:至少部 分基于表示所述分层数据格式的所述信息,确定所述输入流中连续数据对象之间的容许转 换;将一个或多个数据操作与每个所确定的容许转换相关联;W及存储规范,该规范用于将 处理器配置为执行所述数据解析器W : (1)识别所述输入流中的第一数据对象与第二数据 对象之间的转换,W及(2)至少部分基于与一个或多个之前所识别的转换相关联的背景来 对所述第二数据对象内的数据值执行与所识别的转换相关联的数据操作。
[0024] 在另一个方案中,一般地,一种生成数据解析器的系统,所述数据解析器用于解析 根据分层数据格式所格式化的输入流,所述系统包括:用于接收表示限定W层级组织的多 个对象的分层数据格式的信息的装置,所述对象包括表示数据对象的一个或多个模式对 象、W及每个与一个或多个模式对象相关联的一个或多个容器对象;W及用于处理所接收 到的信息W形成所述数据解析器的装置。所述处理包括:至少部分基于表示所述分层数据 格式的所述信息,确定所述输入流中连续数据对象之间的容许转换;将一个或多个数据操 作与每个所确定的容许转换相关联;W及存储规范,该规范用于将处理器配置为执行所述 数据解析器W :(1)识别所述输入流中的第一数据对象与第二数据对象之间的转换,W及 (2)至少部分基于与一个或多个之前所识别的转换相关联的背景来对所述第二数据对象内 的数据值执行与所识别的转换相关联的数据操作。
[0025] 在另一个方案中,一般地,一种存储在计算机可读介质上的软件,用于生成数据解 析器,所述数据解析器用于解析数据对象的输入流。所述软件包括用于使得计算系统执行 下述的指令:接收表示限定W层级组织的多个对象的分层数据格式的信息,所述对象包括 表示数据对象的一个或多个模式对象、W及每个与一个或多个模式对象相关联的一个或多 个容器对象;W及处理所接收到的信息W形成所述数据解析器。所述处理包括:至少部分基 于表示所述分层数据格式的所述信息,确定所述输入流中连续数据对象之间的容许转换; 将一个或多个数据操作与每个所确定的容许转换相关联;W及存储规范,该规范用于将处 理器配置为执行所述数据解析器W : (1)识别所述输入流中的第一数据对象与第二数据对 象之间的转换,W及(2)至少部分基于与一个或多个之前所识别的转换相关联的背景来对 所述第二数据对象内的数据值执行与所识别的转换相关联的数据操作。
[0026] 方案可W具有一个或多个W下优点。
[0027] 组织对来自多个不同系统的数据进行管理。一些系统可W产生系统本地格式的数 据的数据集。其他系统使用符合诸如标准:逗号分隔值(CSV)、可扩展标记语言(XML)、抽象 语法符号一 (ASN.1)、环球银行金融电信协会(SWIFTKX12或另一种标准的非本地格式产生 数据集。一般地,即使当已知数据集使用特定标准时,可能需要根据符合该特别标准的特定 数据格式来解析数据集内的数据对象。
[0028] -些系统通过进口机制接受由其他系统提供的数据集。进口机制将外部数据集转 换为本地系统格式用于处理。一个运种进口机制是数据解析器,其分析根据特别数据格式 (例如,模式)所格式化的数据(例如,被编码为二进制数据的消息或其他文件、或者使用诸 如ASCII文本的字符集)的输入流,并且识别它的组成部分,该组成部分然后被用于填充本 地数据记录的字段。模式(schema)可W被用于例如限定在输入流中可能出现的数据对象的 不同可能有效序列。输入流内的数据对象可W被明确地标记、或者可W被隐式地识别为输 入流内的单独数据对象。
[0029] 在其它优点中,使用本文所述方法产生的数据解析器可W被配置为执行与任何分 层数据格式兼容的数据操作,并且节省开发时间。运相对于传统的数据解析器是一种改善, 传统的数据解析器典型地开发有一组静态的数据格式并且必须被重建或改装W容纳额外 的数据格式,并且当数据正在被解析时不能执行自定义数据操作。
[0030] 本文所述的方法可W将根据广义分层标签值所格式化的数据转换为任何其他数 据格式。
[0031] 因为减少了诸如背景检查的操作,所W本文所述方法的性能可W优于传统方法。
[0032] 本文所述的方法可W利用与选择性的"本地路由(local routing)"相反的"全局 路由(global routing)"。非常普遍地,采用"全局路肚'的数据解析器为它执行的每个解析 操作考虑在给定分层嵌套目标数据格式的所有等级处的元素之间的一些或全部容许转换。 采用"本地路由"的数据解析器为它执行的每个解析操作考虑仅仅在给定分层嵌套目标数 据格式的单个等级处的元素之间的容许转换。利用"全局路肚'潜在地减小解析器所需的检 查(例如,长度检查)的量。具体而言,在分层嵌套模式的情形下,如果被本地完成,则每级模 式可能需要单独测试,然而,如果被全局完成,则可W使用一个且仅仅一个查找或测试来识 另IJ。由此,在一些示例中,消除了每个解析操作之前或之后的额外检查,并且简便地执行长 度检查W例如验证数据的完整性或者处理模糊路线。
[0033] 通过W下描述和权利要求,本发明的其它特征和优点是显而易见的。
【附图说明】
[0034] 图1是数据处理系统的示意图。
[003引图2是示例性数据格式。
[0036] 图3是示例性数据格式的树表示的示意图。
[0037] 图4是转换图。
[0038] 图5A是解析器生成模块的示意图。
[0039]图5B是执行环境的不意图。
[0040]图6是示例性数据格式的范围树表示。
[0041 ]图7是示例性数据格式的详细转换示意图。
[0042] 图8是与数据操作相关联的转换列表。
[004
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1