首页> 中国专利> 一种接口数据文法分析处理系统及其分析处理方法

一种接口数据文法分析处理系统及其分析处理方法

摘要

本发明公开了一种接口数据文法分析处理系统及其分析处理方法,包括通讯装置、文法分析处理装置、分析处理控制装置和输出装置。分析处理控制装置根据设备标示将收到的接口数据送入对应的文法分析处理装置的一个或几个分析处理子装置;分析处理装置将接口数据文法转化为语义单元与分隔符相隔的文法语言或者由长度形成语义单元的文法语言,获得语义单元与分隔符的集合,输出语义单元信息;分析处理控制装置将分析处理后输出的语义单元信息送到输出装置;输出装置向数据应用处理系统输出文法分析处理装置对接口数据文法分析处理后的语义单元信息。本发明不需要硬编码,有效地减少了接口的开发和维护工作量。

著录项

  • 公开/公告号CN1851642A

    专利类型发明专利

  • 公开/公告日2006-10-25

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200510102452.1

  • 发明设计人 魏政元;

    申请日2005-09-09

  • 分类号G06F9/44(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人黄志华

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 17:51:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-11-06

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20080416 终止日期:20120909 申请日:20050909

    专利权的终止

  • 2008-04-16

    授权

    授权

  • 2006-12-20

    实质审查的生效

    实质审查的生效

  • 2006-10-25

    公开

    公开

说明书

技术领域

本发明属于计算机软件技术领域,具体地说是一种接口数据文法分析处理系统及其分析处理方法,通过数据文法处理装置对软件系统采集的数据文法进行分析处理,提取有效信息,不需要硬编码,通过图形界面或者配置文件对数据文法分析处理单元进行配置完成接口数据文法的分析处理,有效地减少了接口的开发和维护工作量。

技术背景

软件系统一般都需要通过接口与不同的外部系统进行对接。实现对接的方式一般可分为数据采集和数据处理两个部分来处理外部系统的数据。数据采集实现准确的数据传输,将外部系统提供的数据采集到软件系统中来,一般是通过标准的、成熟的协议,也可用自定义的协议进行数据采集。数据处理主要针对采集后的数据进行实时的或者定时的处理,将外部系统的接口中的有效信息按照本系统的需要进行提取,这个处理的过程就是对接口数据语言的文法进行处理的过程。在外部系统比较多的情况下,这种处理会变得非常复杂。

以综合网管系统为例,综合网管系统需要与不同专业、不同厂商、不同版本的多种设备进行对接。这些系统接口的数量非常庞大,以电信为例,有传输、交换、动力、数据等专业,每个专业有数个甚至数十个设备提供商,每个设备提供商有多种不同机型,每个机型又有多个不同的版本,甚至每个版本都有几种不同的接口语言。即使上述的每一个接口语言的处理都非常简单,将他们综合到一起也是一个复杂的系统工程。

如果从形式上分,则接口语言可分为以下两种:一种是文本接口语言,也称为人机接口语言,一种是二进制接口语言。二进制接口语言是计算机接口的字节流。二进制接口语言即二进制文法。文本接口语言按照文法的形式一般分为4类:0型:无限制的短语文法。除某些特殊的0型文法可能有解外已经证明无解;1型:上下文相关文法。有解,处理算法的复杂度非常高,时间复杂度都是指数级的,一般接口定义基本上不采用1型文法;2型:上下文无关文法。有解,处理方法成熟,有许多工具可用如编译器的编译器YACC(Yet AnotherCompiler Compiler)、美国太阳公司基于Java语言的编译器的编译器JavaCC(JavaCompiler Compiler)等;3型:正则文法。可转换为2型文法。

在现有技术中,文本接口数据文法的分析处理方法基本上有两种,一种是对每个接口数据进行关键字扫描,提取有效信息;另一种是针对2型与3型文法,利用硬编码或者硬编码生成工具如YACC、JavaCC等完成文法分析处理,然后提取接口数据的有效信息。虽然文本处理方法的关键字扫描效率较高,但是不太可靠。另外有些接口关键字难以确定。进行严格的文法处理比较可靠,但是只能针对2型文法和3型文法,对于1型文法,处理效率太低,基本上不可用,0型文法基本无法处理;由于是硬编码或者由工具生成的硬编码维护较为困难,开发新接口的成本也比较高;由于必须完成全部处理之后才能获取有效信息,影响了数据处理的效率。

二进制接口数据文法的处理方法基本上也有两种,一种是内存硬拷贝处理,另一种是定义一个结构,强制类型转换处理,提取有效信息。内存硬拷贝是最安全的方法,但需要硬编码,不能通用,必须是每种接口实现一种硬拷贝代码。强制类型转换处理实现简单,但是需要处理字节序和字节对齐问题,对于字节对齐问题,由于不同的编译器对字节对齐方式的处理方法不同,会造成代码移植比较困难。同样,强制类型转换也需要硬编码。

发明内容

为克服现有技术之不足,本发明的目的在于提供一种接口数据文法分析处理系统及其分析处理方法,通过数据文法处理单元对采集的接口数据进行处理,以有效地减少接口的开发和维护工作量。

为完成上述发明目的,本发明采取的总体技术方案为:一种接口数据文法分析处理系统,包括以下装置:

通讯装置,它连接设备和分析处理控制装置,用于接受设备上报的数据并进行标示;

文法分析处理装置,它连接分析处理控制装置,包括至少一个数据文法分析处理子装置,用于将接口数据文法转化为语义单元与分隔符相隔的文法语言或者由长度形成语义单元的文法语言,以获得语义单元与分隔符的集合,输出语义单元信息;

分析处理控制装置,它一端连接通讯装置,一端连接文法分析处理装置,用于根据设备标示将收到的接口数据送入对应的一个或几个文法分析处理子装置,并将分析处理后输出的语义单元信息送到输出装置;

输出装置,它连接分析处理控制装置,用于向外部的数据应用处理系统输出文法分析处理装置对接口数据文法分析处理后的语义单元信息。

所述文法分析处理子装置为分隔、测试、模式、类型、搜索、条件或长度分析处理装置。

一种接口数据文法分析处理方法,包括以下步骤:

步骤1、分析处理控制装置根据设备标示将收到的接口数据送入对应的文法分析处理装置的一个或几个分析处理子装置;

步骤2、分析处理装置将接口数据文法转化为语义单元与分隔符相隔的文法语言或者由长度形成语义单元的文法语言,获得语义单元与分隔符的集合,输出语义单元信息;

步骤3、分析处理控制装置将分析处理后输出的语义单元信息送到输出装置;

步骤4、输出装置向数据应用处理系统输出文法分析处理装置对接口数据文法分析处理后的语义单元信息。

所述步骤1中的接口数据的具体包括0型文法数据、1型文法数据、2型文法数据、3型文法数据和二进制文法数据。

所述0型文法数据的处理方法具体是指:将明确不携带语义信息的字符如空格、制表符、回车、换行等直接加入分隔符集合并存入存储器中;将有语义信息的字符存入存储器的语义单元集合中。

所述2型或3型文法处理方法具体包括:将接口数据字符产生式转化为三元素产生式并存入存储器中;将产生式中用户需要输出的字符加入到语义单元集合中,不需要的字符加入到分隔符集合中,并存入存储器;将语义单元集合与分隔符集合分别去掉空终结符,并将结果存储到存储器中。

所述步骤2中的分析处理子装置是指分隔装置,分隔分析处理具体包括以下步骤:

根据接口数据非语义字符的位置和出现的频率生成分隔符序列,并存入计算机存储器中;

调用分隔符序列,对接口数据进行分割;

输出语义单元信息。

所述步骤2中的分析处理子装置是指类型装置,类型分析处理具体是指使计算机终端输出的语义单元信息符合预定义的类型,这些类型包括算术类型、字符串类型、时间类型。

所述步骤2中的分析处理子装置是指模式装置,模式分析处理具体包括以下步骤:

对接口数据中的语义单元进行模式匹配;

输出语义单元信息。

所述步骤2中的分析处理子装置是指测试装置,测试分析处理具体是指对接口数据中的语义单元字符或字符串之间的逻辑关系进行真假判断。

所述步骤2中的分析处理子装置是指搜索装置,搜索分析处理具体是指用字符串组成的关键字对接口数据中的语义单元字符进行搜索,并对搜索结果进行真假判断。

所述步骤2中的分析处理子装置是指条件装置,条件分析处理具体是指对接口数据中的语义单元之间的关系进行测试判断,并根据测试结果真假执行相应的语句。

所述步骤2中的分析处理子装置是指长度装置,长度分析处理具体是指获取接口数据中长度分隔符分隔的字段的内存段。

本发明具有显著的特点和有益的技术效果,用预先实现的文法处理子装置对文法进行层层处理,使文法的处理由复杂变简单。在实现一定的通用的处理子装置的基础上,用户可以参与的部分如等价语言转化、处理子装置选择、分隔符序列确定等部分能够独立出来,由用户在不需要硬编码的情况下通过图形界面或者配置文件参与处理。相比全部由计算机实现的方法,效率比较高,而且有些计算机无法解决的问题,通过人的参与也可以部分解决。由于接口的文法处理基本上不需要硬编码,可以有效减少开发和维护工作量。

附图说明

图1为本发明的装置构成图;

图2为主流程图;

图3为本发明具体实施例中的接口数据格式示意图。

具体实施方式

下面结合说明书附图来说明本发明的具体实施方式。

请参阅图1,本发明的接口数据文法分析处理系统,包括:通讯装置,它连接设备和分析处理控制装置,用于接受设备上报的数据并进行标示。通信装置负责在设备与软件系统之间建立连接,将设备上报的数据打上标签(tag)后发给分析处理控制装置。标签是标明从哪个设备发送的何种数据,每一种上报的数据类型分配一个标签,在配置文件中编写一个配置模块,配置文件由所有的配置模块组成。

文法分析处理装置,它连接分析处理控制装置,包括至少一个数据文法分析处理子装置,用于将接口数据文法转化为语义单元与分隔符相隔的文法语言或者由长度形成语义单元的文法语言,以获得语义单元与分隔符的集合,输出语义单元信息。分析处理装置对打过标签的数据进行分析并将结果上报给应用处理系统处理,它接收不同的数据,分析过后生成统一的对应用系统有意义的结果,如配置文件中的长整形数。

分析处理控制装置,它一端连接通讯装置,一端连接文法分析处理装置,用于根据设备标示将收到的接口数据送入对应的文法分析处理子装置,并将上一子装置分析处理后输出语义单元信息送到输出装置或送入下一个子装置进行分析处理;

输出装置,它连接分析处理控制装置,用于向数据处理系统输出文法分析处理装置对接口数据文法分析处理后的语义单元信息。

软件系统启动的时候,文法分析处理装置初始化读入分析处理子装置的配置文件,记入内存,配置文件记录的就是每种类型分析子装置的执行序列。分析处理控制装置收到待分析处理数据后根据标签(tag)找到对应的执行序列,它根据执行序列依次将待分析处理数据与上一个分析处理子装置的输出放入下一个分析处理子装置,序列执行完毕之后将每个类型容器的输出发给输出装置。输出装置将输出提交到上层系统,输出格式一般整个软件系统是统一的,这样增加设备只需要修改分析处理子装置的配置文件,增加执行序列,接口部分不需要硬编码,上层软件也不需修改。

分析处理装置包括分隔、测试、模式、类型、搜索、条件或长度分析处理装置。

任意接口数据的文法G包括0型、1型、2型、3型文法和二进制数据文法,由这些文法生成的语言都可以转化为等价的如下两种语言之一,由文法G生成的语言记为L(G)。

语言一,记为CL1(G):

L(G)={w1c1w2c2…wn-1cn-1wn|w1…wn∈T*、c1…cn-1∈T*、T为文法的字母表}

w1c1w2c2…wn-1cn-1wn为语言L(G)的句型,c1…cn-1为分隔符,分隔符的集合记为D,w1…wn为语义单元,语义单元的集合记为E。

语言二,记为CL2(G):

L(G)={w1w2w3…wm|Length(wi)=n,i∈{1,2,3,…,m},n是一个文法定义的确定的长度值。

同样,w1…wn为语义单元,不过在CL2(G)中语义单元并不是用分隔符分开,而是根据其长度分开的,可以将长度理解为一种抽象的分隔符。

在对接口数据的处理中需要获得的是语义单元信息,分隔符只在文法处理的时候有意义。如接口“temperature=20℃,实际关心的是temperature和20℃,在特定情况下,如接口数据定义中只有摄氏度一种情况,对“℃”这个符号不关心,也可以当成分隔符。从这个例子可以看出,分隔符与语义单元不是绝对的,需要获得的有效信息就是语义单元,其它的都是分隔符。语义单元本身是自包含的,即每一个语义单元可以被分隔成更小的语义单元,只要存在合适的分隔符。

请参阅图2,本发明的主流程图。接口数据的文本文法语言宜转化为CL1(G),包括0型、1型、2型、3型文法,二进制接口语言宜转化为CL2(G)。本发明将文本语言转化成CL1(G)、将二进制语言转化为CL2(G)的步骤如下:

步骤1、分析处理控制装置根据设备标示将收到的接口数据送入对应的文法分析处理装置的分析处理子装置,它根据CL1(G)或者CL2(G)的每一种句型的包含有语义单元集合序列的文法的特征选择文法分析处理子装置。

步骤2、分析处理子装置将接口数据文法转化为语义单元与分隔符相隔的文法语言CL1(G)或者由长度形成语义单元的文法语言CL2(G),获得语义单元与分隔符的集合,输出语义单元信息。

步骤3、分析处理控制装置将上一子装置分析处理后输出语义单元信息送到输出装置或送入下一个子装置进行分析处理。

步骤4、输出装置向数据处理系统输出文法分析处理装置对接口数据文法分析处理后的语义单元信息。

文法分析处理装置可以根据需要扩充,加入新的分析处理子装置。

任意接口数据文法语言能转化为等价文法语言CL1(G)或者CL2(G)。文本接口数据文法语言中使用最多是的2型文法和3型文法,3型文法由于可以转化为2型文法,原理同2型文法。

2型文法用G={T,N,P,S}描述,其中T/N/P/S含义如下:

T:终结符的集合

N:非终结符的集合

P:文法规则A→α的集合,其中A∈N,α∈(N∪T)*

S:文法的开始符号,S∈N

L(G)={w∈T*|存在G的一个推导S=>*w}

w是终结符的一个串,称作句子,2型文法描述的文法语言是从开始符号推出的字符串的集合。只要每个产生式都转化为A→w1c1w2的形式,w1w2∈E,c1∈D,就能保证文法产生的文法语言是CL1(G)。通过如下步骤对每个产生式进行转化:

首先,将接口数据字符产生式转化为三元素产生式,即:将任意产生式转化为A→αβγ形式,α,β,γ∈N∪T*

1)A→α转化为A→εαε

2)A→αβ转化为A→αβε

