CN106790108B - 协议数据解析方法、装置和系统 - Google Patents
协议数据解析方法、装置和系统 Download PDFInfo
- Publication number
- CN106790108B CN106790108B CN201611219683.5A CN201611219683A CN106790108B CN 106790108 B CN106790108 B CN 106790108B CN 201611219683 A CN201611219683 A CN 201611219683A CN 106790108 B CN106790108 B CN 106790108B
- Authority
- CN
- China
- Prior art keywords
- stack
- symbol
- protocol
- state
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Devices For Executing Special Programs (AREA)
- Communication Control (AREA)
Abstract
本公开涉及一种协议数据解析方法、装置和系统,包括:接收待匹配协议数据,将协议的终结符号压入符号栈;获取状态栈的当前栈顶状态和符号栈的当前栈顶符号;将当前栈顶符号输入至与当前栈顶状态相对应的词法分析器;接收词法分析器的返回结果;在结果为带谓词的终结符号时,根据当前栈顶状态和带谓词的终结符号,确定产生规约事件或是移进事件;在产生移进事件时,将根据当前栈顶状态和带谓词的终结符号确定的下一状态压入状态栈,将带谓词的终结符号压入符号栈。通过上述技术方案,可以减少词法分析器中的模式串的数量,降低词法分析的复杂度,从而提高词法分析的效率。同时,可以避免产生语法冲突,从而提高协议数据解析的效率和准确性。
Description
技术领域
本公开涉及协议解析领域,具体地,涉及一种协议数据解析方法、装置和系统。
背景技术
网络协议是网络通信的基础,协议解析是对网络数据包的各个部分按照协议规范进行分析,得到数据包准确且详细的信息,用于协议之上各种网络功能。随着网络应用的日益繁多,网络协议的数量也呈现爆炸式增长,使得采用人工编码的方式解析协议变得费时费力。为了提高协议解析的灵活性和工程化效率,出现了基于编译技术的协议解析方法。
现有技术中,基于编译技术的协议数据分析为将协议数据输入词法分析器进行匹配后,然后将词法分析器的输出结果送给语法分析器,以根据状态机的状态进行协议解析。对于相对复杂的协议,词法分析器的模式串数量大且模式特征过于复杂,同时存在精确串和正则串,难以选择高效的多模匹配算法。另外,如果词法分析器产生变化,会改变语法分析的输入符号序列,可能会影响语法分析中的任何产生式,难以进行扩展。
发明内容
本公开的目的是提供一种快速准确、易扩展的协议数据解析方法、装置和系统。
为了实现上述目的,根据本公开的第一方面,提供一种协议数据解析方法,包括:接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶;将所述待匹配的协议数据输入至与所述当前栈顶状态相对应的词法分析器;将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;接收所述词法分析器的返回结果;在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串;在确定产生移进事件时,执行移进操作,返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤。
可选地,所述方法还包括:在确定产生规约事件时,执行规约操作,并返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤。
可选地,所述方法还包括:在所述返回结果为非终结符号时,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件;在确定产生移进事件时,执行移进操作;根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件;在判定能继续产生规约事件时,返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤;在判定不能继续产生规约事件时,返回所述接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶的步骤,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
可选地,所述方法还包括:在确定产生规约事件时,进行规约操作,并返回所述根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件的步骤;在确定产生接受事件时,获得协议的目标非终结符号。
可选地,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
根据本公开的第二方面,提供一种协议数据解析装置,包括:第一接收模块,用于接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶;第一输入模块,用于将所述待匹配的协议数据输入至与当前栈顶状态相对应的词法分析器;第二输入模块,用于将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;第二接收模块,用于接收所述词法分析器的返回结果;第一确定模块,用于在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串;第一处理模块,用于在确定产生移进事件时,执行移进操作,并重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
可选地,所述装置还包括:第二处理模块,用于在确定产生规约事件时,执行规约操作,并重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
可选地,所述装置还包括:第二确定模块,用于在所述返回结果为非终结符号时,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件;第三处理模块,用于在确定产生移进事件时,执行移进操作;判断模块,用于根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件,在判定能继续产生规约事件时,重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,在判定不能继续产生规约事件时,重新触发所述第一接收模块接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
可选地,所述装置还包括:第四处理模块,用于在确定产生规约事件时,进行规约操作,并重新触发所述判断模块根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件;第五处理模块,用于在确定产生接受事件时,获得协议的目标非终结符号。
可选地,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
根据本公开的第三方面,提供一种协议数据解析系统,包括:多个词法分析器,所述多个词法分析器与语法分析器的多个状态一一对应;所述语法分析器,包括控制器、状态栈和符号栈,其中,所述控制器包括上述的协议数据解析装置。
可选地,所述系统还包括:引用栈,用于存储至少一个模式串,所述引用栈能够被所述多个词法分析器中的至少两个词法分析器访问,以使所述至少两个词法分析器能够根据引用标识从所述引用栈获取相应的模式串。
通过上述技术方案,由于本公开中不同的状态对应不同的词法分析器,在不同状态下,当匹配到相同的模式串时,也可以向语法分析器输入不同的非终结符号,相对独立的词法分析器的变化影响范围较小,使得词法分析器的修改和扩充更加方便。同时,减少词法分析器中的模式串的数量,可以降低词法分析的复杂度,使得词法分析器可以根据模式串的特点选择最适宜的模式串匹配算法,从而提高词法分析的性能。词法分析器在进行模式串匹配时,只需要匹配当前状态下对应的词法分析器中归集的模式串,可以避免产生语法冲突,从而提高协议数据解析的效率和准确性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开的一种实施方式提供的协议数据解析方法的流程图;
图2是根据本公开的另一种实施方式提供的协议数据解析方法的流程图;
图3是根据本公开的实施方式提供的一种协议数据解析装置的框图;
图4是根据本公开的一种实施方式提供的协议数据解析系统的框图;
图5是根据本公开的一种实施方式提供的语法分析器的状态迁移图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
本协议数据解析系统分为系统开发阶段和系统运行阶段。在系统开发阶段采用带谓词的上下文无关文法定义协议解析规则。首先定义描述协议字段的模式串,对于复杂的模式串可以进一步分割成多个模式串,然后将模式串作为协议的终结符号的谓词,将终结符号和模式串作为带谓词的终结符号,定义解析规则文法的基础产生式;将协议字段之间的关系或协议字段分割后模式串之间的关系定义为解析规则文法的扩展产生式。
以下,首先介绍系统开发阶段,该阶段编写协议解析规则。通过使用带谓词的上下文无关文法定义该协议解析规则文法,规则文法的基础产生式定义协议字段,扩展产生式定义协议字段的语法关系。
文法格式如下:
G={VT,VN,S,R,P}。
其中,VT为终结符号集,即代表待匹配的协议数据;VN为非终结符号集,即协议分析产生的各个协议字段;S是目标文法符号,即协议解析的目标非终结符号,规约到S则终止协议分析;R是文法的产生式集,定义协议各协议字段的组合关系,P是文法的谓词集,定义描述各个协议字段的模式串。
首先,将待匹配的协议数据定义为终结符号,“终结”代表着不可再细分,是协议解析的基础符号。如果协议是在输入时需要区分命令和应答,可以定义两个终结符号,分别为命令终结符号和应答终结符号。
每个终结符号带上谓词为带谓词的终结符号,表示协议的协议字段,即如果协议数据匹配上该谓词,则该谓词所对应的数据匹配范围的数据为该带谓词的终结符号所表示的协议字段。对于描述协议字段的简单模式串,将其定义成基础产生式,其中产生式右部为带谓词的终结符号且产生式左部为产生的协议字段符号,即非终结符号。
以下以MIME协议为例:
基础产生式的定义:
MIME_Header_From:mime_atom_stream($1~/^From:.*\r\n/i);
mime_atom_stream为协议的终结符号,“^From.*\r\n”为模式串,其数据匹配范围代表MIME的发件人首部协议字段MIME_Header_From。上述产生式为基础产生式,位于产生式左部的符号被称为非终结符。
为了描述多个协议单元之间的关系和更大的协议字段对象,协议解析规则文法中可以定义扩展产生式以描述多个协议字段可以组成更大的协议字段。例如:
MIME_Header_Receiver:MIME_Header_To MIME_Header_Cc;
上述扩展产生式描述了邮件接收者协议字段MIME_Header_Receiver是邮件的收件人协议字段MIME_Header_To和邮件的抄送人协议字段MIME_Header_Cc的组合。
扩展产生式的灵活定义,可以使得协议解析的协议层次更清晰、语法更简洁。同时可以尽可能减少人工编码,配合词法分析器选择更高效的匹配算法。为了构造良好的协议解析文法产生式,扩展产生式的构造可以使用递归产生式、产生式分支优化和产生式词法展开等方法。
如果扩展产生式中协议字段是由一个或多个相同的协议字段组成,可以定义递归产生式,例如:
MIME_Header_Multi:MIME_Header_One|MIME_Header_Multi MIME_Header_One;
递归产生式通常用来描述多个不确定出现顺序的协议字段,其构造方法是先定义一个扩展产生式,产生式的左部是一个抽象的协议字段,产生式的右部是几个不确定出现顺序的协议字段的逻辑或,然后再定义这个抽象的协议字段的递归产生式,例如:
MIME_Header_One:MIME_Header_Subject|MIME_Header_Content_Type;
即协议字段MIME_Header_Subject和MIME_Header_Content_Type是MIME的首部协议字段,但无法确定二者出现在数据中的顺序。
递归产生式还需要一个跳出递归的方法,以避免文法分析的死循环。因此还需要一个往上层规约的扩展产生式,例如:
MIME_Headers:MIME_Header_Multi MIME_Header_End;
使用递归产生式的优点是表达简洁,例如使用非递归产生式的表达方法如下:
MIME_Headers:MIME_Header_Subject MIME_Header_Content_Type MIME_Header_End;
MIME_Headers:MIME_Header_Content_Type MIME_Header_Subject MIME_Header_End;
通过上述对比可知,使用递归产生式可以减小文法的复杂度,并且可以将识别MIME_Header_Subject、MIME_Header_Content_Type和MIME_Header_End的有区分度的模式串归集到同一个词法分析器的模式串集合中,可以提高模式串匹配的效率。例如:
MIME_Header_Subject:mime_atom_stream($1~/^Subject:.*\n(\t.*\n)*/i);
MIME_Header_Content_Type:mime_atom_stream($1~/^Content-Type:.*\n(\t.*\n)*/i);
MIME_Header_End:mime_atom_stream($1~/(^|\n).*\r\n/i);
即该语法分析状态下的词法分析器的模式串集合包含以上三个正则模式串,可以减少文法产生式右部的复杂度。
通过使用扩展产生式描述协议解析规则中的分支判定,可以减少协议解析中动作部分需要人工编码的复杂度。
例如,协议的Content-Transfer-Encoding首部字段定义了协议正文的传输编码类型,现有技术的文法分析处理方法是定义该首部的基础产生式并保存编码类型的动作,然后在邮件正文解析时判断编码类型并给予不同的解析动作,例如:
而在采用扩展产生式优化后:
MIME_Header_Content_Transfer_Encode_base64:
mime_atom_stream($1~/^Content-Transfer-Encoding:base64\r\n/i);
MIME_Body_Base64:MIME_Body{
mime_body_action_base64($1,...);};
MIME_Header_Content_Transfer_Encode_quoted_printable:
mime_atom_stream($1~/^Content-Transfer-Encoding:quoted_printable\r\n/i);
MIME_Body_Quoted_Printable:MIME_Body{
mime_body_action_quoted_printable($1,...);};
优化后的扩展产生式的文法描述更加清晰,还可以跟其他复杂分支条件进一步组合,例如邮件正文的编码字符集也是由邮件首部给出的:
MIME_Header_Charset_UTF8:mime_atom_stream($1~/charset=.*UTF-8.*\r\n/i);
MIME_Header_Charset_GB2312:mime_atom_stream($1~/charset=.*GB2312.*\r\n/i);
……
MIME_Body_UTF8_Base64:MIME_Body{mime_body_acton_utf8_base64($1,…);};
MIME_Body_GB2312_Base64:MIME_Body{mime_body_acton_gb2312_base64($1,…);};
MIME_Body_UTF8_Quoted_Printable:MIME_Body{
mime_body_acton_utf8_quoted_printable($1,…);};
MIME_Body_GB2312_Quoted_Printable:MIME_Body{
mime_body_acton_gb2312_quoted_printable($1,…);};
协议解析规则文法的基础产生式定义协议字段的文法描述,对于复杂的协议字段,产生式右部终结符的模式串也会很复杂。对于描述协议字段的复杂模式串,可以通过产生式词法展开的方法,将复杂模式串分割成多个简单模式串,根据每个简单模式串定义一个基础产生式,其中产生式右部为带谓词的终结符号且产生式左部为非终结符号,即分割后细化的协议字段域。然后根据协议字段域定义扩展产生式,其中产生式右部为协议字段域的语法关系且产生式左部为产生的协议字段。
例如邮件Subject协议字段,可能对应一个多行多字符集多编码类型的数据内容:
“Subject:=?utf-8?B?UE1D55Sf5Lqn6K6h5YiS5Y+K54mp5paZ5o6n5Yi2IOWKoeWuniAgICAg?==?GB2312?B?t6I=?=”
为了解析得到原始的数据内容,简单的基础产生式定义为:
MIME_Header_Subject:mime_atom_stream($1~/^Subject:.*((=\?[a-zA-Z0-9-]+\?=\r\n)([\t\s]+=\?[a-zA-Z0-9-]+\?=)*)*/i){mime_subject_decode_action($1,...)};
该产生式右部终结符的模式串很复杂,文法的解析程度也不够,导致产生式的动作部分会很复杂。采用产生式词法展开的方法,可以对产生式的词法进行分割,描述成扩展产生式如下:
即通过产生式词法展开的方法构造扩展产生式后,主要的解析逻辑由一个产生式的动作部分展开到多个扩展产生式的动作部分,用于词法分析的词法分析器由一个展开成多个,可以有效降低词法分析的复杂度,也可以使得语法分析的逻辑更清晰明了,具有协议字段分层描述能力。同时可以使得对应的需要人工编码的产生式动作部分的逻辑更加简单,更加符合主要解析逻辑由文法产生式描述的解析规则文法的编写原则。
协议解析扩展产生式的词法展开,使得协议字段内容的复杂关系既可以用谓词模式串描述,也可以用分层的文法产生式描述,提供了一种均衡考虑词法和语法分析效率的方法,使得协议解析规则开发者可以根据协议的语法和词法复杂度考虑不同的规则产生式写法,综合考虑文法和词法的复杂度和性能。
产生式词法展开后,用于词法分析的词法分析器由一个展开成多个,对于某些特殊的数据匹配,例如在一个协议字段上定义的一段数据在另一个协议字段的数据中被引用,因此需要定义一种数据的引用方法描述跨词法分析器的词法匹配,即通过采用引用栈的方式以实现动态存储和动态引用。
例如邮件正文可以由多部分组成:
Content-Type:multipart/related;boundary=\"=====003_Dragon236671608472_=====\"
…...
--=====003_Dragon236671608472_=====
Content-Type:multipart/related;boundary=\"=====002_Dragon236671608472_=====\"
…...
--=====002_Dragon236671608472_=====
…...
--=====002_Dragon236671608472_=====--
--=====003_Dragon236671608472_=====
…...
--=====003_Dragon236671608472_=====--
如上所示的邮件正文是由两部分组成,两部分由边界字符串分割,且边界字符串由“boundary=”定义,然后边界“=====002_Dragon236671608472_=====\”包围的正文嵌套在边界“=====003_Dragon236671608472_=====”包围的内容之内。对边界字符串的引用符合先入后出的顺序,所以可以采用引用栈扩展表达式的方式实现。
首先在邮件的头部定义边界字符串的名称:
MIME_Header_Boundary:mime_atom_stream($1~/boundary=[“]?([^\n]+)[“]\r\n~dynref_push(“boundary”,\1)/i);
即“dynref_push”是动态存储表达式的关键词,即词法分析器匹配命中模式串第1个分组的数据被当做边界字符串存储到引用栈的栈顶且命名为“boundary”。
邮件正文中每个部分由边界头和边界尾分割,分别由动态引用表达式定义:
MIME_Body_Boundary_Start:mime_atom_stream($1~/--([^\n]+)\r\n~dynref_top(“boundary”,\1)/i);
MIME_Body_Boundary_End:mime_atom_stream($1~/--([^\n]+)--\r\n~dynref_top(“boundary”,\1)/i)
{dynref_pop(“boundary”);…};
即“dynref_top”是动态引用表达式的关键词,即词法分析器匹配命中模式串第1个分组的数据只能是存储在引用栈栈顶且命名为“boundary”的数据。为了配合对引用栈中存储数据的操作,在产生式的动作部分定义可选的dynref_pop函数以实现引用栈的栈顶数据出栈的操作,即通过动态存储表达式和动态引用表达式实现引用数据在多个产生式谓词上的引用。
上述部分详细介绍的本公开中的基础产生式和扩展产生式的编写规则,以下介绍系统运行阶段的详细内容。
在系统运行阶段,分为预处理步骤和解析步骤。在预处理步骤中,根据上述的协议解析规则文法编写规则编写协议解析规则文法,生成一个用于规则语法分析的语法分析器。其中,包含一个状态自动机,然后根据语法分析器中自动机的每个状态下可输入的文法符号谓词的模式串归集起来,构建该状态下的词法分析器,并由语法分析器根据不同的自动机状态动态调用以分析该状态下待解析的协议字段的若干模式串。
语法分析器的自动机使用LALR语法分析方法生成,其组成包括:控制器、状态栈和符号栈、状态跳转表和动作表、输入和输出。其中,控制器负责自动机调度,状态栈保存自动机状态,符号栈保存输入符号,动作表保存自动机下一步的动作,输入的是协议终结符号和协议数据,输出的是已解析的协议字段。
词法分析器的建立方法是:检查文法LALR生成算法所生成的代表每个自动机状态的项目集,归集项目集中所有的终结符号谓词的模式串生成一个模式串集合。由于词法分析器是根据不同自动机状态下的项目集建立的,模式串集合可能包含一个或多个模式串,所以可以根据模式串的数量和特点使用不同的模式匹配算法,如果模式串集合为空,说明该项目集中下一个可输入符号是非终结符号,词法分析器默认返回非终结符号自身即可;否则,建立模式串的多模匹配算法,且对特征引用规则的分词特征建立动态存储标识,对引用匹配规则的分词特征建立动态引用标识,每组引用关系使用给定栈名的引用栈,由规则编写者根据协议特性指定栈名,通过栈名查找相应的引用栈。
由于协议的每个字段是没有歧义的,所以协议解析过程中得到的每个协议字段也应该是无歧义的,产生协议字段的词法分析器每次匹配只能返回一个确定的命中模式串。因此词法分析器中模式串的多模匹配算法需要具有“非贪婪”的特性,即当匹配到一个模式串时立即终止匹配,返回的是数据匹配范围最短的协议字段,避免解析的歧义。语法分析器每动态调用一次语法状态下的词法分析器,都要根据词法分析器所返回模式串的数据匹配范围调整剩余待匹配的协议数据。
以下详细介绍协议解析部分。图1所示,为根据本公开的一种实施方式提供的协议数据解析方法的流程图。如图1所示,该方法包括以下步骤:
在步骤S11中,接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶,其中,该协议终结符号为在系统开发阶段中的定义的协议终结符号。
在步骤S12中,将待匹配的协议数据输入至与状态栈的当前栈顶状态相对应的词法分析器。
在步骤S13中,将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
其中,该词法分析器是通过上述系统运行阶段中的预处理部分中根据语法分析中的状态对应生成的,该词法分析器中为归集了当前栈顶状态下的所有模式串的模式串集合。
该词法分析器的词法分析过程为:如果当前栈顶符号为非终结符号或是带谓词的终结符号,则词法分析器返回该符号本身,词法分析完成;如果当前栈顶符号为终结符号,则将待匹配的协议数据与该词法分析器中的模式串集合用多模匹配算法进行匹配,在发现第一个模式串命中时判断模式串标识:若标识为动态存储标识,则将命中的数据内容存储到引用栈,返回带谓词的终结符号和数据匹配范围并终止匹配;若标识为动态引用标识,则将命中的数据内容与引用栈的栈顶数据比较,若相等则返回带谓词的终结符号和数据匹配范围,否则忽略当前命中的模式串继续匹配;若无标识,则终止匹配并返回带谓词的终结符号和数据匹配范围,词法分析完成。
在步骤S14中,接收所述词法分析器的返回结果,该返回结果可以是带谓词的终结符号或是非终结符号。
在步骤S15中,在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串。
在语法分析器的输入符号为带谓词的终结符号时,通过查询动作表,可以确定产生规约事件或是移进事件,该动作表是通过在预处理阶段生成语法分析器时,根据系统开发阶段编写的协议解析规则文法生成的。
在步骤S16中,在确定产生移进事件时,执行移进操作,并返回步骤S13。
其中,移进操作包括:将根据状态栈的当前栈顶状态和所述词法分析器的返回结果确定的下一状态压入状态栈的栈顶,将所述词法分析器的返回结果压入所述符号栈的栈顶。
通过上述技术方案,由于本公开中不同的状态对应不同的词法分析器,在不同状态下,当匹配到相同的模式串时,也可以向语法分析器输入不同的非终结符号,相对独立的词法分析器的变化影响范围较小,使得词法分析器的修改和扩充更加方便。同时,减少词法分析器中的模式串的数量,可以降低词法分析的复杂度,使得词法分析器可以根据模式串的特点选择最适宜的模式串匹配算法,从而提高词法分析的性能。词法分析器在进行模式串匹配时,只需要匹配当前状态下对应的词法分析器中归集的模式串,可以避免产生语法冲突,从而提高协议数据解析的效率和准确性。
可选地,该方法还可以包括:
在步骤S17中,在确定产生规约事件时,执行规约操作,并返回步骤S13。
其中,规约操作包括:输出规约后产生的非终结符所表示的协议字段,利用所述非终结符替换当前所述符号栈中与所述规约事件有关的符号,并将当前所述状态栈中、与所述规约事件有关的符号所对应的状态弹出。在执行完移进操作或是规约操作后,需要将待匹配的协议数据的起始位置移动到当前已匹配的数据之后的位置之后执行跳转动作,直至生成协议的目标符号或者待匹配数据为空。
图2所示,为根据本公开的另一种实施方式提供的协议数据解析方法的流程图。如图2所示,在图1的基础上,所述方法还可以包括:
在步骤S21中,判断返回结果是带谓词的终结符号或是非终结符号,在返回结果是带谓词的终结符号时,转入步骤S15,否则,在返回结果是非终结符号时,转入步骤S22。
在步骤S22中,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件。
在步骤S23中,在确定产生移进事件时,执行移进操作。其中,该移进操作与前文所述的移进操作相同,在此不再赘述。在语法分析器的输入符号为非终结符号时,通过查询跳转表以确定下一状态,该跳转表是通过在预处理阶段生成语法分析器时,根据系统开发阶段编写的协议解析规则文法生成的。
在步骤S24中,根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件,在判定能继续产生规约事件时,转入步骤S13,否则,在判定不能继续产生规约事件时,转入接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶的步骤S11,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
在该实施例中,在词法分析器的返回结果为非终结符号时,在执行完相应的操作后,要根据状态栈的当前栈顶状态和符号栈判断下一步要执行的操作,从而判断下一步要跳转的步骤。通过上述技术方案,在输入符号为非终结符号时,对下一步要执行的操作进行预判,可以准确地判定下一步跳转的步骤,可以提高协议解析的效率和准确性。
可选地,该方法还可以包括:
在步骤S25中,在确定产生规约事件时,进行规约操作,并返回所述根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件的步骤S24。其中,该规约操作的步骤与上述规约操作相同,在此不再赘述。另外,在执行完移进操作或是规约操作后,需要将待匹配的协议数据的起始位置移动到当前已匹配的数据之后的位置之后执行跳转动作,直至生成协议的目标符号或者待匹配数据为空。
在步骤S26中,在确定产生接受事件时,获得协议的目标非终结符号。
可选地,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
在该实施例中,该词法分析器中匹配到的模式串可以是根据自动机的状态归集的该状态下的所有模式串的集合,也可以包括从引用栈获取的模式串。其中,如上所述,在系统开发阶段的协议解析规则文法中,对产生式词法展开方式构造的产生式要编写特征引用规则和引用匹配规则,为每一组引用关系命名,其中特征引用规则用来动态提取新的分词特征,引用匹配规则使用新的分词特征进行分词匹配。在系统运行阶段的预处理步骤中,词法分析器对特征引用规则的分词特征建立动态存储标识,对引用匹配规则的分词特征建立动态引用标识,并为每一组引用关系创建引用栈,通过引用关系名查找相应的引用栈。在协议解析步骤中,词法分析器中带有动态存储标识的分词特征匹配到某一段数据,则将匹配的数据存储到相应的引用栈中。词法分析器中对于带有动态引用标识的分词特征,取得引用栈栈顶的数据替换该分词特征,参与后续的分词匹配过程。
在上述技术方案中,通过采用引用栈存储模式串的方式,可以通过动态存储标识和动态引用标识实现数据引用在多个产生式谓词上的引用,实现跨词法分析器的模式串匹配,从而可以对文法产生式进行扩展,简化复杂模式串的匹配方式,节省资源。
本公开提供一种协议数据解析装置。图3所示,为根据本公开的实施方式提供的一种协议数据解析装置的框图。如图3所示,该装置10包括:
第一接收模块110,用于接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶;
第一输入模块120,用于将所述待匹配的协议数据输入至与状态栈的当前栈顶状态相对应的词法分析器;
第二输入模块130,用于将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;
第二接收模块140,用于接收所述词法分析器的返回结果;
第一确定模块150,用于在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串;
第一处理模块160,用于在确定产生移进事件时,执行移进操作,并重新触发所述第二输入模块130将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
可选地,该述装置还可以包括:
第二处理模块,用于在确定产生规约事件时,执行规约操作,并重新触发所述第二输入模块130将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
可选地,该装置还可以包括:
第二确定模块,用于在所述返回结果为非终结符号时,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件;
第三处理模块,用于在确定产生移进事件时,执行移进操作;
判断模块,用于根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件,在判定能继续产生规约事件时,重新触发所述第二输入模块130将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,在判定不能继续产生规约事件时,重新触发所述第一接收模块110接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
可选地,该装置还可以包括:
第四处理模块,用于在确定产生规约事件时,进行规约操作,并重新触发所述判断模块根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件;
第五处理模块,用于在确定产生接受事件时,获得协议的目标非终结符号。
可选地,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
本公开还提供一种协议数据解析系统。图4所示,为根据本公开的一种实施方式提供的协议数据解析系统的框图。如图4所示,该系统包括:
多个词法分析器20,所述多个词法分析器与语法分析器的多个状态一一对应;
所述语法分析器30,包括控制器40、状态栈50和符号栈60,其中,所述控制器40包括上述的协议数据解析装置10。
可选地,该系统还可以包括:
引用栈,用于存储至少一个模式串,所述引用栈能够被所述多个词法分析器20中的至少两个词法分析器20访问,以使所述至少两个词法分析器20能够根据引用标识从所述引用栈获取相应的模式串。
以下以MIME的协议解析为例,分析具体的协议数据解析过程。根据语法分析器的状态迁移所生成的词法分析器如下所示,词法分析器采用“pred_StateId_SymId”的命名方法,包含了一个模式串集合和对应的多模匹配算法,默认的词法分析器不显示,假定SymId为2,则每个词法分析器的模式串集合如下:
由上可知,在不同的状态下,即使词法分析器匹配到相同的模式串,也可以向语法分析器输入不同的协议字段,可以降低语法产生是的复杂度,并且由于多个词法分析器之间相对独立,每个词法分析器的变化所影响的范围较小,能够方便修改和扩展。同时,产生式词法展开之后,词法分析器的模式串与展开前的模式串“^Subject:.*((=?[a-zA-Z0-9-]+\?=\r\n)([\t\s]+=\?[a-zA-Z0-9-]+\?=)*)*”相比由复杂变为简单,而且有些词法分析器中的模式串集合可以合并,有效提高了协议解析的词法分析器匹配效率。
如图5所示,为根据本公开的一种实施方式提供的语法分析器的状态迁移图。结合图4和图5,以MIME协议主题字段的检测过程为例,详细阐述协议数据解析的过程。
初始的协议数据为数据包中所有数据,为"Subject:=?utf-8?B?xxx?=\r\n\t=?GB2312?B?yyy=?=\r\n",初始栈顶状态为S0,协议数据解析的过程如下:
控制器接收协议数据输入,并将协议终结符号mime_atom_stream作为输入符号压入符号栈的栈顶,终结符号的待匹配数据为"Subject:=?utf-8?B?xxx?==?GB2312?B?yyy=?=\r\n"。
词法分析器匹配。控制器从状态栈中取出栈顶状态S0,从符号栈的栈顶中取出栈顶符号mime_atom_stream作为词法分析器的输入符号,得到状态S0下输入符号的词法分析器pred_0_2,将待匹配的协议数据与词法分析器中的分词特征,即词法分析器中归集的模式串,用多模匹配算法进行匹配,命中模式串“^Subject:”,终止数据匹配,返回带谓词的终结符号“mime_atom_stream($1~/^Subject:/i)”和数据的匹配范围[0,7]。
语法分析器分析。词法分析器返回的是带谓词的终结符号“mime_atom_stream($1~/^Subject:/i)”,查询动作表,确定产生移进事件,则将下一跳状态S2压入状态栈(状态栈为[S0,S2]),将带谓词的终结符号“mime_atom_stream($1~/^Subject:/i)”压入符号栈,同时待匹配的协议数据变更为“=?utf-8?B?xxx?=\r\n\t=?GB2312?B?yyy=?=\r\n”,再次转入调用词法分析器的步骤。
之后依次解析采用表示方法“([状态栈],[符号栈])--查表动作(移进或规约的符号)→([新的状态栈],[新的符号栈])”对移进事件或规约事件进行描述,如下所示:
([S0,S2],[mime_atom_stream($1~/^Subject:/i)])
--规约(mime_atom_stream($1~/^Subject:/i))→([S0],[MIME_Subject_label])
--移进(MIME_Subject_label)→([S0,S1],[MIME_Subject_label])
词法分析器匹配命中数据“=?utf-8”并得到模式串“=\?UTF-8”之后,
--移进(mime_atom_stream($1~/=\?UTF-8/i))→([S0,S1,S6],[MIME_Subject_label,mime_atom_stream($1~/=\?UTF-8/i)])
--规约(mime_atom_stream($1~/=\?UTF-8/i))→([S0,S1],[MIME_Subject_label,MIME_Subject_Charset_UTF8])
--移进(MIME_Subject_Charset_UTF8)→([S0,S1,S20],[MIME_Subject_label,MIME_Subject_Charset_UTF8])
词法分析器匹配命中数据“?B?xxx?=“并得到模式串“\?B\?.*\?=”之后,
--移进(mime_atom_stream($1~/\?B\?.*\?=/i))→([S0,S1,S20,S11],[MIME_Subject_label,MIME_Subject_Charset_UTF8,mime_atom_stream($1~/\?B\?.*\?=/i)])
--规约(mime_atom_stream($1~/\?B\?.*\?=/i))→([S0,S1,S20],[MIME_Subject_label,MIME_Subject_Charset_UTF8,MIME_Subject_Encode_Base64])
--移进(MIME_Subject_Encode_Base64)→([S0,S1,S20,S22],[MIME_Subject_label,MIME_Subject_Charset_UTF8,MIME_Subject_Encode_Base64])
--规约(MIME_Subject_Charset_UTF8,MIME_Subject_Encode_Base64)→([S0,S1],[MIME_Subject_label,MIME_Subject_Encode_One])
--移进(MIME_Subject_Encode_One)→([S0,S1,S19],[MIME_Subject_label,MIME_Subject_Encode_One])
--规约(MIME_Subject_Encode_One)→([S0,S1],[MIME_Subject_label,MIME_Subject_Encode_Multi])
--移进(MIME_Subject_Encode_Multi)→([S0,S1,S14],[MIME_Subject_label,MIME_Subject_Encode_Multi])
在以上协议数据解析的过程中,每执行一次移动操作要跳转到调用词法分析器的步骤;每执行一次规约操作,则要对下一步的操作进行预判以确定要跳转到协议数据输入步骤还是调用词法分析器的步骤。在上述协议数据解析过程中,依次解析出协议字段“MIME_Subject_label,MIME_Subject_Charset_UTF8,MIME_Subject_Encode_Base64”,以及分层抽象的协议字段“MIME_Subject_Encode_One,MIME_Subject_Encode_Multi”,解析完成的协议数据内容是“Subject:=?utf-8?B?xxx?=”,待匹配的协议数据内容是“\r\n\t=?GB2312?B?yyy=?=\r\n”,后续的检测过程与之前类似,不再详细推导。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (12)
1.一种协议数据解析方法,其特征在于,包括:
接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶;
将所述待匹配的协议数据输入至与状态栈的当前栈顶状态相对应的词法分析器;
将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;
接收所述词法分析器的返回结果;
在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串;
在确定产生移进事件时,执行移进操作,返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定产生规约事件时,执行规约操作并返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述返回结果为非终结符号时,根据状态栈的当前栈顶状态和所述非终结符号确定产生规约事件或是移进事件或是接受事件;
在确定产生移进事件时,执行移进操作;
根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件;
在判定能继续产生规约事件时,返回所述将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器的步骤;
在判定不能继续产生规约事件时,返回所述接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶的步骤,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在确定产生规约事件时,进行规约操作,并返回所述根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件的步骤;
在确定产生接受事件时,获得协议的目标非终结符号。
5.根据权利要求1所述的方法,其特征在于,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
6.一种协议数据解析装置,其特征在于,包括:
第一接收模块,用于接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶;
第一输入模块,用于将所述待匹配的协议数据输入至与状态栈的当前栈顶状态相对应的词法分析器;
第二输入模块,用于将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;
第二接收模块,用于接收所述词法分析器的返回结果;
第一确定模块,用于在所述返回结果为带谓词的终结符号时,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件,其中,所述带谓词的终结符号包括所述协议的终结符号和所述词法分析器匹配到的模式串;
第一处理模块,用于在确定产生移进事件时,执行移进操作,并重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二处理模块,用于在确定产生规约事件时,执行规约操作,并重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于在所述返回结果为非终结符号时,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件;
第三处理模块,用于在确定产生移进事件时,执行移进操作;
判断模块,用于根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件,在判定能继续产生规约事件时,重新触发所述第二输入模块将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,在判定不能继续产生规约事件时,重新触发所述第一接收模块接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第四处理模块,用于在确定产生规约事件时,进行规约操作,并重新触发所述判断模块根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件;
第五处理模块,用于在确定产生接受事件时,获得协议的目标非终结符号。
10.根据权利要求6所述的装置,其特征在于,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。
11.一种协议数据解析系统,其特征在于,包括:
多个词法分析器,所述多个词法分析器与语法分析器的多个状态一一对应;
所述语法分析器,包括控制器、状态栈和符号栈,其中,所述控制器包括权利要求6-10中任一项所述的协议数据解析装置。
12.根据权利要求11所述的系统,其特征在于,还包括:
引用栈,用于存储至少一个模式串,所述引用栈能够被所述多个词法分析器中的至少两个词法分析器访问,以使所述至少两个词法分析器能够根据引用标识从所述引用栈获取相应的模式串。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611219683.5A CN106790108B (zh) | 2016-12-26 | 2016-12-26 | 协议数据解析方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611219683.5A CN106790108B (zh) | 2016-12-26 | 2016-12-26 | 协议数据解析方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106790108A CN106790108A (zh) | 2017-05-31 |
CN106790108B true CN106790108B (zh) | 2019-12-06 |
Family
ID=58926974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611219683.5A Active CN106790108B (zh) | 2016-12-26 | 2016-12-26 | 协议数据解析方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106790108B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977230A (zh) * | 2017-12-01 | 2018-05-01 | 广东雅达电子股份有限公司 | 一种基于状态机机制的应用管理方法 |
CN111083043B (zh) * | 2019-12-26 | 2021-11-23 | 中国科学院信息工程研究所 | 一种邮箱恶意自动转发行为识别方法及装置 |
CN111556067B (zh) * | 2020-05-09 | 2022-05-20 | 中国航空无线电电子研究所 | 基于有穷状态机的网络数据协议描述结构及解析方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002073595A1 (fr) * | 2001-03-08 | 2002-09-19 | Matsushita Electric Industrial Co., Ltd. | Dispositif generateur de prosodie, procede de generation de prosodie, et programme |
CN103595729A (zh) * | 2013-11-25 | 2014-02-19 | 北京锐安科技有限公司 | 一种协议解析方法及装置 |
CN103748853A (zh) * | 2011-07-26 | 2014-04-23 | 安全事务有限公司 | 用于对数据通信网络中的协议消息进行分类的方法和系统 |
CN104281632A (zh) * | 2013-07-11 | 2015-01-14 | 深圳市金正方科技股份有限公司 | 基于对象协议映射的编码解码方法及系统 |
CN105447156A (zh) * | 2015-11-30 | 2016-03-30 | 北京航空航天大学 | 资源描述框架分布式引擎及增量式更新方法 |
-
2016
- 2016-12-26 CN CN201611219683.5A patent/CN106790108B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002073595A1 (fr) * | 2001-03-08 | 2002-09-19 | Matsushita Electric Industrial Co., Ltd. | Dispositif generateur de prosodie, procede de generation de prosodie, et programme |
CN103748853A (zh) * | 2011-07-26 | 2014-04-23 | 安全事务有限公司 | 用于对数据通信网络中的协议消息进行分类的方法和系统 |
CN104281632A (zh) * | 2013-07-11 | 2015-01-14 | 深圳市金正方科技股份有限公司 | 基于对象协议映射的编码解码方法及系统 |
CN103595729A (zh) * | 2013-11-25 | 2014-02-19 | 北京锐安科技有限公司 | 一种协议解析方法及装置 |
CN105447156A (zh) * | 2015-11-30 | 2016-03-30 | 北京航空航天大学 | 资源描述框架分布式引擎及增量式更新方法 |
Non-Patent Citations (1)
Title |
---|
《基于特征关键字的多协议数据流转换方法》;林霞等;《计算机工程》;20110305;1-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN106790108A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106790108B (zh) | 协议数据解析方法、装置和系统 | |
CN100505752C (zh) | 文本编码类协议通用解析器 | |
EP0954856A1 (en) | Context dependent phoneme networks for encoding speech information | |
JP2009087339A (ja) | オントロジーデータのインポート/エクスポートのための方法および装置 | |
CN112527998A (zh) | 一种答复推荐方法、答复推荐装置及智能设备 | |
CN101288071A (zh) | 用于确定计算机服务名称的方法和计算机单元 | |
US8542137B2 (en) | Decoding encoded data | |
CN106790109B (zh) | 数据匹配方法和装置、协议数据分析方法、装置和系统 | |
CN116151220A (zh) | 分词模型训练方法、分词处理方法和装置 | |
EP1695211A1 (en) | Efficient small footprint xml parsing | |
CN106663094B (zh) | 用于线性广义ll识别和上下文感知解析的方法和系统 | |
CN115687399A (zh) | 一种sql语句的语法解析方法及装置 | |
EP3942404B1 (en) | Code completion for overloaded methods | |
JP6273285B2 (ja) | 電子文字列をフォーマットするためのフォーマットモジュール、システム及び方法 | |
CN101404515A (zh) | 一种移动无线网络消息的解码、调试、显示装置及其方法 | |
CN112187935A (zh) | 信息识别方法与只读内存 | |
CN117406996B (zh) | 硬件描述代码的语义分析方法及装置 | |
Queirós | SeCoGen-A Service Code Generator | |
CN111556067B (zh) | 基于有穷状态机的网络数据协议描述结构及解析方法 | |
KR102146625B1 (ko) | 오토마타 기반 증분적 중위 확률 계산 장치 및 방법 | |
CN114089960A (zh) | 对象处理方法以及装置 | |
CN106682221A (zh) | 问答交互的响应方法、装置及问答系统 | |
CN115270777A (zh) | 一种合同文件信息抽取方法、装置、系统 | |
Handzhiyski et al. | Tunnel Parsing with Ambiguous Grammars | |
Kiong et al. | Lexical Scanners |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |