CN110134941A - 一种复合表达式解析方法及系统 - Google Patents

一种复合表达式解析方法及系统 Download PDF

Info

Publication number
CN110134941A
CN110134941A CN201910257993.3A CN201910257993A CN110134941A CN 110134941 A CN110134941 A CN 110134941A CN 201910257993 A CN201910257993 A CN 201910257993A CN 110134941 A CN110134941 A CN 110134941A
Authority
CN
China
Prior art keywords
subexpression
expression
rule
operator
default
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
Application number
CN201910257993.3A
Other languages
English (en)
Inventor
李卫群
兰海翔
周发辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guizhou Li Chuang Technology Development Co Ltd
Original Assignee
Guizhou Li Chuang Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guizhou Li Chuang Technology Development Co Ltd filed Critical Guizhou Li Chuang Technology Development Co Ltd
Priority to CN201910257993.3A priority Critical patent/CN110134941A/zh
Publication of CN110134941A publication Critical patent/CN110134941A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种复合表达式解析方法及系统,该方法包括:读取待解析表达式;当待解析表达式为复合表达式时,从待解析表达式中截取子表达式,并记录复合表达式中截取子表达式后的截取位置;根据预设语法规则分析子表达式的目标运算顺序;根据目标运算顺序对子表达式进行运算,得到运算结果;根据目标运算顺序将运算结果填充至截取位置,得到解析结果。本发明提供的复合表达式解析方法及系统,能够有效排除非复合表达式,便于指定每个子表达式的运算顺序,提高了解析表达式的运算效率。

Description