3)A→αβγδ…转化为A→αβA′ A′→γδ…

然后,将用户需要输出的字符加入到语义单元集合中,不需要的字符加入到分隔符集合中,即:对每一个产生式A→αβγ

1)如果需要从接口中获得αγ,则E=E+{α,γ},D=D+{β}

2)如果需要从接口获得β,则E=E+{β},D=D+{α,γ}

3)如果需要从接口获得α,则E=E+{α},D=D+{βγ},这里的βγ是β与γ连成的一个串

4)如果需要从接口获得γ,则E=E+{γ},D=D+{αβ}

最后,语义单元集合与分隔符集合分别去掉空终结符,并将结果存储到存储器中。即:

E=E-{ε},D=D-{ε}

经过以上步骤,我们就将每个产生式都转化成了A→w1c1w2的形式,同时得到了语义单元的集合E和分隔符的集合D。

对于0型语法,由于0型语法没有什么规律可言,基本是只有人才能完全理解的信息,因此只能利用人的观察通过计算机现实终端的人机界面才能转化。步骤如下:

1、将明确不携带语义信息的序列如空格、制表符、回车、换行等空白符号序列加入分隔符集合D。

2、将分隔符集合之外的字符存入存储器的语义单元集合中。如果D=φ,对每一个w∈L(G),令E=E+{w},即每个句子只有一个大的语义单元、无分隔符。

