CN1832419A - 一种表达式的解析方法 - Google Patents
一种表达式的解析方法 Download PDFInfo
- Publication number
- CN1832419A CN1832419A CN 200510053557 CN200510053557A CN1832419A CN 1832419 A CN1832419 A CN 1832419A CN 200510053557 CN200510053557 CN 200510053557 CN 200510053557 A CN200510053557 A CN 200510053557A CN 1832419 A CN1832419 A CN 1832419A
- Authority
- CN
- China
- Prior art keywords
- operand
- expression formula
- name
- replacement
- steps
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种表达式的解析方法,包括:A.将所述表达式中出现的操作数依次替换为该操作数的替换名,所述替换名与操作数为一一对应;B.对经步骤A替换得到的表达式进行合法性检验及前项表达式到后项表达式的转换;C.按照操作数与替换名的一一对应关系,将步骤B得到的后项表达式中所包含的替换名依次替换成为原来的操作数;D.当网管系统上报数据报告时,计算经步骤C替换得到的表达式。应用本发明所述的方法可以实现完整的表达式合法性检验、前项表达式到后项表达式的转换以及表达式计算过程,正确完成阈值管理系统的报警判决,实现系统的性能管理。
Description
技术领域
本发明涉及到计算机系统中表达式的解析方法,特别涉及到一种复杂表达式的解析方法。
背景技术
阈值管理系统是网络管理系统(NMS,简称网管系统)中性能管理子系统的核心子模块。通常情况下,所述的阈值管理系统根据网管系统上报的监测数据,对用户输入的用于报警判决的表达式进行解析计算,然后再根据所述的计算结果判断是否需要开启或者关闭报警系统,从而实现网管系统中的性能管理。从上述阈值管理过程可以看出,对用户所输入表达式的解析方法是网管系统进行性能管理较为关键的技术之一。
现有阈值管理系统解析表达式的方法主要包括以下步骤:
A、检验用户所输入表达式的合法性。
通常情况下,用户输入的表达式中包含预先定义的操作符和操作数,对于阈值管理系统解析的表达式来讲,其中包含的操作数也就是网管系统正在监测的测量单元的名称,这些测量单元名称代表了当前网管系统进行性能测试时所使用的参数值。
在表达式合法性的检验过程中,首先需要从待检验的表达式中分别识别出所包含的操作数和操作符,然后再检验该表达式是否符合规定。
在现有技术中,对于普通的表达式,其中可能包含的所有操作符均是预先定义的运算符,并且这些运算符很容易被阈值管理系统识别,而表达式中包含的操作数则是多种多样、不容易识别的。因此,在表达式的解析过程中,阈值管理系统通常将表达式中的操作符当作操作数之间的分隔符来识别该表达式所包含的不同操作数。
例如,用户输入的表达式为((Traffic>10)&&(Load<2)),它所包括的操作符有:(、)、>、&&、<;所包含的操作数有Traffic、10、Load以及2,其中,Traffic、Load为两个网管系统需要监测的测量单元名称。
由于操作符(、)、>、&&、<均为预先定义的运算符,可以较容易的被阈值管理系统识别,因此,在合法性的检验之前,阈值管理系统会将该表达式中的操作符(、)、>、&&、<作为其操作数Traffic、10、Load以及2之间分隔符来进行表达式的解析。例如,在解析过程中,当阈值管理系统检索到操作符(和>时,就可以判断出这两个操作符之间的Traffic是一个操作数;同样,当继续检测到后面的操作符)时,就可以判断出操作符>和)之间的10是另一个操作数。以此类推,阈值管理系统就可以依次区分出该表达式所包含的所有操作符以及操作数,然后再进行表达式的合法性检验。
B、将检验合法的表达式从前项表达式转换为后项表达式。
通常情况下,在表达式的计算过程中均是使用堆栈来存储所述操作数和操作符的,因此,为了方便堆栈的存储、加快表达式计算的速度,在表达式的合法性检验之后,还需要对检验合法的表达式进行从前项表达式到后项表达式的转换。这种前项表达式到后项表达式的转换方法与计算机编译中所使用的前项表达式到后项表达式的转换方法基本相同,在这里就不再详细描述了。
例如,使用现有的前项表达式到后项表达式的转换方法,对上述表达式((Traffic>10)&&(Load<2))进行转换后,得到的后项表达式为Traffic 10>Load 2<&&,该转换后的后项表达式虽然与前面所述的前项表达式在表现形式上有所不同,但是二者在表达式的计算过程中是等价的。
在经过上述前项表达式到后项表达式的转换后,阈值管理系统就会将上述后项表达式按照转换后的顺序存储在堆栈中,这样,阈值管理系统在接收到网管系统上报的数据报告后,就可以立即将存储在堆栈中的操作数替换为上报的数据,并快速完成表达式的计算。
例如:上述后项表达式Traffic 10>Load2<&&在堆栈中存储的顺序如表1所示:
Traffic |
10 |
> |
Load |
2 |
< |
&& |
表1
C、计算所述表达式的值,根据计算结果进行报警判决。
在堆栈中记录的操作数比较容易识别并且也容易用相应的数值替换,因此,当阈值管理系统接收到网管系统上报的测量数据时,阈值管理系统会立即将存储在堆栈中的操作数替换为网管系统上报的数据,并快速按照堆栈中记录的操作数以及操作符顺序计算出该表达式的值,从而判断是否需要开启或者关闭报警系统,完成系统的性能管理。
上述现有的表达式解析方法可以对用户输入的一般阈值管理表达式进行解析计算,并最终完成报警判决,实现系统的性能管理。但是,由于上述方法在表达式的合法性检验以及前向表达式到后项表达式的转换过程中是以操作符作为操作数之间的分隔符来识别该表达式中包含的不同操作数的,因此,当上述方法应用到操作数本身包含操作符的表达式解析及计算过程时,就会产生错误。
例如,将上述待计算的表达式替换为((Traffic-Per-Hour>10)&&(Load<2)),其中,Traffic-Per-Hour为网管系统监测的一个测量单元的名称,也就是上述表达式的一个操作数。如果按照现有技术的方法,对上述表达式进行合法性检验或者在对上述表达式进行前项表达式到后项表达式的转换时,阈值管理系统会将操作数Traffic-Per-Hour中的连接符号-识别为操作符-,从而会错误的将Traffic-Per-Hour识别成三个操作数Traffic、Per以及Hour相减。很显然,通过这种方法解析上述表达式是不正确的。
发明内容
为了解决上述技术问题,本发明提供了一种表达式的解析方法,可以正确解析在操作数中包含操作符的表达式,实现完整的表达式合法性检验、前项表达式到后项表达式的转换以及表达式计算过程,最终完成阈值管理系统的正确判决。
本发明所述方法包括如下步骤:
A、将所述表达式中出现的操作数依次替换为该操作数的替换名,其中,所述替换名与操作数为一一对应;
B、对经步骤A替换得到的表达式进行合法性检验及前项表达式到后项表达式的转换;
C、按照操作数与替换名的一一对应关系,将步骤B得到的后项表达式中所包含的替换名依次替换成为原来的操作数;
D、当网管系统上报数据报告时,计算经步骤C替换得到的表达式。
所述方法在步骤A之前进一步包括:A0、将网管系统提供的所有操作数,按照操作数中字符数的多少从大到小重新排序,生成操作数列表;
所述步骤A为:根据步骤A0生成的操作数列表,将所述表达式中出现的操作数依次替换为与之一一对应的替换名。
步骤A所述替换为:根据所述操作数在所述表达式中出现的次序生成与之对应的替换名。
所述步骤A进一步包括:建立操作数和与之对应的替换名对照的操作数替换列表,每替换一个操作数就在该操作数列表中记录所述操作数以及生成的与之对应的替换名。
步骤C所述操作数与替换名的一一对应关系为在步骤A建立的操作数替换列表中记录的操作数和与之对应替换名之间的对照关系。
由此可以看出,本发明所述表达式的解析方法,在表达式的合法性检验之前,将该表达式中包含操作符的操作数替换成为预先设定的阈值管理系统可以识别的替换名,有效的避免了在表达式的解析过程中,误将操作数中包含的操作符识别为操作数之间的分隔符所带来的表达式解析错误。
应用本发明所述的方法可以实现完整的表达式合法性检验、前项表达式到后项表达式的转换以及表达式的计算过程,正确完成阈值管理系统的报警判决,实现系统的性能管理。
附图说明
图1为本发明所述的表达式解析流程图。
具体实施方式
为使发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
为了解决在现有的表达式解析过程中出现的,对在操作数中存在操作符的表达式无法正确解析的问题,本发明提供了一种表达式的解析方法,在表达式的合法性检验之前使用阈值管理系统可以识别的、不包含操作符的替换名替换该表达式中包含操作符的操作数。这样,在后续的合法性检验以及前向表达式到后项表达式的转换过程中,阈值管理系统可以正确识别表达式中的经过替换的操作数,从而完成表达式的合法性检验以及前项表达式到后项表达式的转换,实现表达式的正确计算及报警判决,有效避免了现有技术中的问题。
如图1所示,该方法主要包括以下步骤:
步骤101:将网管系统提供的所有操作数,也即表达式中可能出现的所有测量单元的名称按照字符数的多少从大到小重新排序,生成操作数列表。
需要说明的是,在该步骤中进行排序的所有操作数均是与用户所选择的、希望监测的设备以及测量单元有关的参数。当用户将其所选择的所要监测的设备、测量单元以及表达式信息上报给网管系统服务器的时候,网管系统将会根据用户选择的设备以及测量单元自动生成在用户输入的表达式中可能出现的所有操作数列表,并下发给阈值管理系统。因此,本步骤所述的排序就是对这些网管系统提供的操作数进行的重新排序。
排序的目的是为了防止在将表达式中的操作数,即测量单元名称替换成替换名的过程中出现错误。下面举例说明可能出现的错误情况。
假设预先确定的操作数包含以下测量单元的名称:Transfer-Rate、Transfer-Rate-per-Port以及Number-Of-Port。从中可以看出,测量单元名称Transfer-Rate是Transfer-Rate-per-Port的一部分。另外假设待计算的表达式为(Transfer-Rate-per-Port+5)/Number-Of-Port。
由于上述测量单元名称没有经过排序,并且Transfer-Rate是Transfer-Rate-per-Port的一部分,因此,在表达式中操作数到其替换名的替换过程中,很可能首先将该表达式所包含操作数Transfer-Rate-per-Port中的Transfer-Rate替换为Transfer-Rate的替换名,很明显,这样必然造成该表达式的解析错误。
解决上述问题的一个有效方法就是将上述操作数,即测量单元的名称根据其长度按照从大到小的顺序排列起来。例如,对于上述测量单元名称,可以按照如下顺序重新排列起来,组成一个新的操作数列表,包括:
1.Transfer-Rate-per-Port
2.Number-Of-Port
3.Transfer-Rate
这样,在使用替换名的替换过程中,首先匹配最长的操作数,然后在匹配较短的操作数,就可以避免上述错误。例如,参照上例,如果在上述表达式的替换过程中,使用重新排序的操作数列表进行匹配,就能够最先匹配到最长的操作数Transfer-Rate-per-Port,而不会首先匹配到Transfer-Rate,因而不会产生上述替换错误。
步骤102:将表达式中出现的所有操作数依次替换成为替换名,所述替换名与所述的操作数一一对应。
在这一步骤中,根据步骤101经过排序建立的操作数列表,顺序检测表达式中的操作数,并将表达式中出现的所有操作数依次替换为预先指定的替换名。
所述替换名的选取优先采用以下策略:首先,替换名不能够与任何的测量单元名称相同或者相似,最好是某种特殊的形式;其次,替换名在解析过程中应当容易被阈值管理系统识别。
在本发明的一个优选实施例中,将所述替换名的格式统一设定为xxNxx,其中,N表示在该表达式中操作数出现的次序。在本实施例所述的操作数替换过程中,对应每个检测到的操作数,根据该操作数在表达式中出现的次序生成与之对应的替换名。例如,将第一个检测到的操作数替换为xx1xx;而将第二个检测到的操作数替换为xx2xx,以此类推,直至最后一个操作数替换完成。
为了实现后续操作,在上述操作数替换的过程中,阈值管理系统还需要建立一个操作数替换列表,用于存储被替换掉的测量单元名称及与之对应的替换名。
例如,在表达式(Transfer-Rate-per-Port+5)/Number-Of-Port的替换过程中,其中,Transfer-Rate-per-Port和Number-Of-Port分别为两个测量单元的名称,也就是该表达式的两个操作数。由于在这两个操作数中包含操作符-,按照现有的表达式解析方法,是无法正确解析的。因此,在这一步骤中,按照网管系统提供的操作数列表,分别将第一个出现的操作数Transfer-Rate-per-Port替换为xx1xx,将第二个出现的操作数Number-Of-Port替换为xx2xx。这样,上述原始表达式(Transfer-Rate-per-Port+5)/Number-Of-Port就将被替换为(xx1xx+5)/xx2xx。同时,在上述操作数替换的过程中,还需要建立如表2所示的操作数替换列表。
操作数 | 替换名 |
Transfer-Rate-per-Port | xx1xx |
Number-Of-Port | xx2xx |
表2
从上述步骤102的替换过程可以看出,由于经过替换所生成表达式中的操作数不包含操作符,因而很容易被阈值管理系统解析。
当然,本领域的技术人员可以理解,在该步骤中所使用的替换名不限于xxNxx的格式,还可以是满足上述优选策略的任意其他指定形式,只要可以被阈值管理系统识别,并且保证表达式中所包含的操作数与替换名一一对应就是可以的。
另外,对于上述实施例中所述操作数替换列表来讲,该表记录了被替换的操作数与生成的替换名之间的一一对应关系,因此,如果操作数与替换名之间的一一对应关系是预先确定的,也就无需在替换过程中建立该操作数替换表了。
步骤103:对替换后的表达式进行合法性检验,并完成前项表达式到后项表达式的转换。
在该步骤中,所述的表达式合法性检验以及前项表达式到后项表达式的转换方法均与现有技术相同,在这里就不详细叙述了。
参照上例,对替换后的表达式(xx1xx+5)/xx2xx进行合法性检验,再经过转换后得到的后项表达式为xx1xx5+xx2xx/。该后项表达式与替换前的表达式等效。
步骤104:按照操作数与替换名的一一对应关系,将转换后的后项表达式所包含的替换名,再次顺序替换成为原有的操作数,并按照后项表达式的顺序将其操作数和操作符存储在堆栈中。
同样参照上面的例子,在本步骤中,将转换后得到的后项表达式xx1xx5+xx2xx/中包含的替换名再次替换为原有的操作数后,得到的后项表达式为Transfer-Rate-per-Port 5+Number-Of-Port/。
该表达式包含的操作数以及操作符在堆栈中存储的顺序如表3所示:
Transfer-Rate-per-Port |
5 |
+ |
Number-Of-Port |
/ |
表3
步骤105:当网管系统上报数据报告时计算经步骤104替换得到的表达式,然后根据计算结果判决是否开启或者关闭报警系统,实现系统的性能管理。
该步骤所述的计算方法也与现有技术中的表达式计算方法相同。
从上述表达式的解析过程可以看出,本发明所述的方法可以解决现有技术中的问题,实现表达式的正确解析。
另外,本领域的技术人员可以理解,本发明所述的方法不仅仅适用于上述阈值管理系统的表达式解析过程,还能够应用到任何系统,任何在操作数中包含操作符的表达式解析过程中。
Claims (5)
1、一种表达式的解析方法,其特征在于,包括如下步骤:
A、将所述表达式中出现的操作数依次替换为该操作数的替换名,其中,所述替换名与操作数为一一对应;
B、对经步骤A替换得到的表达式进行合法性检验及前项表达式到后项表达式的转换;
C、按照操作数与替换名的一一对应关系,将步骤B得到的后项表达式中所包含的替换名依次替换成为原来的操作数;
D、当网管系统上报数据报告时,计算经步骤C替换得到的表达式。
2、如权利要求1所述的方法,其特征在于,所述方法在步骤A之前进一步包括:A0、将网管系统提供的所有操作数,按照操作数中字符数的多少从大到小重新排序,生成操作数列表;
所述步骤A为:根据步骤A0生成的操作数列表,将所述表达式中出现的操作数依次替换为与之一一对应的替换名。
3、如权利要求1或2所述的方法,其特征在于,步骤A所述替换为:根据所述操作数在所述表达式中出现的次序生成与之对应的替换名。
4、如权利要求3所述的方法,其特征在于,所述步骤A进一步包括:建立操作数和与之对应的替换名对照的操作数替换列表,每替换一个操作数就在该操作数列表中记录所述操作数以及生成的与之对应的替换名。
5、如权利要求4所述的方法,其特征在于,步骤C所述操作数与替换名的一一对应关系为在步骤A建立的操作数替换列表中记录的操作数和与之对应替换名之间的对照关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100535572A CN100389565C (zh) | 2005-03-08 | 2005-03-08 | 一种实现报警判决的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100535572A CN100389565C (zh) | 2005-03-08 | 2005-03-08 | 一种实现报警判决的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1832419A true CN1832419A (zh) | 2006-09-13 |
CN100389565C CN100389565C (zh) | 2008-05-21 |
Family
ID=36994440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100535572A Expired - Fee Related CN100389565C (zh) | 2005-03-08 | 2005-03-08 | 一种实现报警判决的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100389565C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004613A (zh) * | 2010-12-07 | 2011-04-06 | 无锡永中软件有限公司 | 表达式的树状显示方法及求值方法 |
CN103914027A (zh) * | 2013-01-07 | 2014-07-09 | 上海宝信软件股份有限公司 | 利用表达式解析实现工业现场底层设备监测管理的方法 |
CN107526708A (zh) * | 2017-08-23 | 2017-12-29 | 诺仪器(中国)有限公司 | 测量仪器的波形显示处理方法及系统 |
WO2019165706A1 (zh) * | 2018-03-02 | 2019-09-06 | 平安科技(深圳)有限公司 | 表达式处理方法、装置、设备及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085237A (en) * | 1998-05-01 | 2000-07-04 | Cisco Technology, Inc. | User-friendly interface for setting expressions on an SNMP agent |
CN1148656C (zh) * | 1999-09-07 | 2004-05-05 | 皇家菲利浦电子有限公司 | 面向线程的调试 |
US6918107B2 (en) * | 2001-07-02 | 2005-07-12 | Bea Systems, Inc. | Programming language extensions for processing data representation language objects and related applications |
-
2005
- 2005-03-08 CN CNB2005100535572A patent/CN100389565C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004613A (zh) * | 2010-12-07 | 2011-04-06 | 无锡永中软件有限公司 | 表达式的树状显示方法及求值方法 |
CN102004613B (zh) * | 2010-12-07 | 2015-12-09 | 无锡永中软件有限公司 | 表达式的树状显示方法及求值方法 |
CN103914027A (zh) * | 2013-01-07 | 2014-07-09 | 上海宝信软件股份有限公司 | 利用表达式解析实现工业现场底层设备监测管理的方法 |
CN103914027B (zh) * | 2013-01-07 | 2016-07-06 | 上海宝信软件股份有限公司 | 利用表达式解析实现工业现场底层设备监测管理的方法 |
CN107526708A (zh) * | 2017-08-23 | 2017-12-29 | 诺仪器(中国)有限公司 | 测量仪器的波形显示处理方法及系统 |
WO2019165706A1 (zh) * | 2018-03-02 | 2019-09-06 | 平安科技(深圳)有限公司 | 表达式处理方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100389565C (zh) | 2008-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN112347377B (zh) | Ip地址段查找方法与业务调度方法、装置、电子设备 | |
US20100199132A1 (en) | Systems, methods and computer program products for remote error resolution reporting | |
CN101043692A (zh) | 巡检方法及巡检服务器 | |
CN109710439B (zh) | 故障处理方法和装置 | |
CN103678293B (zh) | 一种数据存储方法及装置 | |
US20130275395A1 (en) | Method for Indexed-Field Based Difference Detection and Correction | |
CN105512283A (zh) | 数据质量管理控制方法及装置 | |
CN104636502A (zh) | 一种查询系统的数据加速查询方法 | |
CN107168845B (zh) | 一种故障定位方法及装置 | |
US8195986B2 (en) | Method, system and computer program product for processing error information in a system | |
CN105868253A (zh) | 数据导入、查询方法及装置 | |
CA3139971A1 (en) | Problem positioning method and device | |
CN1832419A (zh) | 一种表达式的解析方法 | |
CN1783092A (zh) | 数据分析装置和数据分析方法 | |
US8463799B2 (en) | System and method for consolidating search engine results | |
CN117235069A (zh) | 索引创建方法、数据查询方法、装置、设备及存储介质 | |
CN110825953B (zh) | 数据查询方法、装置和设备 | |
CN1870524A (zh) | 网元告警数据获取方法 | |
CN110399132B (zh) | 项目代码的维护方法、装置、计算机设备和存储介质 | |
CN108229585B (zh) | 一种日志的归类方法及系统 | |
CN116016270A (zh) | 一种交换机测试管理方法、装置、电子设备和存储介质 | |
CN112632132B (zh) | 一种异常导入数据的处理方法、装置及设备 | |
CN110955710B (zh) | 一种数据交换作业中脏数据的处理方法及装置 | |
CN110602267B (zh) | 一种高效的dns服务器acl文件去重方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080521 Termination date: 20150308 |
|
EXPY | Termination of patent right or utility model |