一种复合表达式解析方法及系统
技术领域
本发明涉及一种表达式解析技术领域,尤其涉及一种复合表达式解析方法及系统。
背景技术
按照结合律将至少一个运算符和至少两个子表达式结合而成复合表达式,例如:第一子表达式*第二子表达式/第三子表达式。
在复合表达式的解析过程中,子表达式的运算顺序会影响复合表达式运算的正确性,通常以在复合表达式中增加括号指定子表达式的运算顺序,例如:(第一子表达式*第二子表达式)/第三表达式,在一些情形下,括号难以指定每个子表达式的运算顺序,复合表达式的运算效率会偏低。
发明内容
针对现有技术中以在复合表达式中增加括号的方式难以指定每个子表达式的运算顺序,复合表达式的运算效率会偏低的不足,本发明提供一种复合表达式解析方法及系统。
第一方面,本发明提供了一种复合表达式解析方法,包括:
读取待解析表达式;
当所述待解析表达式为复合表达式时,从所述待解析表达式中截取子表达式,并记录所述复合表达式中截取所述子表达式后的截取位置;
根据预设语法规则分析所述子表达式的目标运算顺序;
根据所述目标运算顺序对所述子表达式进行运算,得到运算结果;
根据所述目标运算顺序将所述运算结果填充至所述截取位置,得到解析表达式。
第二方面,本发明提供了一种复合表达式解析系统,包括:
读取模块,用于读取待解析表达式;
截取模块,用于当所述待解析表达式为复合表达式时,从所述待解析表达式中截取子表达式,并记录所述复合表达式中截取所述子表达式后的截取位置;
分析模块,用于根据预设语法规则分析所述子表达式的目标运算顺序;
运算模块,用于根据所述目标运算顺序对所述子表达式进行运算,得到运算结果;
填充模块,用于根据所述目标运算顺序将所述运算结果填充至所述截取位置,得到解析表达式。
本发明提供的复合表达式解析方法及系统的有益效果是:在将待解析表达式确定为复合表达式之后,才从复合表达式中截取子表达式并记录子表达式中的截取位置,有效排除了非复合表达式,通过预设语法规则分析目标运算顺序,便于指定每个子表达式的运算顺序,通过目标运算顺序将子表达式运算后的运算结果填充至截取位置的方式得到解析表达式,不需要在复合表达式中增加括号,能够提高解析表达式的运算效率和保证解析表达式运算的正确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种复合表达式解析方法的流程示意图;
图2为本发明实施例提供的一种复合表达式解析系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例一
如图1所示,一种复合表达式解析方法,该方法包括:读取待解析表达式;当待解析表达式为复合表达式时,从待解析表达式中截取子表达式,并记录复合表达式中截取子表达式后的截取位置;根据预设语法规则分析子表达式的目标运算顺序;根据目标运算顺序对子表达式进行运算,得到运算结果;根据目标运算顺序将运算结果填充至截取位置,得到解析表达式。
在一些具体实例中,表达式解析服务器接收到来自客户端上的网页发送的表达式解析请求,从表达式解析请求中解析出待解析表达式,将待解析表达式存储在内存中,在接收到解析指令时,从内存中读取待解析表达式,待解析表达式例如:a&&b||c;按照从左到右的顺序对待解析表达式中的运算符进行累计计数,得到累计值,判断累计值是否超过1个,若是,则将待解析表达式确定为复合表达式,否则,将待解析表达式确定为非复合表达式。
在将待解析表达式确定为复合表达式之后,才从复合表达式中截取子表达式并记录子表达式中的截取位置,有效排除了非复合表达式,通过预设语法规则分析目标运算顺序,便于指定每个子表达式的运算顺序,通过目标运算顺序将子表达式运算后的运算结果填充至截取位置的方式得到解析表达式,不需要在复合表达式中增加括号,能够提高解析表达式的运算效率和保证解析表达式运算的正确性。
优选地,当待解析表达式与预设合法表达式匹配时,根据预设合法表达式从待解析表达式中截取子表达式。
在一些具体实例中,预设合法表达式可以包括正则表达式,当正则表达式与待解析表达式匹配时,表示待解析表达式是合法的复合表达式,进而利用正则表达式可以从待解析表达式中截取出子表达式;当正则表达式与待解析表达式不匹配时,表示待解析表达式是非法的复合表达式,表达式解析服务器可以同步删除待解析表达式和向客户端反馈用于指示待解析表达式为非法复合表达式的通知消息,如此在节省表达式解析服务器的资源同时,还能够便于用户及时了解待解析表达式的正确性,以便于用户重新在客户端中输入复合表达式。
优选地,预设语法规则包括运算符语法子规则和对象语法子规则,子表达式包括运算符和两个运算对象。
根据预设语法规则分析子表达式的目标运算顺序具体包括:根据运算符语法子规则对运算符进行解析,得到运算符的运算类型;获取子表达式所占内存的字节数;比较子表达式所占内存的字节数与预设字节数,得到比较结果;根据运算类型、比较结果和对象语法子规则确定目标运算顺序。
通过运算类型、比较结果和对象语法子规则共同确定目标运算顺序,使得目标运算顺序更具有针对性和准确性,提高了目标运算顺序的确定效率。
优选地,根据运算类型、比较结果和对象语法子规则确定目标运算顺序具体包括:当运算类型指示运算符已指定两个运算对象的默认运算顺序,且比较结果指示子表达式所占内存的字节数不超过预设字节数时,将默认运算顺序确定为目标运算顺序;当运算类型指示运算符未指定默认运算顺序,且比较结果指示子表达式所占内存的字节数超过预设字节数时,根据对象语法子规则确定目标运算顺序。
在一些具体实例中,当运算类型指示运算符已指定两个运算对象的默认运算顺序,且比较结果指示子表达式所占内存的字节数超过预设字节数时,或者,当运算类型指示运算符未指定默认运算顺序,且比较结果指示子表达式所占内存的字节数未超过预设字节数时,可以重新读取待解析表达式、截取子表达式以及分析目标运算顺序,以检验子表达式的正确性。
优选地,根据对象语法子规则确定目标运算顺序具体包括:根据对象语法子规则分别对两个运算对象进行解析,得到两个运算对象各自的运算含义;根据两个运算对象各自的运算含义确定对应的运算次序;根据两个运算次序对两个运算对象在子表达式中的顺序进行更新,得到目标运算顺序。
预设语法规则、运算符语法子规则和对象语法子规则分别可以设置为预测分析表或/和预测分析树或/和预测分析程序,如图1所示,运算符语法子规则以预设分析表的形式示出,其中,默认运算顺序可以包括从左到右,例如:在&&左侧的运算对象的运算次序为1、在&&右侧的运算对象的运算次序为2和从&&左侧到右侧运算两个运算对象。
表1
在一些具体实例中,运算含义描述了运算对象在运算时是否会发生改变和运算对象的运算次序,例如:在子表达式“f1()×f2()”中,运算对象f1()中的“return 2”描述了运算对象f1()执行时不会改变2且运算对象f2()中的“return++n”描述了运算对象f2()执行时会改变n值,即:运算对象f1()在运算时不发生改变且运算对象f2()在运算时发生改变,此时,运算对象f1()的运算次序为2和运算对象f2()的运算次序为1,将运算对象f1()和f2()在子表达式中的位置互换,得到子表达式“f2()×f1()”,在该表达式中,从左到右的顺序即为目标运算顺序。
实施例二
如图2所示,一种复合表达式解析系统,该系统包括:接收模块,用于读取待解析表达式;截取模块,用于当待解析表达式为复合表达式时,从待解析表达式中截取子表达式,并记录复合表达式中截取子表达式后的截取位置;分析模块,用于根据预设语法规则分析子表达式的目标运算顺序;运算模块,用于根据目标运算顺序对子表达式进行运算,得到运算结果;填充模块,用于根据目标运算顺序将运算结果填充至截取位置,得到解析表达式。
优选地,截取模块具体用于:当待解析表达式与预设合法表达式匹配时,根据预设合法表达式从待解析表达式中截取子表达式。
优选地,预设语法规则包括运算符语法子规则和对象语法子规则,子表达式包括运算符和两个运算对象,分析模块具体包括运算符解析模块、字节获取模块、字节比较模块和顺序确定模块。
运算符解析模块,用于根据运算符语法子规则对运算符进行解析,得到运算符的运算类型。
字节获取模块,用于获取子表达式所占内存的字节数;字节比较模块,用于比较子表达式所占内存的字节数与预设字节数,得到比较结果。
顺序确定模块,用于根据运算类型、比较结果和对象语法子规则确定目标运算顺序。
优选地,顺序确定模块具体包括第一确定子模块和第二确定子模块。
第一确定子模块,用于当运算类型指示运算符已指定两个运算对象的默认运算顺序,且比较结果指示子表达式所占内存的字节数不超过预设字节数时,将默认运算顺序确定为目标运算顺序。
第二确定子模块,用于当运算类型指示运算符未指定默认运算顺序,且比较结果指示子表达式所占内存的字节数超过预设字节数时,根据对象语法子规则确定目标运算顺序。
优选地,第二确定子模块具体用于:当运算类型指示运算符未指定默认运算顺序,且比较结果指示子表达式所占内存的字节数超过预设字节数时,根据对象语法子规则分别对两个运算对象进行解析,得到两个运算对象各自的运算含义;根据两个运算对象各自的运算含义确定对应的运算次序;根据两个运算次序对两个运算对象在子表达式中的顺序进行更新,得到目标运算顺序。
读者应理解,在本说明书的描述中,参考术语“方面”、“优选地”或“一些具体实例”等的描述意指结合该实施例或示例描述的具体特征、步骤或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、步骤或者特点可以在任一个或多个具体实例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同具体实例或示例以及不同实施例或示例的特征进行结合或/和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种复合表达式解析方法,其特征在于,包括:
读取待解析表达式;
当所述待解析表达式为复合表达式时,从所述待解析表达式中截取子表达式,并记录所述复合表达式中截取所述子表达式后的截取位置;
根据预设语法规则分析所述子表达式的目标运算顺序;
根据所述目标运算顺序对所述子表达式进行运算,得到运算结果;
根据所述目标运算顺序将所述运算结果填充至所述截取位置,得到解析表达式。
2.根据权利要求1所述的复合表达式解析方法,其特征在于,从所述待解析表达式中截取子表达式具体包括:
当所述待解析表达式与预设合法表达式匹配时,根据所述预设合法表达式从所述待解析表达式中截取所述子表达式。
3.根据权利要求1或2所述的复合表达式解析方法,其特征在于,所述预设语法规则包括运算符语法子规则和对象语法子规则,所述子表达式包括运算符和两个运算对象,根据预设语法规则分析所述子表达式的目标运算顺序具体包括:
根据所述运算符语法子规则对所述运算符进行解析,得到所述运算符的运算类型;
获取所述子表达式所占内存的字节数;
比较所述子表达式所占内存的字节数与预设字节数,得到比较结果;
根据所述运算类型、所述比较结果和所述对象语法子规则确定所述目标运算顺序。
4.根据权利要求3所述的复合表达式解析方法,其特征在于,根据所述运算类型、所述比较结果和所述对象语法子规则确定所述目标运算顺序具体包括:
当所述运算类型指示所述运算符已指定两个所述运算对象的默认运算顺序,且所述比较结果指示所述子表达式所占内存的字节数不超过所述预设字节数时,将所述默认运算顺序确定为所述目标运算顺序;
当所述运算类型指示所述运算符未指定所述默认运算顺序,且所述比较结果指示所述子表达式所占内存的字节数超过所述预设字节数时,根据所述对象语法子规则确定所述目标运算顺序。
5.根据权利要求4所述的复合表达式解析方法,其特征在于,根据所述对象语法子规则确定所述目标运算顺序具体包括:
根据所述对象语法子规则分别对两个所述运算对象进行解析,得到两个所述运算对象各自的运算含义;
根据两个所述运算对象各自的运算含义确定对应的运算次序;
根据两个所述运算次序对两个所述运算对象在所述子表达式中的顺序进行更新,得到所述目标运算顺序。
6.一种复合表达式解析系统,其特征在于,包括:
读取模块,用于读取待解析表达式;
截取模块,用于当所述待解析表达式为复合表达式时,从所述待解析表达式中截取子表达式,并记录所述复合表达式中截取所述子表达式后的截取位置;
分析模块,用于根据预设语法规则分析所述子表达式的目标运算顺序;
运算模块,用于根据所述目标运算顺序对所述子表达式进行运算,得到运算结果;
填充模块,用于根据所述目标运算顺序将所述运算结果填充至所述截取位置,得到解析表达式。
7.根据权利要求6所述的复合表达式解析系统,其特征在于,所述截取模块具体用于:
当所述待解析表达式与预设合法表达式匹配时,根据所述预设合法表达式从所述待解析表达式中截取所述子表达式。
8.根据权利要求6或7所述的复合表达式解析系统,其特征在于,所述预设语法规则包括运算符语法子规则和对象语法子规则,所述子表达式包括运算符和两个运算对象,所述分析模块具体包括运算符解析模块、字节获取模块、字节比较模块和顺序确定模块;
所述运算符解析模块,用于根据所述运算符语法子规则对所述运算符进行解析,得到所述运算符的运算类型;
所述字节获取模块,用于获取所述子表达式所占内存的字节数;
所述字节比较模块,用于比较所述子表达式所占内存的字节数与预设字节数,得到比较结果;
所述顺序确定模块,用于根据所述运算类型、所述比较结果和所述对象语法子规则确定所述目标运算顺序。
9.根据权利要求8所述的复合表达式解析系统,其特征在于,所述顺序确定模块具体包括第一确定子模块和第二确定子模块:
所述第一确定子模块,用于当所述运算类型指示所述运算符已指定两个所述运算对象的默认运算顺序,且所述比较结果指示所述子表达式所占内存的字节数不超过所述预设字节数时,将所述默认运算顺序确定为所述目标运算顺序;
所述第二确定子模块,用于当所述运算类型指示所述运算符未指定所述默认运算顺序,且所述比较结果指示所述子表达式所占内存的字节数超过所述预设字节数时,根据所述对象语法子规则确定所述目标运算顺序。
10.根据权利要求9所述的复合表达式解析系统,其特征在于,所述第二确定子模块具体用于:
当所述运算类型指示所述运算符未指定所述默认运算顺序,且所述比较结果指示所述子表达式所占内存的字节数超过所述预设字节数时,根据所述对象语法子规则分别对两个所述运算对象进行解析,得到两个所述运算对象各自的运算含义;
根据两个所述运算对象各自的运算含义确定对应的运算次序;
根据两个所述运算次序对两个所述运算对象在所述子表达式中的顺序进行更新,得到所述目标运算顺序。
CN201910257993.3A 2019-04-01 2019-04-01 一种复合表达式解析方法及系统 Pending CN110134941A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910257993.3A CN110134941A (zh) 2019-04-01 2019-04-01 一种复合表达式解析方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910257993.3A CN110134941A (zh) 2019-04-01 2019-04-01 一种复合表达式解析方法及系统