1型文法与2型文法比较类似,文法也可由产生式定义,只是产生式有依赖性,如1型文法的典型产生式为:

A→αβα,是用β格开的两个相同的α。

利用与2型文法相同的处理方法处理1型文法,产生的语言为CL1(G)。

实施例:如图3示,对于二进制接口数据,本发明以一个典型的二进制接口即互联网协议(IP)的包头来作为一个具体的实施例。IP包头典型的二进制接口数据有如下几种字段:

1、定长字段,如版本(Version)、服务类型(Type of Service)等。

2、长度字段,如头长度(Header Length)、总长度(Total Length)等,长度字段也是一种定长字段,它标明了后面某字段的长度,故称为长度字段。

3、变长字段,如选项(Options),在IP包头中Options字段可以是0~4字节,但在一次接口实例中,它的长度也是固定的。

综上所述,在二进制接口中没有分隔符的概念,分隔的概念是隐藏在长度中的,本发明将长度作为分隔符。

本发明把一个字段的起点记为Sn、长度记为Ln,其中,n为二进制文法中本字段的顺序号,从1开始递增;Ln为接口描述中指定的长度。

用序列(Sn,Ln)表示一个二进制接口数据字符中的语义单元与分隔符,此时分隔符与语义单元是等价的。变长字段的长度是不确定的,它的长度通过相关的长度字段的值经过一定运算后获得。本发明用m表示相关的长度字段的序号,用|(Sm,Lm)|表示序号为m的长度字段的值,用Exp()表示特定的运算。则变长字段的长度Ln=Exp(|(Sm,Lm)|)。如上述IP包头中的“Options”和“Padding”的长度等于Header Length字段的值减去20。

