CN103488524A - 命令管理装置及其命令管理方法 - Google Patents
命令管理装置及其命令管理方法 Download PDFInfo
- Publication number
- CN103488524A CN103488524A CN201210194062.1A CN201210194062A CN103488524A CN 103488524 A CN103488524 A CN 103488524A CN 201210194062 A CN201210194062 A CN 201210194062A CN 103488524 A CN103488524 A CN 103488524A
- Authority
- CN
- China
- Prior art keywords
- order
- command
- registration
- parameter
- view
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种命令管理装置,包括:注册模块,其用于注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数;接收模块,其用于接收输入的命令,其中,所述输入的命令包括至少一个元素;处理模块,其用于判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。相应地,提供一种命令管理方法。本发明使用注册的方式进行命令的采集,便于命令的维护与扩展。
Description
技术领域
本发明涉及计算机处理系统技术领域,尤其涉及一种命令管理装置及其命令管理方法。
背景技术
随着计算机处理系统技术的发展,目前出现了许多各种类型的计算机处理系统应用,例如,嵌入式系统。应用嵌入式系统的嵌入式设备,例如,电视机顶盒、电梯、公交卡刷卡机、自动取款机、KTV点唱机、全自动洗衣机等。在嵌入式设备中,为了更好更高效地控制设备,尤其是那些没有UI(用户界面)的设备,命令行的操作就显得至关重要,而命令行的操作直接与嵌入式设备里的命令行管理方法相关。
现有的命令行管理方法通常是把所有的命令放在若干个数组中,然后配上执行函数(例如,可参见发表于《今日电子》2009年第8期的文章“智能命令行设计及其在SOPC系统中的应用”)。这种方法很简单,但是比较死板,不能够处理比较复杂的情况,不适合命令的扩展,命令很多,层次很多时就容易产生冲突。此外,这种方法不方便维护,具体来讲,很容易在多个程序员开发不同模块时产生命令重复定义的冲突,给维护带来很大成本。
发明内容
为了解决上述问题,本发明提供一种命令管理装置及其命令管理方法,以实现更简单、更高效的命令管理方式。
为了实现以上目的,本发明提供的命令管理装置包括:
注册模块,其用于注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数;
接收模块,其用于接收输入的命令,其中,所述输入的命令包括至少一个元素;
处理模块,其用于判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。
优选的是,所述注册的命令的参数包括以下至少之一:元素的顺序、该命令的功能和该命令的应用范围。
进一步优选的是,所述注册的命令的功能定义在该命令的回调函数中,所述使用所述注册的命令的处理包括:调用所述注册的命令的回调函数。
优选的是,将所述注册的命令的参数保存在以下之一:树结构、文件列表。
优选的是,所述注册模块还用于注册视图,所述视图表示命令层次。
优选的是,如果所述注册的命令的参数保存在树结构中,则保存所述注册的命令的参数的处理包括:
将所述注册的命令的参数保存在一颗树中,其中,一棵树表示一个视图,其树结构的根节点为视图对象,根节点的子节点为视图对象或命令对象,命令对象节点的子节点为命令元素对象,所述视图对象表示命令的层次,所述命令对象表示命令元素的顺序。
进一步优选的是,每个命令对象节点和作为其子节点的命令元素对象构成二叉树。
本发明同时提供一种命令管理方法,包括:
注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数;
重复执行以下处理:
接收输入的命令,其中,所述输入的命令包括至少一个元素;
判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。
优选的是,所述方法还包括:
在注册的命令的回调函数中定义该命令的功能;
所述使用所述注册的命令的处理包括:调用所述注册的命令的回调函数。
优选的是,所述注册命令的元素的处理还包括注册视图,所述视图表示命令层次。
优选的是,如果所述注册的命令的参数保存在树结构中,则保存所述注册的命令的参数的处理包括:
将所述注册的命令的参数保存在一颗树中,其中,一棵树表示一个视图,其树结构的根节点为视图对象,根节点的子节点为视图对象或命令对象,命令对象节点的子节点为命令元素对象,所述视图对象表示命令的层次,所述命令对象表示命令元素的顺序。
本发明的技术效果如下:
(1)命令管理方式灵活,方便命令的参数的扩展,适用于那些需要强大命令行支持的设备,例如交换机和路由器;
(2)由于采用命令注册方式,而不是采用集中式的方式管理,所以方便计算机处理系统中的其它软件模块自己管理自己的命令,也方便开发人员自己维护自己命令,再也不用将所有命令放到一起去维护,杜绝了命令的重复定义,因此便于维护,而且维护成本低;
(3)命令查找快,效率高。
附图说明
图1是根据本发明实施例的命令管理装置的结构图;
图2是根据本发明实施例的命令注册步骤的流程图;
图3是根据本发明实施例的树结构的示图;
图4是根据本发明实施例的命令处理步骤的流程图。
具体实施方式
以下,将参照附图和实施例对本发明进行描述。
总地来讲,本发明提供的命令管理装置包括注册模块、接收模块和处理模块。其中,注册模块用于注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数。接收模块用于接收输入的命令,其中,所述输入的命令包括至少一个元素。处理模块用于判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。
这里,所述注册的命令的参数包括以下至少之一:元素的顺序、该命令的功能和该命令的应用范围。注册的命令的功能可定义在该命令的回调函数中,在使用注册的命令时,调用该命令的回调函数即可。注册的命令的参数可保存在树结构、文件列表等数据结构中。此外,注册模块还可用于注册视图,这里,视图表示命令层次。
以下将结合具体实施例对本发明的具体实现进行详细描述。在本实施例中,注册命令的参数保存在树结构中,并将注册命令的功能定义在相应命令的回调函数中。
图1是根据本发明实施例的命令管理装置的结构图。如图1中的虚线框所示,该命令管理装置包括注册模块1、接收模块2和处理模块3。
注册模块1可进一步包括命令注册接口11、语法解析模块12和树结构建立模块13,其中,命令注册接口11用于注册命令的元素、元素的顺序、回调函数和应用范围;语法解析模块12用于对注册的命令进行语法解析;树结构建立模块13用于根据解析结果建立树结构。
命令注册接口11又可进一步包括命令元素对象接口111、命令对象接口112和视图对象接口113,其中,命令元素对象接口111用于注册命令的元素;命令对象接口112用于注册命令元素的顺序和回调函数;和视图对象接口113用于注册视图,所述视图表示命令层次。具体来讲,在本发明中,为了方便管理,将命令分成很多层次,例如接口层或管理层,将每个层次定义为一个视图,不同的视图表示不同的命令层次。
在本实施例中,一颗树表示一个视图(即,一个命令层次),其树结构的根节点为视图对象,根节点的子节点为视图对象或命令对象,命令对象节点的子节点为命令元素对象。
以下,将给出本实施例的一个具体示例。
在本示例中,利用Lex(Lexical Complier)工具和Yacc(YetAnother Complier Complier)工具来注册命令和对接收的命令进行处理。由于Lex工具和Yacc工具是本领域技术人员公知的技术,因此,本文省略其描述。
此外,在本示例中,将使用以下几个概念:
(1)Cmo(command object):命令元素对象,用来表示命令的基本元素;
(2)Cmd(command):命令对象,一条条的命令叫做Cmd,一般情况下一组命令由一个个Cmd组成,一个Cmd由若干个Cmo组成;
(3)View:视图对象,不同的视图代表不同的命令的不同应用范围,主要是方便用户了解正在操作的对象范围。
相应地,命令元素对象接口111为Cmo接口,命令对象接口112为Cmd接口,视图对象接口113为View接口。
图2是本示例的由注册模块1执行的命令注册步骤的流程图。
如图2所示,首先,在步骤S201中,根据所需要使用的命令编写Yacc语法分析脚本,然后用Yacc工具生成相应的C语言文件,即,语法分析器。这里,需要注意:(1)与Lex的配合使用,具体来讲,要注意函数的相互调用;(2)与C代码的结合,这里所述的词法分析主要是完成词汇模式(或者常规表达式)的解析,解析结果给建立树结构提供依据,因此,在Yacc脚本中,C语言的部分要将解析结果提供给树结构建立函数。
接着,在步骤S202中,通过Cmo接口注册Cmo对象。
例如命令ping ipAddress,这条命令由两个Cmo组成,其中类型为关键字的ping和类型为ip地址的ipAddress。按照命令元素的顺序进行注册,例如,将先注册的元素标示为$1,后注册的元素标示为$2,依次类推。Cmo的类型是在Lex脚本中定义的,部分定义如下表1所示。
表1
接着,在步骤S203中,通过Cmd接口注册Cmd对象。在本实施例中,Cmo的顺序用正则表达式表述,这些正则表达式是在yacc脚本语言中定义的。例如命令ping ipAddress的正则表达式为{$1$2}。当然还可表示比较复杂的情况。
接着,在步骤S204中,通过View接口注册View对象。View对象是本发明的树结构的根节点。
接着,在步骤S205中,语法解析模块12利用步骤S201中生成的语法分析器对注册命令进行语法解析,即,对表示Cmo顺序的正则表达式组成的命令进行解析。
接着,在步骤S206中,树结构建立模块13根据解析结果建立用于存放注册命令的树结构。具体来讲,首先确认命令的视图,每个Cmd注册时都带有视图参数,可根据该视图参数将相应命令安装到对应的视图下。在如图3所示的树结构中,根节点为View1(即,根视图),根视图的子节点包括子视图View2、View3和View4,子视图View2的子节点包括Cmd1、Cmd2和Cmd3,Cmd1的子节点包括Cmo1、Cmo2,Cmo2又包括Cmo3、Cmo4子节点,其中,Cmd1及其子节点Cmo1、Cmo2、Cmo3、Cmo4构成二叉树。这样,从根视图遍历树结构即可找到不同的命令。优选地,还可采用平衡二叉树的结构存放命令,以便更快地查找命令。在建立二叉树时,可按照一定的字母排列顺序建立二叉树。
例如,想要注册一个tracerout ipaddress|hostname的命令,其中参数ipadddress与hostname是可选的,那么可以先注册关键字类型的traceroute为$1,ip地址类型的ipaddress为$2,字符串类型的hostname为$3,把这三个cmo先注册,然后注册命令对象,这则表达式为$1[$2|$3],然后注册到管理视图里。
图4是本示例的在接收模块2接收到命令之后处理模块3对命令进行处理的步骤的流程图。
如图4所示,首先,在步骤S401中,根据所需使用的命令编写Lex词法分析脚本,然后用Lex工具生成C语言文件,即,词法分析器。这里,需要注意:Lex与C代码的结合,由于Lex语法将Lex文件分成三个部分,即,声明、语法和C代码,所以在编写处理模块3的时候,要调用Lex脚本中声明的一些函数。
接着,在步骤S402中,处理模块3对从shell上以字符串形式接收的命令进行词法解析,并在步骤S403中检查该命令(具体来讲,命令元素)的词法是否合法,如果该命令的词法合法,则在步骤S404中,通过遍历树结构来寻找该命令,如果找到该命令,则在步骤S405中调用该命令的回调函数,否则在步骤S406中在shell中提示错误。如果在步骤S403中检查该命令的词法不合法或者在步骤S404中未找到该命令,则执行步骤S406。这里,shell为本领域技术人员公知的术语,因此,本文省略其描述。
通过以上示例可看出,本示例具有以下优点:
(1)使用注册的方式进行命令的采集,如果命令有冲突或错误可在注册的时候及时提出,便于命令的维护与扩展。
(2)在解析的过程中对语法正确性进行完整检查,从而保证命令语法的正确性。
(3)使用Lex与Yacc工具进行命令管理装置的开发,可以更精准地对命令的词法和语法进行分析。具体来讲,注册模块在注册时使用yacc工具进行语法分析,这样可以保证命令参数的正确性,这种方式比数组方式更灵活、更便捷;处理模块在处理时使用lex工具进行词法检查,这样更能保证命令词法的正确性,检查地更彻底,也容易扩展新功能。
(4)命令查找快,效率高。
当然,应该理解,本发明并不限于使用Lex与Yacc工具来开发命令管理装置,还可使用其它类似功能的工具来开发命令管理装置。
以上已参照附图和实施例对本发明进行了详细描述,但是,应该理解,本发明并不限于以上所公开的具体实施例,任何基于本说明书所公开的技术方案的变型都应包括在本发明的保护范围内。
Claims (11)
1.一种命令管理装置,包括:
注册模块,其用于注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数;
接收模块,其用于接收输入的命令,其中,所述输入的命令包括至少一个元素;
处理模块,其用于判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。
2.根据权利要求1所述的装置,其特征在于,所述注册的命令的参数包括以下至少之一:元素的顺序、该命令的功能和该命令的应用范围。
3.根据权利要求2所述的装置,其特征在于,所述注册的命令的功能定义在该命令的回调函数中,所述使用所述注册的命令的处理包括:调用所述注册的命令的回调函数。
4.根据权利要求1所述的装置,其特征在于,将所述注册的命令的参数保存在以下之一:树结构、文件列表。
5.根据权利要求1所述的装置,其特征在于,所述注册模块还用于注册视图,所述视图表示命令层次。
6.根据权利要求4所述的装置,其特征在于,如果所述注册的命令的参数保存在树结构中,则保存所述注册的命令的参数的处理包括:
将所述注册的命令的参数保存在一颗树中,其中,一棵树表示一个视图,其树结构的根节点为视图对象,根节点的子节点为视图对象或命令对象,命令对象节点的子节点为命令元素对象,所述视图对象表示命令的层次,所述命令对象表示命令元素的顺序。
7.根据权利要求6所述的装置,其特征在于,每个命令对象节点和作为其子节点的命令元素对象构成二叉树。
8.一种命令管理方法,包括:
注册命令的元素,对注册的元素进行解析,确定所述注册的命令的参数,并保存所述注册的命令的参数;
重复执行以下处理:
接收输入的命令,其中,所述输入的命令包括至少一个元素;
判断输入的所述命令中的元素与注册的所述命令的元素是否匹配,如果相匹配,则使用所述注册的命令。
9.根据权利要求8所述的方法,其特征在于,还包括:
在注册的命令的回调函数中定义该命令的功能;
所述使用所述注册的命令的处理包括:调用所述注册的命令的回调函数。
10.根据权利要求8所述的方法,其特征在于,所述注册命令的元素的处理还包括注册视图,所述视图表示命令层次。
11.根据权利要求8所述的方法,其特征在于,如果所述注册的命令的参数保存在树结构中,则保存所述注册的命令的参数的处理包括:
将所述注册的命令的参数保存在一颗树中,其中,一棵树表示一个视图,其树结构的根节点为视图对象,根节点的子节点为视图对象或命令对象,命令对象节点的子节点为命令元素对象,所述视图对象表示命令的层次,所述命令对象表示命令元素的顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210194062.1A CN103488524A (zh) | 2012-06-13 | 2012-06-13 | 命令管理装置及其命令管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210194062.1A CN103488524A (zh) | 2012-06-13 | 2012-06-13 | 命令管理装置及其命令管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103488524A true CN103488524A (zh) | 2014-01-01 |
Family
ID=49828781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210194062.1A Pending CN103488524A (zh) | 2012-06-13 | 2012-06-13 | 命令管理装置及其命令管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488524A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767038A (zh) * | 2020-06-28 | 2020-10-13 | 烟台东方威思顿电气有限公司 | 一种脚本化的智能电表事件判断解析方法 |
CN111930460A (zh) * | 2020-08-12 | 2020-11-13 | 深圳市友华通信技术有限公司 | 通用嵌入式cli组件的配置方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950188A (en) * | 1996-11-14 | 1999-09-07 | Sybase, Inc. | Database system with methods for executing system-created internal SQL command statements |
US20030110416A1 (en) * | 2001-06-01 | 2003-06-12 | Microsoft Corporation | Methods and systems for creating and communicating with computer processes |
CN101126981A (zh) * | 2007-09-28 | 2008-02-20 | 华为技术有限公司 | 脚本命令注册方法、调用源程序代码的方法和装置 |
CN101136780A (zh) * | 2007-09-12 | 2008-03-05 | 华为技术有限公司 | 获取用户命令信息的方法、系统及用户命令注册的装置 |
CN101916187A (zh) * | 2010-08-11 | 2010-12-15 | 深圳市共进电子有限公司 | 一种命令行界面的实现方法 |
-
2012
- 2012-06-13 CN CN201210194062.1A patent/CN103488524A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950188A (en) * | 1996-11-14 | 1999-09-07 | Sybase, Inc. | Database system with methods for executing system-created internal SQL command statements |
US20030110416A1 (en) * | 2001-06-01 | 2003-06-12 | Microsoft Corporation | Methods and systems for creating and communicating with computer processes |
CN101136780A (zh) * | 2007-09-12 | 2008-03-05 | 华为技术有限公司 | 获取用户命令信息的方法、系统及用户命令注册的装置 |
CN101126981A (zh) * | 2007-09-28 | 2008-02-20 | 华为技术有限公司 | 脚本命令注册方法、调用源程序代码的方法和装置 |
CN101916187A (zh) * | 2010-08-11 | 2010-12-15 | 深圳市共进电子有限公司 | 一种命令行界面的实现方法 |
Non-Patent Citations (3)
Title |
---|
崔滔等: "命令行接口管理系统的研究与实现", 《计算机应用》, vol. 22, no. 10, 31 December 2002 (2002-12-31), pages 82 - 84 * |
赵辉等: "网络设备中命令行管理系统的设计与实现", 《网络与信息》, no. 11, 31 December 2008 (2008-12-31), pages 25 - 27 * |
黄玮伟: "通用命令行模块的设计及实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 02, 15 August 2007 (2007-08-15) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767038A (zh) * | 2020-06-28 | 2020-10-13 | 烟台东方威思顿电气有限公司 | 一种脚本化的智能电表事件判断解析方法 |
WO2022001154A1 (zh) * | 2020-06-28 | 2022-01-06 | 烟台东方威思顿电气有限公司 | 一种脚本化的智能电表事件判断解析方法 |
CN111767038B (zh) * | 2020-06-28 | 2023-05-26 | 烟台东方威思顿电气有限公司 | 一种脚本化的智能电表事件判断解析方法 |
CN111930460A (zh) * | 2020-08-12 | 2020-11-13 | 深圳市友华通信技术有限公司 | 通用嵌入式cli组件的配置方法和装置 |
CN111930460B (zh) * | 2020-08-12 | 2023-10-24 | 深圳市友华通信技术有限公司 | 通用嵌入式cli组件的配置方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104766012B (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
US9753758B1 (en) | Building of virtual servers in a cloud via non-structured strings | |
CN103713896A (zh) | 用于访问服务器的软件开发工具包生成方法及装置 | |
US8402319B2 (en) | Method and system to extract a navigation model for analysis of a web application | |
CN105893061A (zh) | 应用程序开发方法及系统 | |
CN104331366A (zh) | 一种测试用例设计效率提升方法及系统 | |
CN107707614A (zh) | 基于统跳协议的app路由实现方法、设备及存储介质 | |
CN105224869A (zh) | 组件测试方法和装置 | |
CN104899016A (zh) | 调用堆栈关系获取方法及装置 | |
CN109558128A (zh) | json数据解析方法、装置及计算机可读存储介质 | |
CN102385570A (zh) | 字体匹配方法和系统 | |
CN109547234A (zh) | 一种数据处理、上报方法、装置、设备和存储介质 | |
CN110381101A (zh) | Api网关控制系统、控制方法、设备和介质 | |
CN106648569A (zh) | 目标序列化实现方法和装置 | |
US20190087160A1 (en) | System and method for creating domain specific language | |
CN105487859A (zh) | 一种基于模板的大数据组件web部署方法 | |
CN105094921A (zh) | 一种跨浏览器调用外设的方法及装置 | |
CN103544298A (zh) | 组件的日志分析方法和分析装置 | |
CN103326930B (zh) | 开放平台接口自动巡检方法和系统 | |
CN113312618A (zh) | 程序漏洞检测方法、装置、电子设备及介质 | |
CN103488524A (zh) | 命令管理装置及其命令管理方法 | |
CN110209983A (zh) | 一种网页web项目的部署方法及装置 | |
CN102156650A (zh) | 一种实现补丁自动分析的方法及装置 | |
CN106502707B (zh) | 代码生成方法及装置 | |
CN106681852B (zh) | 一种浏览器兼容性的调整方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140101 |