Publications (1)

Publication Number Publication Date
CN110134941A true CN110134941A (zh) 2019-08-16

Family

ID=67569115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910257993.3A Pending CN110134941A (zh) 2019-04-01 2019-04-01 一种复合表达式解析方法及系统

Country Status (1)

Country Link
CN (1) CN110134941A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164393A (zh) * 2013-04-12 2013-06-19 中国农业银行股份有限公司 报表公式处理方法和系统
CN103488609A (zh) * 2013-09-03 2014-01-01 南京国电南自美卓控制系统有限公司 基于算子变量递归识别技术的复合表达式智能解析方法
CN105574032A (zh) * 2014-10-15 2016-05-11 阿里巴巴集团控股有限公司 规则匹配运算方法及装置
CN105786616A (zh) * 2016-02-02 2016-07-20 上海达梦数据库有限公司 内存管理方法及系统
CN108563795A (zh) * 2018-05-04 2018-09-21 西安交通大学 一种加速压缩流量正则表达式匹配的Pairs方法
CN109445306A (zh) * 2018-10-26 2019-03-08 湖南磁浮技术研究中心有限公司 一种基于规则配置解析的关联参数自动判读方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164393A (zh) * 2013-04-12 2013-06-19 中国农业银行股份有限公司 报表公式处理方法和系统
CN103488609A (zh) * 2013-09-03 2014-01-01 南京国电南自美卓控制系统有限公司 基于算子变量递归识别技术的复合表达式智能解析方法
CN105574032A (zh) * 2014-10-15 2016-05-11 阿里巴巴集团控股有限公司 规则匹配运算方法及装置
CN105786616A (zh) * 2016-02-02 2016-07-20 上海达梦数据库有限公司 内存管理方法及系统
CN108563795A (zh) * 2018-05-04 2018-09-21 西安交通大学 一种加速压缩流量正则表达式匹配的Pairs方法
CN109445306A (zh) * 2018-10-26 2019-03-08 湖南磁浮技术研究中心有限公司 一种基于规则配置解析的关联参数自动判读方法及系统