进行如下操作:

1)对每个定长字段,Ln=接口中标明的长度, >>>S>n>>=>>Σ>>i>=>0>>>n>->1> >>L>i>>,> >E=E+{(Sn,Ln)};

2)对每个长度字段,同1;

3)对每个变长字段, >>>S>n>>=>>Σ>>i>=>0>>>n>->1> >>L>i>>,> >Ln=exp(|(Sm,Lm)|),E=E+{(Sn,Ln)}

4)令D=E

可以得出,L(G)={w1w2w3…wn|wi∈E、|E|=n},符合CL2(G)

完成上述步骤后,所有的接口数据的文法都转化为CL1(G)和CL2(G)。

文法分析处理装置记为UC,包含语义单元w的文法分析处理装置记为UC(w),提取出的有效信息记为|UC(w)|。下面就每种文法处理子装置分别说明。

分隔处理子装置,记为SeparateUC(D)(w),分隔处理子装置的语义单元w被分隔符的序列D分隔成一个个小的语义单元。本发明将w本身记为$0,将分隔出的小的语义单元按照顺序记为$1…$n。如:SeparateUC((″;(2)″,″.″,″xyz″))(″123;xxx;a,b,c,abcxyz″),这个语法处理单元输出的值包括:

$0=″123;xxx;a,b,c,abcxyz″;

$1=″123″;$1=″xxx″;$2=a;$3=b;$4=c;$5=abc

分隔符序列(″;(2)″,″,″,″xyz″)的含义是先用2个“;”分隔,然后用任意多个“,”号分隔直到遇到下个分隔符“xyz”。

分隔符序列确定方法如下:

1、令分隔符序列SD=()

2、对句子的每一个连续出现一次的c∈D,SD=SD+(″c(1)″)

3、如果句子中连续出现的n次c∈D,则SD=SD+(″c(n)″),n表示连续出现的次数。

以某厂商一条设备告警的句子为例:

mcode atag REPT ALM EQPT

“aid_eqpts:cond_eqpt,condeff,ocrdat,ocrtm:cond_descr”;

由以上步骤可以得出的分隔符序列为:

(″(5)″,″\n(1)″,″\″(1)″,″:(1)″,″,(3)″,″:(1)″,″\″(1)″)

为简洁起见,用不带“(次数)”的″c″表示用c分隔直到遇到下一个分隔符或者句子结束,用WS表示所有空白符号,则上述分隔符结合可写作:

(″WS″,″\n″,″\″″,″:″,″,″,″:″,″\″″)

类型处理子装置,记为TypeUC(T)(w),类型处理子装置的语义单元必须符合预定义的类型,目前实现的类型有算术类型如整数、浮点数、表达式TypeUC(long),TypeUC(double),TypeUC(exp);字符串类型TypeUC(string);时间类型TypeUC(time)。|TypeUC(T)(w)|表示w类型转换为T类型的值。如|TypeUC(long)(″123″)|=123。

