CN105677528A - 通过逆波兰表达式对五防逻辑表达式进行校验的方法 - Google Patents
通过逆波兰表达式对五防逻辑表达式进行校验的方法 Download PDFInfo
- Publication number
- CN105677528A CN105677528A CN201610012671.9A CN201610012671A CN105677528A CN 105677528 A CN105677528 A CN 105677528A CN 201610012671 A CN201610012671 A CN 201610012671A CN 105677528 A CN105677528 A CN 105677528A
- Authority
- CN
- China
- Prior art keywords
- stack
- operator
- prevention logic
- character
- expression
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/25—Testing of logic operation, e.g. by logic analysers
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种通过逆波兰表达式对五防逻辑表达式进行校验的方法,该方法主要是通过构造一个运算符栈S1和逆波兰栈S2,然后读入需要操作设备对应状态的五防逻辑,判断是否存在没有转换的情况条件,并读入没有转换的情况条件下对应的五防逻辑表达式,并从左至右扫描该情况条件下对应的五防逻辑表达式;最后根据逆波兰表达式将传统的五防逻辑表达式进行转换,剔除表达式中复杂的算术符号“()”,只留下最简单的运算,能够保证方法的正确性的同时,减少程序员出现BUG的可能性,提高五防软件对于五防校验的准确性,同时能减少测试部门的测试压力。
Description
技术领域
本发明涉及电子信息及数据处理技术领域,具体涉及一种通过逆波兰表达式对五防逻辑表达式进行校验的方法。
背景技术
变电站的倒闸操作需要使用操作票,而操作票中的操作步骤的合法性,需要由五防软件进行判断,目前五防软件的判断依据只有两种方法:(1)五防逻辑校核表达式;(2)电网拓朴分析。但是由于电网拓朴分析不具备可视性,一般的变电站要求必须采用五防逻辑校核表达式判断操作步骤的合法性。综上,一般变电站进行倒闸操作必须得使用五防逻辑校核表达式。
一种五防逻辑校核表达式的结构,例如:
“1115-3L:{}|1|1115=10,(1115-1=01+1115-2=01)!”解释如下:
1115-3L:此为操作设备与状态,表示该条逻辑表达式是对1115-3编号的设备进行分操作(L为分操作,H为合操作);
{}|1|:此为情况条件,表示该逻辑表达式是单一情况操作。如果有多种情况条件,那么会表达成“{...}|2|...;{}|1|...!”,且没有个数限制。多种情况条件下,情况条件1中“{}”中不能有语句,其他情况条件的“{}”必须都存在语句,同时必须为高条件在前,低条件在后。例如:1115H:{1115=00}|2|...;{}|1|...!;
1115=10,(1115-1=01+1115-2=01)!:此为第一种情况条件对应的逻辑表达式,表示满足当前设备操作需要的其他设备状态。其中“=”左侧表示当前需要判断的设备,右侧第二位表示当前设备需要判断的设备需要的状态,右侧第一位表示如果当前设备需要判断的设备需要的状态与其实际状态不符的错误原因序号;“,”表示“且”的意思;“()”表示括号内的是一个整体,优先判断;“+”表示或的意思。
那么当前这条表达式解释为1115-3设备需要分开的条件为:1115当前状态为分(如果不为分,提示为1号错误),而且1115-1或者1115-2当前状态为合(如果都不满足,提示0号错误)。
五防逻辑校核表达式直接关系到电网的人身与财产安全,但是五防逻辑校核表达式中存在校核优先级顺序,导致表达式中存在“()”等来表明优先级的符号。
如此,存在一个明显缺陷:程序员在编写代码时,判断当前设备是否满足五防逻辑表达式的语句,进行表达式字符串拆分时,会对含有多重“()”的表达式进行拆分,难免会出现拆分错误或者考虑不全面的情况,引起变电站现场倒闸操作的错误,严重时,会影响操作人员的人生安全。
波兰逻辑学家J.Lukasiewicz于1929年提出了逆波兰表达式,逆波兰表达式又叫做后缀表达式,下面是一些例子:
正常的表达式逆波兰表达式
a+b--->a,b,+
a+(b-c)--->a,b,c,-,+
a+(b-c)*d--->a,b,c,-,d,*,+
a+d*(b-c)--->a,d,b,c,-,*,+
a=1+3--->a=1,3+
它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*。它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:
如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。
发明内容
本发明提供一种通过逆波兰表达式对五防逻辑表达式进行校验的方法,能够在五防逻辑校核表达式转换成逆波兰表达式的过程中,把最明显的缺陷——“()”全部转换掉,从而完全避免在判断当前设备是否满足五防逻辑表达式的语句时,可能出现的问题。本发明的目的由以下技术方案实现:
一种通过逆波兰表达式对五防逻辑表达式进行校验的方法,如下:
(1)首先构造一个运算符栈S1和逆波兰栈S2,运算符在运算符栈S1内遵循越往栈顶优先级越高的原则;
(2)读入需要操作设备对应状态的五防逻辑;
(3)判断是否存在没有转换的情况条件,存在则进入步骤(4),否则逻辑校验不通过并结束;
(4)读入该情况条件下对应的五防逻辑表达式,并从左至右扫描该情况条件下对应的五防逻辑表达式;
(5)如果当前字符是数字,则分析到该数字串的结束并将该数字串直接输出并压入逆波兰栈S2;如果不是数字,该字符则是运算符,此时需比较优先关系后再将该字符压入逆波兰栈S2;
(6)重复步骤(5)直至扫描完该情况条件下对应的五防逻辑表达式,确定所有字符都得到处理,便将该情况条件下对应的五防逻辑表达式转化为逆波兰表示的简单算术表达式;
(7)将逆波兰栈S2中所有元素出栈,组成字符串,各个元素之间以“|”分割,并对转换完成的逆波兰表达式进行求值运算;
(8)判断求值结果是否通过,通过则提示校验通过可以操作,否则返回步骤(3)。
作为具体的技术方案,所述步骤(5)中比较优先关系的做法如下:将该字符与运算符栈S1栈顶的运算符的优先关系相比较,如果该字符优先关系高于此运算符栈顶的运算符,则将该字符压入逆波兰栈S2,否则将栈顶的运算符从运算符栈S1中弹出,如此比较,直到运算符栈S1栈顶运算符的优先级低于当前运算符,将该字符压入逆波兰栈S2。
本发明的有益效果在于,根据逆波兰表达式将传统的五防逻辑表达式进行转换,剔除表达式中复杂的算术符号“()”,只留下最简单的运算,能够保证方法的正确性的同时,减少程序员出现BUG的可能性,提高五防软件对于五防校验的准确性,同时能减少测试部门的测试压力。
附图说明
图1为逆波兰表达式转换流程图。
图2为本发明提供的通过逆波兰表达式对五防逻辑表达式进行校验的方法的流程图。
具体实施方式
如图1所示,将一个普通的中序表达式转换为逆波兰表达式的一般算法是:
(1)首先构造一个运算符栈S1和逆波兰栈S2,运算符在运算符栈S1内遵循越往栈顶优先级越高的原则。
(2)读入一个用中缀表示的简单算术表达式,并从左至右扫描该算术表达式。
(3)如果当前字符是数字,则分析到该数字串的结束并将该数字串直接输出并压入逆波兰栈S2;如果不是数字,该字符则是运算符,此时需比较优先关系,做法如下:将该字符与运算符栈S1栈顶的运算符的优先关系相比较,如果该字符优先关系高于此运算符栈顶的运算符,则将该字符压入逆波兰栈S2,否则将栈顶的运算符从运算符栈S1中弹出,如此比较,直到运算符栈S1栈顶运算符的优先级低于当前运算符,将该字符压入逆波兰栈S2。
(4)重复上述操作(3)-(4)直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。
本实施例通过将常规的五防逻辑校核表达式进行分析转换,得到一种逆波兰表达式,从而进行逆波兰表达式的算术运算,得出当前操作是否满足逆波兰表达式的算术运算,最终得出当前操作是否可以操作。
结合图2所示,本实施例提供的通过逆波兰表达式对五防逻辑表达式进行校验的方法,包括如下步骤:
(1)首先构造一个运算符栈S1和逆波兰栈S2,运算符在运算符栈S1内遵循越往栈顶优先级越高的原则。
(2)读入需要操作设备对应状态的五防逻辑。
(3)判断是否存在没有转换的情况条件,存在则进入步骤(4),否则逻辑校验不通过并结束。
(4)读入该情况条件下对应的五防逻辑表达式,并从左至右扫描该情况条件下对应的五防逻辑表达式。
(5)如果当前字符是数字,则分析到该数字串的结束并将该数字串直接输出并压入逆波兰栈S2;如果不是数字,该字符则是运算符,此时需比较优先关系,做法如下:将该字符与运算符栈S1栈顶的运算符的优先关系相比较,如果该字符优先关系高于此运算符栈顶的运算符,则将该字符压入逆波兰栈S2,否则将栈顶的运算符从运算符栈S1中弹出,如此比较,直到运算符栈S1栈顶运算符的优先级低于当前运算符,将该字符压入逆波兰栈S2。
(6)重复步骤(5)直至扫描完该情况条件下对应的五防逻辑表达式,确定所有字符都得到处理,便将该情况条件下对应的五防逻辑表达式转化为逆波兰表示的简单算术表达式。
(7)将逆波兰栈S2中所有元素出栈,组成字符串,各个元素之间以“|”分割,并对转换完成的逆波兰表达式进行求值运算。
(8)判断求值结果是否通过,通过则提示校验通过可以操作,否则返回步骤(3)。
下面通过一个实例帮助理解上述方法及过程:
如果要操作1115-3设备由合到分状态,获取到“1115-3L:{}|1|1115=10,(1115-1=01+1115-2=01)!”的逻辑表达式,“1115=10,(1115-1=01+1115-2=01)”转换成:“1115|10|=|1115-1|01|=|1115-2|01|=|+|,|”。“|”表示分割符号,方便对此字符串拆解。
出栈及运算的过程如下:
读到1115,压栈;读到10,压栈;读到“=”,将栈顶的两个元素“1115”“10”弹出,判断1115与10是否相等,将结果入栈。
继续读取到1115-1,压栈;读到01,压栈;读到“=”,将栈顶的两个元素“1115-1”“01”弹出,判断1115-1与01是否相等,将结果入栈。
如此循环,最后读取到“+”,则将栈顶两个元素(即之前运算的结果)弹出,出作相应运算,结果再入栈。最终栈里只剩下一个值,即为表达式的结果。
上述实施例仅为充分公开而非限制本发明,凡是依据本发明创新主旨且未经创造性劳动即可获得的等效技术特征替换及增减,均应属于本发明涵盖范围。
Claims (2)
1.一种通过逆波兰表达式对五防逻辑表达式进行校验的方法,其特征在于,包括如下步骤:
(1)首先构造一个运算符栈S1和逆波兰栈S2,运算符在运算符栈S1内遵循越往栈顶优先级越高的原则;
(2)读入需要操作设备对应状态的五防逻辑;
(3)判断是否存在没有转换的情况条件,存在则进入步骤(4),否则逻辑校验不通过并结束;
(4)读入该情况条件下对应的五防逻辑表达式,并从左至右扫描该情况条件下对应的五防逻辑表达式;
(5)如果当前字符是数字,则分析到该数字串的结束并将该数字串直接输出并压入逆波兰栈S2;如果不是数字,该字符则是运算符,此时需比较优先关系后再将该字符压入逆波兰栈S2;
(6)重复步骤(5)直至扫描完该情况条件下对应的五防逻辑表达式,确定所有字符都得到处理,便将该情况条件下对应的五防逻辑表达式转化为逆波兰表示的简单算术表达式;
(7)将逆波兰栈S2中所有元素出栈,组成字符串,各个元素之间以“|”分割,并对转换完成的逆波兰表达式进行求值运算;
(8)判断求值结果是否通过,通过则提示校验通过可以操作,否则返回步骤(3)。
2.根据权利要求1所述的通过逆波兰表达式对五防逻辑表达式进行校验的方法,其特征在于,所述步骤(5)中比较优先关系的做法如下:将该字符与运算符栈S1栈顶的运算符的优先关系相比较,如果该字符优先关系高于此运算符栈顶的运算符,则将该字符压入逆波兰栈S2,否则将栈顶的运算符从运算符栈S1中弹出,如此比较,直到运算符栈S1栈顶运算符的优先级低于当前运算符,将该字符压入逆波兰栈S2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610012671.9A CN105677528A (zh) | 2016-01-06 | 2016-01-06 | 通过逆波兰表达式对五防逻辑表达式进行校验的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610012671.9A CN105677528A (zh) | 2016-01-06 | 2016-01-06 | 通过逆波兰表达式对五防逻辑表达式进行校验的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677528A true CN105677528A (zh) | 2016-06-15 |
Family
ID=56299601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610012671.9A Pending CN105677528A (zh) | 2016-01-06 | 2016-01-06 | 通过逆波兰表达式对五防逻辑表达式进行校验的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677528A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492383A (zh) * | 2018-11-09 | 2019-03-19 | 四川长虹电器股份有限公司 | 一种数据权限的解析方法 |
CN111460815A (zh) * | 2020-03-16 | 2020-07-28 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
CN111767004A (zh) * | 2020-06-30 | 2020-10-13 | 电子科技大学 | 基于逆波兰算法的数字示波器数学运算处理方法 |
CN112765969A (zh) * | 2021-01-11 | 2021-05-07 | 成都深思科技有限公司 | 一种高效实时的表达式语法验证方法及系统 |
CN113807975A (zh) * | 2021-09-16 | 2021-12-17 | 平安健康保险股份有限公司 | 一种校验信息的方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201199639Y (zh) * | 2008-04-17 | 2009-02-25 | 国电南瑞科技股份有限公司 | 可实现防误闭锁功能的变电站测控装置 |
-
2016
- 2016-01-06 CN CN201610012671.9A patent/CN105677528A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201199639Y (zh) * | 2008-04-17 | 2009-02-25 | 国电南瑞科技股份有限公司 | 可实现防误闭锁功能的变电站测控装置 |
Non-Patent Citations (1)
Title |
---|
殷垚,梅德冬: "基于IEC61850 在线式防误测控装置设计与实现", 《电气自动化2013 年》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492383A (zh) * | 2018-11-09 | 2019-03-19 | 四川长虹电器股份有限公司 | 一种数据权限的解析方法 |
CN109492383B (zh) * | 2018-11-09 | 2022-02-01 | 四川长虹电器股份有限公司 | 一种数据权限的解析方法 |
CN111460815A (zh) * | 2020-03-16 | 2020-07-28 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
WO2021184765A1 (zh) * | 2020-03-16 | 2021-09-23 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
CN111460815B (zh) * | 2020-03-16 | 2022-04-01 | 平安科技(深圳)有限公司 | 规则处理方法、装置、介质及电子设备 |
CN111767004A (zh) * | 2020-06-30 | 2020-10-13 | 电子科技大学 | 基于逆波兰算法的数字示波器数学运算处理方法 |
CN111767004B (zh) * | 2020-06-30 | 2022-02-11 | 电子科技大学 | 基于逆波兰算法的数字示波器数学运算处理方法 |
CN112765969A (zh) * | 2021-01-11 | 2021-05-07 | 成都深思科技有限公司 | 一种高效实时的表达式语法验证方法及系统 |
CN113807975A (zh) * | 2021-09-16 | 2021-12-17 | 平安健康保险股份有限公司 | 一种校验信息的方法、装置、计算机设备及存储介质 |
CN113807975B (zh) * | 2021-09-16 | 2024-06-04 | 平安健康保险股份有限公司 | 一种校验信息的方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677528A (zh) | 通过逆波兰表达式对五防逻辑表达式进行校验的方法 | |
Sinnamon et al. | Improved efficiency in qualitative fault tree analysis | |
CN107632590B (zh) | 一种基于优先级的底事件排序方法 | |
US20160063395A1 (en) | Method and apparatus for labeling training samples | |
CN104991863A (zh) | 一种基于功能块图测试模型自动生成测试用例的方法 | |
US20200134046A1 (en) | Compression of Log Data Using Field Types | |
CN109743311A (zh) | 一种WebShell检测方法、装置及存储介质 | |
JP3825572B2 (ja) | 半導体集積回路の設計検証装置、方法及び記憶媒体 | |
CN108763064A (zh) | 一种基于黑盒函数与机器学习的代码测试生成方法和装置 | |
CN110908758B (zh) | 一种防误闭锁逻辑表达式图形化配置方法及系统 | |
US8489537B2 (en) | Segmenting sequential data with a finite state machine | |
CN105356449A (zh) | 一种基于故障树的变电站监控故障信号的自主分析方法 | |
CN112083275A (zh) | 一种配网故障类型识别方法及系统 | |
CN115687108A (zh) | 基于uvm与fpv相结合的验证方法、平台、终端及存储介质 | |
CN107526851A (zh) | 两状态系统的go法中可靠度计算方法 | |
US20200019654A1 (en) | Verification algorithm engine selection | |
CN112783775B (zh) | 特殊字符输入测试方法及装置 | |
CN102043710A (zh) | 可视化软件测试系统 | |
CN114238107A (zh) | 一种跟踪调试方法、系统及计算机可读存储介质 | |
CN103729289B (zh) | 一种利用图式标明hpd逻辑可靠性的方法 | |
CN114491973A (zh) | 一种虚端子回路校核方法、装置和终端设备 | |
CN112347723A (zh) | 基于版图的rom代码提取验证方法及装置 | |
CN109918129B (zh) | 一种基于g核分解的软件关键函数识别方法 | |
CN101751494A (zh) | 一种基于倒序树扫描线算法的边投影优化方法 | |
KR102595430B1 (ko) | 원자력 안전등급용 정규형 도면 생성 장치 및 그 방법 |
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 |
Application publication date: 20160615 |
|
RJ01 | Rejection of invention patent application after publication |