Similar Documents

Publication Publication Date Title
CN109325009B (zh) 日志解析的方法及装置
US6230312B1 (en) Automatic detection of per-unit location constraints
US8387017B2 (en) Black box testing optimization using information from white box testing
US20080320031A1 (en) Method and device for analyzing an expression to evaluate
GB2536084A (en) A system and method for accessibility assessment of a web application
US20170097927A1 (en) Cascading style sheet meta language performance
US10069779B2 (en) Method of hybrid message passing with shared memory
CN110286917A (zh) 文件打包方法、装置、设备及存储介质
CN112929358B (zh) 用于微服务编排的方法和装置、电子设备、及介质
JP2023071664A (ja) フォーマット特有のデータ処理動作
Bendík et al. Online enumeration of all minimal inductive validity cores
CN115599359A (zh) 一种代码生成方法、装置、设备及介质
CN106228972B (zh) 面向智能机器人系统的多语言文本混合朗读方法及系统
US20160085659A1 (en) Base Line for Code Analysis
US9442826B2 (en) Kernel functionality checker
CN110134941A (zh) 一种复合表达式解析方法及系统
KR101292670B1 (ko) 벡터 프로세싱 장치 및 방법
Taskula Advanced data fetching with graphql: Case bakery service
CN106055640A (zh) 缓存的管理方法及系统
US7366722B2 (en) System and method for specifying application services and distributing them across multiple processors using XML
CN112311679B (zh) 状态检测方法、装置、电子设备及可读存储介质
US20020133808A1 (en) Cell based data processing
US10885252B1 (en) Coverage model enhancement to support logic and arithmetic expressions
CN109547276B (zh) 一种问题定位方法、终端及存储介质
CN106598756B (zh) 不同应用程序之间的数据交互方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190816