CN114489594A - 一种命令解析器的构建方法、命令解析处理方法及装置 - Google Patents
一种命令解析器的构建方法、命令解析处理方法及装置 Download PDFInfo
- Publication number
- CN114489594A CN114489594A CN202111617513.3A CN202111617513A CN114489594A CN 114489594 A CN114489594 A CN 114489594A CN 202111617513 A CN202111617513 A CN 202111617513A CN 114489594 A CN114489594 A CN 114489594A
- Authority
- CN
- China
- Prior art keywords
- command
- node
- tree
- nodes
- parser
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
Abstract
本发明公开了一种命令解析器的构建方法、命令解析处理方法及装置,该构建方法包括:根据关键字节点构建命令解析器中命令树的前预设级,关键字节点用于区分同一终节点不同的分支;根据值节点构建命令树的中间级;根据终节点构建命令树的最后一级,终节点中定义处理函数,命令树的任意两级节点之间采用孩子指针连接,命令树的同一级节点之间采用兄弟指针连接。通过实施本发明,在命令解析器中通过定义关键字节点、值节点以及终节点的方式构建了命令树,使得该命令解析器的构建简单且标准化。并且,由于该命令解析器中采用命令树的框架,当后续采用该命令解析器进行解析时,采用树形结构逐级解析命令,不会出现回溯。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种命令解析器的构建方法、命令解析处理方法及装置。
背景技术
命令解析器就是用于接收命令(来自于控制器亦或是用户),并将其进行解析,将解析结果传递给各个功能模块并得到最终结果,最后将结果返回。
命令解析器是人机交互(如linux shell)的一部分,用户可以通过输入命令与系统交互,在控制器与下一代云墙交互(或管理)的过程中最主要的也是各种命令的处理,大多数解析器添加命令不方便,方法不标准,命令执行效率不高,或者缺乏联想等功能,开发人员使用不方便。
发明内容
有鉴于此,本发明实施例提供了涉及一种命令解析器的构建方法、命令解析处理方法及装置,以解决现有技术中命令解析器不标准,添加命令不方便的技术问题。
本发明提出的技术方案如下:
本发明实施例第一方面提供一种命令解析器的构建方法,包括:根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支;根据值节点构建所述命令树的中间级;根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。
可选地,所述命令树还包括:截止替换节点,所述截止替换节点用于标识兄弟指针的最后一个节点,当所述命令树中增加新的关键字节点时,将所述截止替换节点替换为所述新的关键字节点,增加新的截止替换节点。
可选地,所述命令树还包括:复用节点,当所述命令树第一级关键字节点后续连接节点为非对称结构时,在非对称位置配置所述复用节点。
本发明实施例第二方面提供一种命令解析处理方法,包括:接收输入的待解析命令;采用本发明实施例第一方面及第一方面任一项所述的命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析;根据解析结果中的终节点调用处理函数进行处理,得到处理结果。
可选地,采用命令解析器对待解析命令进行解析,包括:将待解析命令和命令解析器中命令树的第一级进行匹配;根据第一级匹配结果中的关键字节点的孩子指针连接节点与待解析命令进行匹配;当与孩子指针连接节点匹配成功后,判断当前匹配节点是否为终节点;若是终节点,则解析完成。
可选地,采用命令解析器对待解析命令进行解析,还包括:当与孩子指针连接节点未匹配成功,根据所述孩子指针连接节点确定其兄弟指针连接节点;根据所述兄弟指针连接节点与待解析命令进行匹配;若与兄弟指针连接节点未匹配成功,判断当前节点是否为截止替换节点;当当前节点为截止替换节点时,解析失败。
本发明实施例第三方面提供一种命令解析器的构建装置,包括:第一构建模块,用于根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支;第二构建模块,用于根据值节点构建所述命令树的中间级;第三构建模块,用于根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。
本发明实施例第四方面提供一种命令解析处理装置,包括:命令接收模块,用于接收输入的待解析命令;解析模块,用于采用本发明实施例第一方面及第一方面任一项所述的命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析;处理模块,用于根据解析结果中的终节点调用处理函数进行处理,得到处理结果。
本发明实施例第五方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如本发明实施例第一方面及第一方面任一项所述的命令解析器的构建方法或者本发明实施例第二方面及第二方面任一项所述的命令解析处理方法。
本发明实施例第六方面提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如本发明实施例第一方面及第一方面任一项所述的命令解析器的构建方法或者本发明实施例第二方面及第二方面任一项所述的命令解析处理方法。
本发明提供的技术方案,具有如下效果:
本发明实施例提供的命令解析器的构建方法及装置,在命令解析器中通过定义关键字节点、值节点以及终节点的方式构建了命令树,使得该命令解析器的构建简单且标准化。并且,由于该命令解析器中采用命令树的框架,当后续采用该命令解析器进行解析时,采用树形结构逐级解析命令,不会出现回溯。
本发明实施例提供的命令解析处理方法及装置,通过接收输入的待解析命令,采用命令解析器中构建的命令树框架进行命令的解析,在解析时,采用命令树中定义的各级节点进行匹配,最终完成解析过程。由此,该命令解析处理方法不会出现回溯,从而实现了命令的高效解析。此外,该命令解析处理方法还支持联想,提高了人机交互友好性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的命令解析器的构建方法的流程图;
图2是根据本发明实施例的命令解析器的构建方法构建的命令树架构示意图;
图3是根据本发明实施例的命令解析处理方法的流程图;
图4是根据本发明另一实施例的命令解析处理方法的流程图;
图5是根据本发明实施例的命令解析器的构建装置的结构框图;
图6是根据本发明实施例的命令解析处理装置的结构框图;
图7是根据本发明实施例提供的计算机可读存储介质的结构示意图;
图8是根据本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种命令解析器的构建方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种命令解析器的构建方法,可用于电子设备,如电脑、手机、平板电脑等,图1是根据本发明实施例的命令解析器的构建方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101:根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支。
具体地,关键字节点记为KW_NODE/KW_NODE_WHICH。其中,关键字节点可以基于不同的应用场景预先设置,以便于命令解析器在不同场景中实现对命令的解析。例如,当该命令解析器应用于云防火墙时,如图2所示,该关键字节点包括:set、unset、debug、undebug、show、interface、ffilter、src-ip以及dst-port等。
在采用上述关键字节点设置命令树的前预设级时,可以基于实际情况确定预设级的个数。例如在该云防火墙中,命令树的前预设级包括前三级,其中,set、unset、debug、undebug以及show设置在命令树的第一级,interface和ffilter设置在命令树的第二级,src-ip和dst-port设置在命令树的第三级。此外,除上述关键字节点外,命令树的第一级、第二级以及第三级也可以根据实际需要设置其他关键字节点。
当设置命令树的前预设级时,前一级和后一级之间的关键字节点采用孩子指针连接,例如第一级关键字节点set和第二级关键字节点interface之间采用孩子指针连接。而同一级之间的关键字节点之间采用兄弟指针连接,例如,第一级关键字节点set和第一级关键字节点unset之间采用兄弟指针连接。
步骤S102:根据值节点构建所述命令树的中间级。具体地,值节点记为VALUE_NODE,值节点可以为字符串或数字类型,用于表示命令中的具体值。例如,该值节点包括name、id、ip、value以及number等。其中,值节点在命令树中设置时,通常是设置在关键字节点之后,由此,值节点设置在命令树的中间级,或者说设置在关键字节点之后,与关键字节点之间采用孩子指针连接。
步骤S103:根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。其中,在命令解析器解析的最后会调用到处理函数,由此,在命令树的最后一级定义终节点,且终节点中定义有处理函数,终节点记为EOL_NODE。此外,在最后一级和中间级之间还可以根据实际需要设置其他的关键字节点,以便于命令解析器的解析。例如,在中间级和最后一级之间还设置其他级数的关键字节点,如promisc、link、up以及down等。
在一实施方式中,对于上述关键字节点、值节点以及终节点,节点的属性采用下表1所示:
表1
child | 孩子指针 |
sibling | 兄弟指针 |
type | 节点类型(关键字/值/终) |
subtype | 节点子类型 |
index | 值(或which关键字)节点索引位 |
value | 值(或which关键字)节点标记值 |
token | 节点关键字(值/终节点没有) |
help | 节点帮助信息 |
func | 节点处理函数 |
其中,为了便于使用,上述关键字节点、值节点以及终节点采用静态定义的方式实现。具体,采用以下代码实现对关键字节点、值节点以及终节点的定义:
具体地,对于该命令树,采用KW_NODE宏定义节点的方式实现:
KW_NODE(interface,interface_name,none,"interface","the specificinterface");
VALUE_NODE(interface_name,interface_promisc,none,"interfacename",1,STR);
KW_NODE_WHICH(interface_promisc,interface_promisc_on,interface_kni,"promisc","the promisc on the interface",1,1);
EOL_NODE(interface_eol,set_interface_cli);
KW_NODE_WHICH(interface_link_down,interface_eol,none,"down","make the interface link down",2,2);
KW_NODE_WHICH(interface_link_up,interface_eol,interface_link_down,"up","make the interface link up",2,1);
KW_NODE_WHICH(interface_kni_off,interface_eol,none,"off","forward2kni off",2,2);
KW_NODE_WHICH(interface_kni_on,interface_eol,interface_kni_off,"on","forward2kni on",2,1);
KW_NODE_WHICH(interface_promisc_off,interface_eol,none,"off","promisc off",2,2);
KW_NODE_WHICH(interface_promisc_on,interface_eol,interface_promisc_off,"on","promisc on",2,1);
KW_NODE_WHICH(interface_link,interface_link_up,none,"link","interface link state",1,3);
KW_NODE_WHICH(interface_kni,interface_kni_on,interface_link,"forward2kni","make the interface forward2kni",1,2);
本发明实施例提供的命令解析器的构建方法,在命令解析器中通过定义关键字节点、值节点以及终节点的方式构建了命令树,使得该命令解析器的构建简单且标准化。并且,由于该命令解析器中采用命令树的框架,当后续采用该命令解析器进行解析时,采用树形结构逐级解析命令,不会出现回溯。
本发明实施例提供的命令解析器的构建方法,通过标准化静态定义关键字节点、值节点以及终节点的方式,可以构建命令解析器中命令树的框架,同时,上级节点的孩子指针指向第一个下级节点,其他的孩子节点通过第一个下级节点的兄弟指针获取。
在一实施方式中,所述命令树还包括:截止替换节点,所述截止替换节点用于标识兄弟指针的最后一个节点,当所述命令树中增加新的关键字节点时,将所述截止替换节点替换为所述新的关键字节点,增加新的截止替换节点。
具体地,如图2所示,在该命令树中还定义有截止替换节点,记为none节点。该none节点可以作为任一级的最后一个节点,表示这一级之后没有其他节点。例如,若第二级关键字节点只设置了interface和ffilter两个节点,则ffilter节点的兄弟指针也连接至none节点。在该命令树中,可以只设置一个none节点,即全局唯一。并且,若需要在该命令树中增加新的命令节点,如需要新增加关键字节点,可以先确定新的关键字节点对应的终节点,然后将新的关键字节点替换none节点,然后再设置新的none节点即可。
在一实施方式中,所述命令树还包括:复用节点,当所述命令树第一级关键字节点后续连接节点为非对称结构时,在非对称位置配置所述复用节点。
具体地,在构建的命令树框架中,大多均是对称的结构。例如set和unset,为添加和删除,对称是指添加的后续节点和删除的后续节点相同,如添加配置set interfaceeth0 link up和删除配置unset interface eth0 link up,这样添加和删除的后续节点可以设置为同一个,即set和unset的孩子指针均指向interface。但是,在该命令树框架中,也不完全是对称结构。例如添加配置set ffilter src-ip 1.1.1.1dst-port 23和对应的删除配置unset ffilter<id>为非对称结构,此时,若两个结构单独定义,则会导致该命令树较为庞大。因此,如图2所示,可以在命令树中定义复用节点,记为TEST_UNSET节点。该复用节点定义在非对称的结构中,例如上述非对称结构,TEST_UNSET节点设置在ffilter节点和id之间,该TEST_UNSET节点表示了之前节点的复用,即setffilter和unsetffilter。
同时,在该命令树框架中,除了none节点和终节点,所有节点都有孩子指针与兄弟指针。每个节点都可以看做以该节点为根的树形结构。
并且,该命令解析器的构建方法构建的命令解析器,作为一个轻量级的(无论从代码复杂度亦或是开发人员添加修改的难度)、高效的、具备联想功能的命令解析器,既可以对接管理控制面下发的命令,又可以提供直接的,简单而友好的用户命令执行接口,开发人员也可以通过标准化的接口快速添加新命令,提高开发效率,进而使云防火墙更加标准化、模块化和简便易用。此外,该构建的命令解析器具有功能完备、实现高效,可以应用于包括nvf方式和裸机方式;控制面功能简洁化,执行高效;可以方便的对接控制器配置下发,实现标准统一,用户使用简洁直观;可扩展性强、代码简单清晰,开发人员添加新命令方便等特点。
本发明实施例提供的命令解析器的构建方法,通过截止替换节点的设置,当添加新命令时,只需要首先定义新命令对应的处理函数,然后将新命令添加到命令树,替换截止替换节点即可。由此,该构建方法使得新命令的添加更加方便,同时复用节点的定义也使得命令解析器中命令树框架更为简洁。此外,云防火墙启动之后,控制面会下发命令配置云防火墙的各个特性,因此该构建方法构建的命令解析器可以使控制面配置实现标准化,简化,降低出错率,且各种云产品通过控制面下发配置也可以通过该命令解析器进行管理。
本发明实施例还提供一种命令解析处理方法,如图3所示,该方法包括如下步骤:
步骤S201:接收输入的待解析命令。当采用上述构建方法构建得到命令解析器后,可以采用该命令解析器进行命令的解析。具体将待解析命令输入至该命令解析器中,命令解析器通过逐词读入命令的方式进行解析。
步骤S202:采用上述实施例中命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析。具体地,命令解析器在对待解析命令进行解析时,将逐词读入的命令与命名解析器中定义的命令树中的节点进行逐级匹配。直至匹配得到相应的终节点,即完成该解析过程。
步骤S203:根据解析结果中的终节点调用处理函数进行处理,得到处理结果。其中,当最终解析匹配到终节点后,调用终节点中定义的处理函数,处理函数根据解析结果与命令的定义进行处理,同时处理过程中可能会有申请内存、打印输出等操作,执行完毕返回。具体地,通过处理函数的处理得到处理函数执行结果,可能会进行后续操作。最后返回等待用户下次命令输入。
在一实施方式中,在该构建的命令解析器中,还可以识别“tab”或“?。当用户输入部分命令后输入“tab”或“?”,该命令解析器还可以根据当前解析的树形结构遍历孩子指针与兄弟指针,从而给出匹配选项,若只有一个匹配选项,且使用的是“tab”,则补全命令。
本发明实施例提供的命令解析处理方法,通过接收输入的待解析命令,采用命令解析器中构建的命令树框架进行命令的解析,在解析时,采用命令树中定义的各级节点进行匹配,最终完成解析过程。由此,该命令解析处理方法不会出现回溯,从而实现了命令的高效解析。此外,该命令解析处理方法还支持联想,提高了人机交互友好性。
在一实施方式中,采用命令解析器对待解析命令进行解析,包括:将待解析命令和命令解析器中命令树的第一级进行匹配;根据第一级匹配结果中的关键字节点的孩子指针连接节点与待解析命令进行匹配;当与孩子指针连接节点匹配成功后,判断当前匹配节点是否为终节点;若是终节点,则解析完成。当与孩子指针连接节点未匹配成功,根据所述孩子指针连接节点确定其兄弟指针连接节点;根据所述兄弟指针连接节点与待解析命令进行匹配;若与兄弟指针连接节点未匹配成功,判断当前节点是否为截止替换节点;当当前节点为截止替换节点时,解析失败。
具体地,如图4所示,在采用命令解析器进行解析时,先将逐词读取的命令和命令树的第一级关键字节点进行匹配,例如可以遍历第一级关键字节点,找到和命令匹配的关键字节点;匹配成功后,遍历匹配成功关键字节点的孩子指针连接节点进行匹配,例如如果待解析命令为”set flow policy”,第一级匹配了set节点,则待解析命令变为”flowpolicy”,此时当前待匹配节点指向第一级匹配节点的孩子节点(即关键字节点set节点的孩子节点)进行匹配,匹配成功,继续获取孩子指针连接节点,直至匹配到终节点,或者说当待解析命令指向末尾,且当前匹配节点已经为终节点,完成解析过程。例如待解析命令为”set flow policy aaa permit”,这个时候如果待解析命令指向了permit,而当前匹配的节点aaa已经是终节点,这个时候不能认为匹配成功;若节点aaa还有一个孩子终节点匹配了待解析命令permit,才能认为解析成功。
若在孩子指针连接节点未匹配成功,则获取其节点的兄弟指针连接节点进行匹配,若兄弟指针连接节点直至匹配到none节点也未匹配成功,则返回解析失败。具体地,在匹配时,待解析命令和当前节点是不断变化的,当与孩子指针连接节点未匹配成功是指上一级匹配成功,待解析命令后移更新,且当前节点更新为上一级的孩子节点,开始当前节点与当前待解析命令匹配。
其中,若解析成功,则将解析得到的命令的结果类型(添加/删除)、数字或字符串的值存储到表2所示的结构中,同时取到终节点的处理函数,最后将解析结果传入处理函数并调用。
表2
mode | 解析结果类型 |
number_cnt | 检测到的数字类型值节点个数 |
number[] | 命令中的检测到的数字 |
which_cnt | 检测到的which关键字节点个数 |
which[] | 命令中的检测到的which值 |
string_cnt | 检测到的字符串类型值节点个数 |
string[][] | 命令中的检测到的字符串 |
… | 其他信息 |
本发明实施例还提供一种命令解析器的构建装置,如图5所示,该装置包括:
第一构建模块,用于根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支;具体内容参见上述方法实施例对应部分,在此不再赘述。
第二构建模块,用于根据值节点构建所述命令树的中间级;具体内容参见上述方法实施例对应部分,在此不再赘述。
第三构建模块,用于根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。具体内容参见上述方法实施例对应部分,在此不再赘述。
本发明实施例提供的命令解析器的构建装置,在命令解析器中通过定义关键字节点、值节点以及终节点的方式构建了命令树,使得该命令解析器的构建简单且标准化。并且,由于该命令解析器中采用命令树的框架,当后续采用该命令解析器进行解析时,采用树形结构逐级解析命令,不会出现回溯。
本发明实施例提供的命令解析器的构建装置的功能描述详细参见上述实施例中命令解析器的构建方法描述。
本发明实施例还提供一种命令解析处理装置,如图6所示,该装置包括:
命令接收模块,用于接收输入的待解析命令;具体内容参见上述方法实施例对应部分,在此不再赘述。
解析模块,用于采用上述实施例所述的命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析;具体内容参见上述方法实施例对应部分,在此不再赘述。
处理模块,用于根据解析结果中的终节点调用处理函数进行处理,得到处理结果。具体内容参见上述方法实施例对应部分,在此不再赘述。
本发明实施例提供的命令解析处理装置,通过接收输入的待解析命令,采用命令解析器中构建的命令树框架进行命令的解析,在解析时,采用命令树中定义的各级节点进行匹配,最终完成解析过程。由此,该命令解析处理方法不会出现回溯,从而实现了命令的高效解析。此外,该命令解析处理方法还支持联想,提高了人机交互友好性。
本发明实施例提供的命令解析处理装置的功能描述详细参见上述实施例中命令解析处理方法描述。
本发明实施例还提供一种存储介质,如图7所示,其上存储有计算机程序601,该指令被处理器执行时实现上述实施例中命令解析器的构建方法、命令解析处理方法的步骤。该存储介质上还存储有音视频流数据,特征帧数据、交互请求信令、加密数据以及预设数据大小等。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard DiskDrive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
本发明实施例还提供了一种电子设备,如图8所示,该电子设备可以包括处理器51和存储器52,其中处理器51和存储器52可以通过总线或者其他方式连接,图8中以通过总线连接为例。
处理器51可以为中央处理器(Central Processing Unit,CPU)。处理器51还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的对应的程序指令/模块。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的命令解析器的构建方法、命令解析处理方法。
存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储处理器51所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至处理器51。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器52中,当被所述处理器51执行时,执行如图1-4所示实施例中的命令解析器的构建方法、命令解析处理方法。
上述电子设备具体细节可以对应参阅图1至图4所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种命令解析器的构建方法,其特征在于,包括:
根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支;
根据值节点构建所述命令树的中间级;
根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。
2.根据权利要求1所述的命令解析器的构建方法,其特征在于,所述命令树还包括:截止替换节点,所述截止替换节点用于标识兄弟指针的最后一个节点,
当所述命令树中增加新的关键字节点时,将所述截止替换节点替换为所述新的关键字节点,增加新的截止替换节点。
3.根据权利要求1所述的命令解析器的构建方法,其特征在于,所述命令树还包括:复用节点,
当所述命令树第一级关键字节点后续连接节点为非对称结构时,在非对称位置配置所述复用节点。
4.一种命令解析处理方法,其特征在于,包括:
接收输入的待解析命令;
采用权利要求1-3任一项所述的命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析;
根据解析结果中的终节点调用处理函数进行处理,得到处理结果。
5.根据权利要求4所述的命令解析处理方法,其特征在于,采用命令解析器对待解析命令进行解析,包括:
将待解析命令和命令解析器中命令树的第一级进行匹配;
根据第一级匹配结果中的关键字节点的孩子指针连接节点与待解析命令进行匹配;
当与孩子指针连接节点匹配成功后,判断当前匹配节点是否为终节点;
若是终节点,则解析完成。
6.根据权利要求5所述的命令解析处理方法,其特征在于,采用命令解析器对待解析命令进行解析,还包括:
当与孩子指针连接节点未匹配成功,根据所述孩子指针连接节点确定其兄弟指针连接节点;
根据所述兄弟指针连接节点与待解析命令进行匹配;
若与兄弟指针连接节点未匹配成功,判断当前节点是否为截止替换节点;
当当前节点为截止替换节点时,解析失败。
7.一种命令解析器的构建装置,其特征在于,包括:
第一构建模块,用于根据关键字节点构建命令解析器中命令树的前预设级,所述关键字节点用于区分同一终节点不同的分支;
第二构建模块,用于根据值节点构建所述命令树的中间级;
第三构建模块,用于根据所述终节点构建所述命令树的最后一级,所述终节点中定义处理函数,所述命令树的任意两级节点之间采用孩子指针连接,所述命令树的同一级节点之间采用兄弟指针连接。
8.一种命令解析处理装置,其特征在于,包括:
命令接收模块,用于接收输入的待解析命令;
解析模块,用于采用权利要求1-3任一项所述的命令解析器的构建方法构建得到的命令解析器对待解析命令进行解析;
处理模块,用于根据解析结果中的终节点调用处理函数进行处理,得到处理结果。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如权利要求1-3任一项所述的命令解析器的构建方法或者权利要求4-6任一项所述的命令解析处理方法。
10.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如权利要求1-3任一项所述的命令解析器的构建方法或者权利要求4-6任一项所述的命令解析处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111617513.3A CN114489594A (zh) | 2021-12-27 | 2021-12-27 | 一种命令解析器的构建方法、命令解析处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111617513.3A CN114489594A (zh) | 2021-12-27 | 2021-12-27 | 一种命令解析器的构建方法、命令解析处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489594A true CN114489594A (zh) | 2022-05-13 |
Family
ID=81495653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111617513.3A Pending CN114489594A (zh) | 2021-12-27 | 2021-12-27 | 一种命令解析器的构建方法、命令解析处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489594A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194278A (zh) * | 2023-11-08 | 2023-12-08 | 新华三网络信息安全软件有限公司 | 设备命令管理方法、装置、存储介质及电子设备 |
-
2021
- 2021-12-27 CN CN202111617513.3A patent/CN114489594A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194278A (zh) * | 2023-11-08 | 2023-12-08 | 新华三网络信息安全软件有限公司 | 设备命令管理方法、装置、存储介质及电子设备 |
CN117194278B (zh) * | 2023-11-08 | 2024-02-23 | 新华三网络信息安全软件有限公司 | 设备命令管理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146286B2 (en) | Compression of JavaScript object notation data using structure information | |
CN111428462B (zh) | 通讯协议模板构建的方法及终端设备 | |
US9218269B2 (en) | Testing multiple target platforms | |
WO2020233369A1 (zh) | 基于模拟端口改进软件集成系统的方法及相关设备 | |
US8707252B1 (en) | Techniques for automatic generation of parsing code | |
US11048339B2 (en) | Command-line interface displaying method and apparatus | |
CN109522018A (zh) | 页面处理方法、装置及存储介质 | |
CN110209700B (zh) | 一种数据流关联方法、装置、电子设备及存储介质 | |
CN113835419B (zh) | 一种列控设备的测试方法、系统及存储介质 | |
CN111090417A (zh) | 二进制文件解析方法、装置、设备及介质 | |
WO2022048422A1 (zh) | 数据处理的方法、装置、设备及存储介质 | |
WO2023109074A1 (zh) | 一种实现联动功能的方法、装置、设备、存储介质和程序 | |
CN115357235A (zh) | 基于表单的业务规则配置方法及装置 | |
CN114489594A (zh) | 一种命令解析器的构建方法、命令解析处理方法及装置 | |
CN106909435B (zh) | 一种网络安全设备命令行的解析方法和装置 | |
CN114760369A (zh) | 一种协议元数据提取方法、装置、设备及存储介质 | |
CN110554877A (zh) | 一种json数据解析方法、装置、设备及储存介质 | |
TWI746520B (zh) | 編譯計算機語言的方法和裝置 | |
US20240004778A1 (en) | Method for processing command, device for processing command, and electronic device | |
CN113721910A (zh) | 界面代码生成方法、装置、电子设备和计算机可读介质 | |
CN112883088A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
WO2022111209A1 (zh) | 数据采集方法、装置、数据采集设备及可读存储介质 | |
CN116360735A (zh) | 一种表单生成方法、装置、设备和介质 | |
CN114996554A (zh) | 数据库的查询方法、装置、存储介质及电子设备 | |
CN110597517A (zh) | 动态解析mat文件的方法及装置 |
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 |