模式处理子装置,记为PatternUC(P)(w),处理子装置对接口数据中的语义单元进行模式匹配,P是描述模式的字符串。如语义单元“abc-2.4defxyz”,的模式可写为(″abc″$″def″$),则|PatternUC(″abc″$″def″$)(abc-2.4defxyz)|=(″-2.4″,″xyz″),其中可通过$1获取字符串″-2.4″,通过$2获取字符串″xyz″。

如果与分析处理子装置类型配合可分别获得其中的浮点数-2.4和字符串xyz。如:|PatternUC(″abc″TypeUC(double)($)″″def″$)(abc-2.4defxyz)|={-2.4,″xyz″}

又如:|TypeUC(time)(|PatternUC(Y:M:D h:m:s)(″2004:11:28 17:28:25″)||=2004年11月28日17时28分25秒的计算机表示。

测试处理子装置,记为TestUC(C)(w1,w2),测试处理子装置对接口数据中的语义单元w进行逻辑关系的条件判断,输出真假。条件C包括{=,>,<,>=,<=,!=},如:令w=″100″,则有

|TestUC(=)(w,″100″)|=TRUE,|TestUC(!=)(w,″100)|=FALSE

测试分析处理也可以与类型处理合用进行各种类型的条件判断。如:

|TestUC(=)(TypeUC(long)(w),100)|=TRUE

搜索处理子装置,记为SearchUC(K)(w),搜索处理子装置对接口数据中的语义单元w进行关键字K搜索,关键字是个字符串。如果搜索到则为真:|SearchUC(K)(w)|=TRUE,否则为假:|SearchUC(K)(w)|=FALSE。搜索处理子也可以看作是一种特殊的测试处理,它的功能是测试关键字K是否存在。

条件处理子装置,记为IfUC(T)(w)(A1,A2),条件处理子装置对接口数据中的语义单元w进行测试,如果结果为真则执行A1语句,为假执行A2语句。A1、A2为赋值语句。条件处理类似C语言中的条件语句,它可以是测试处理或者搜索处理。如:另w=″100″,则有:

IfUC(|TestUC(=)(w,″100″)|)($$=″0″,$$=″1″)|=″1″,$$表示处理本身的值。

长度处理子装置,LengthUC(L),此处理子装置主要是针对二进制接口数据,L为表示二进制分隔符,|LengthUC(L)|=二进制接口中L分隔符分隔的字段的内存段,与类型处理合作可以取出特定类型的值。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号