一种公式解析计算系统及方法技术方案

技术编号:11130039 阅读:65 留言:0更新日期:2015-03-11 23:04
本发明专利技术涉及一种公式解析计算系统及方法,包括根据需求配置公式信息,将配置完成的公式进行四则运算法则的公式校验;将验证通过的公式进行存储;获取所需公式,输入相应参数得到公式实例;对公式实例进行校验,校验通过则进行实例解析,解析出若干组括号,按照从右到左从内到外依次提取括号中的字符串进行计算,将计算数值返回到公式实例相应位置,计算出所有括号内的值,得出计算结果。本发明专利技术通过配置所需的公式,对公式进行四则运算法则的校验,进而解析和计算公式,当需要修改公式时,无需修改代码,只需将配置的公式信息进行修改,解析计算时按照新的公式进行即可,大大减少了工作量,降低了维护成本。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及。
技术介绍
目前,很多软件系统中都需要对一些公式做处理,在软件生命周期中,后期的成本往往在总成本中占了非常多的一块。例如当某些值的计算规则经常变动时,通常需要通过修改代码的方式来完成计算规则的改变,这样给后期维护工作带来很大的工作量,效率极低,且人工修改代码无法保证操作的准确率,维护成本高。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足,提供。 本专利技术解决上述技术问题的技术方案如下:一种公式解析计算系统,包括公式配置模块、公式校验模块、公式存储模块、公式实例模块、实例解析模块和实例计算模块; 所述公式配置模块,其用于根据需求配置公式信息; 所述公式校验模块,其用于校验配置的公式是否符合四则运算法则,将验证通过的公式发送给公式存储模块;还用于对公式实例进行校验,验证通过发送给实例解析模块; 所述公式存储模块,其用于存储校验通过的公式; 所述公式实例模块,其用于从公式存储模块获取所需公式,输入相应参数得到公式实例,将公式实例发送给公式校验模块; 所述实例解析模块,其用于对校验通过的公式实例进行解析,解析出若干组括号,按照从右到左从内到外依次提取括号中的字符串发送给实例计算模块; 所述实例计算模块,其用于计算出各括号内的数值,将数值返回到公式实例的相应位置,得出计算结果。 本专利技术的有益效果是:本专利技术通过配置所需的公式,对公式进行四则运算法则的校验,进而解析和计算公式,当需要修改公式时,无需修改代码,只需将配置的公式信息进行修改,解析计算时按照新的公式进行即可,大大减少了工作量,降低了维护成本;另外,本专利技术不但对配置的公式进行四则运算法则的校验,还对公式实例进行校验,放置在公式实例化过程中,由于参数输入错误导致得到的公式实例不合法,大大提高了公式处理的可靠性。 在上述技术方案的基础上,本专利技术还可以做如下改进。 进一步,所述公式校验模块内存储公式校验规则,所述公式校验规则包括:一,判断左括号与右括号数目是否相等;二,判断是否存在左括号直接与加号、减号、乘号或者除号连接的情况;三,判断是否存在加号、减号、乘号或者除号直接与右括号连接的情况;四,判断是否存在加号、减号、乘号或者除号直接与加号、减号、乘号或者除号连接的情况;五,判断是否存在左括号直接与右括号连接的情况;以上五种情况为不符合四则法则的情况。 进一步,所述实例解析模块包括实例预处理单元和实例解析单元; 所述实例预处理单元,其用于在公式实例的开始加一个左括号,在公式实例的末端加一个右括号,将预处理的公式实例发送给实例解析单元; 所述实例解析单元,其用于依次查找预处理的公式实例中的最后一个左括号,进而查找该左括号右端与其最近的一个右括号,取出括号内字符串发送给实例计算模块,直至所有括号内的数据处理完毕。 进一步,所述实例计算模块包括括号数值计算单元和计算结果输出单元; 所述括号数值计算单元,其用于对实例解析模块发送的字符串进行计算,将计算结果返回给实例解析模块替换公式实例中所取括号及其内字符串; 所述计算结果输出单元,其用于判断括号数值计算单元计算的数据是否为最后一个括号中的数据,当为最后一个括号中的数据时,计算当前公式实例并输出计算结果。 进一步,所述括号数值计算单元计算括号内数值的具体实现为:对实例解析单元发送的数据放入一个集合中,查找该集合中除号位置,取除号前一元素和后一元素,相除得到一个新元素,进而将原位置的三个元素删除,放入该新元素;继续找除号进行上述操作,直至无法找到除号为止;根据上述操作方式执行乘号、减号和加号的计算,得出括号内的计算结果。 本专利技术解决上述技术问题的另一技术方案如下:一种公式解析计算方法,包括如下步骤: 步骤1,据需求配置公式信息; 步骤2,根据公式校验规则校验配置的公式是否符合四则运算法则,验证通过执行步骤3,否则提示公式不合法,返回步骤1 ; 步骤3,从公式存储模块获取所需公式,输入相应参数得到公式实例; 步骤4,对公式实例进行校验,校验通过执行步骤5,否则提示公式实例不合法,返回步骤3 ; 步骤5,对公式实例进行解析,解析出若干组括号,按照从右到左从内到外依次提取括号中的字符串发送给实例计算模块; 步骤6,实例计算模块计算出各括号内的数值,将数值返回到公式实例相应位置,得出计算结果。 在上述技术方案的基础上,本专利技术还可以做如下改进。 进一步,步骤2的具体实现如下: 步骤21,判断公式中的左括号与右括号数目是否相等,如果相等执行步骤22,否则提示括号数不相等,重新配置公式; 步骤22,判断是否存在左括号直接与加号、减号、乘号或者除号连接的情况,如果不存在执行步骤23,否则提示存在非法字符,重新配置公式; 步骤23,判断是否存在加号、减号、乘号或者除号直接与右括号连接的情况,如果不存在执行步骤24,否则提示存在非法字符,重新配置公式; 步骤24,判断是否存在加号、减号、乘号或者除号直接与加号、减号、乘号或者除号连接的情况,如果不存在执行步骤25,否则提示存在非法字符,重新配置公式; 步骤25,判断是否存在左括号直接与右括号连接的情况,如果存在则提示存在非法字符,重新配置公式;否则校验通过,结束流程。 进一步,所述步骤5的具体实现为: 步骤51,在公式实例的开始加一个左括号,在公式实例的末端加一个右括号,将预处理的公式实例发送给实例解析单元; 步骤52,依次查找预处理的公式实例中的最后一个左括号,进而查找该左括号右端与其最近的一个右括号,取出括号内字符串发送给实例计算模块,直至所有括号内的数据处理完毕。 进一步,所述步骤6的具体实现为: 步骤61,对实例解析模块发送的字符串进行计算,将计算结果返回给实例解析模块替换公式实例中所取括号及其内字符串; 步骤62,判断括号数值计算单元计算的数据是否为最后一个括号中数据,当为最后一个括号中的数据时,计算当前公式实例并输出计算结果。 进一步,所述步骤61的具体实现为:对实例解析单元发送的元素数据放入一个集合中,查找该集合中除号位置,取除号前一元素和后一元素,相除得到一个新元素,进而将原位置的三个元素删除,放入该新元素;继续找除号进行上述操作,直至无法找到除号;根据上述操作方式执行乘号、减号和加号的计算,得出括号内的计算结果。 【附图说明】 图1为本专利技术所述一种公式解析计算系统框图; 图2为本专利技术所述实例解析模块框图; 图3为本专利技术所述实例计算模块框图; 图4为本专利技术所述一种公式解析计算方法流程图; 图5为本专利技术步骤2所述公式校验流程图; 图6为本专利技术步骤5和步骤6的实现流程图。 附图中,各标号所代表的部件列表如下: 100、公式配置模块,200、公式校验模块,300、公式存储模块,400、公式实例模块,500、实例解析模块,600实例计算模块,501、实例预处理单元,502、实例解析单元,601、括号数值计算单元,602、计算结果输出单元。 【具体实施方式】 以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。 如图1所示,一种公式解析计算系统,包括本文档来自技高网...

【技术保护点】
一种公式解析计算系统,其特征在于,包括公式配置模块、公式校验模块、公式存储模块、公式实例模块、实例解析模块和实例计算模块;所述公式配置模块,其用于根据需求配置公式信息;所述公式校验模块,其用于校验配置的公式是否符合四则运算法则,将验证通过的公式发送给公式存储模块;还用于对公式实例进行校验,验证通过发送给实例解析模块;所述公式存储模块,其用于存储校验通过的公式;所述公式实例模块,其用于从公式存储模块获取所需公式,输入相应参数得到公式实例,将公式实例发送给公式校验模块;所述实例解析模块,其用于对校验通过的公式实例进行解析,解析出若干组括号,按照从右到左从内到外依次提取括号中的字符串发送给实例计算模块;所述实例计算模块,其用于计算出各括号内的数值,将数值返回到公式实例的相应位置,得出计算结果。

【技术特征摘要】
1.一种公式解析计算系统,其特征在于,包括公式配置模块、公式校验模块、公式存储模块、公式实例模块、实例解析模块和实例计算模块; 所述公式配置模块,其用于根据需求配置公式信息; 所述公式校验模块,其用于校验配置的公式是否符合四则运算法则,将验证通过的公式发送给公式存储模块;还用于对公式实例进行校验,验证通过发送给实例解析模块; 所述公式存储模块,其用于存储校验通过的公式; 所述公式实例模块,其用于从公式存储模块获取所需公式,输入相应参数得到公式实例,将公式实例发送给公式校验模块; 所述实例解析模块,其用于对校验通过的公式实例进行解析,解析出若干组括号,按照从右到左从内到外依次提取括号中的字符串发送给实例计算模块; 所述实例计算模块,其用于计算出各括号内的数值,将数值返回到公式实例的相应位置,得出计算结果。2.根据权利要求1所述一种公式解析计算系统,其特征在于,所述公式校验模块内存储公式校验规则,所述公式校验规则包括:一,判断左括号与右括号数目是否相等;二,判断是否存在左括号直接与加号、减号、乘号或者除号连接的情况;三,判断是否存在加号、减号、乘号或者除号直接与右括号连接的情况;四,判断是否存在加号、减号、乘号或者除号直接与加号、减号、乘号或者除号连接的情况;五,判断是否存在左括号直接与右括号连接的情况;以上五种情况为不符合四则法则的情况。3.根据权利要求1所述一种公式解析计算系统,其特征在于,所述实例解析模块包括实例预处理单元和实例解析单元; 所述实例预处理单元,其用于在公式实例的开始加一个左括号,在公式实例的末端加一个右括号,将预处理的公式实例发送给实例解析单元; 所述实例解析单元,其用于依次查找预处理的公式实例中的最后一个左括号,进而查找该左括号右端与其最近的一个右括号,取出括号内字符串发送给实例计算模块,直至所有括号内的数据处理完毕。4.根据权利要求1所述一种公式解析计算系统,其特征在于,所述实例计算模块包括括号数值计算单元和计算结果输出单元; 所述括号数值计算单元,其用于对实例解析模块发送的字符串进行计算,将计算结果返回给实例解析模块替换公式实例中所取括号及其内字符串; 所述计算结果输出单元,其用于判断括号数值计算单元计算的数据是否为最后一个括号中的数据,当为最后一个括号中的数据时,计算当前公式实例并输出计算结果。5.根据权利要求4所述一种公式解析计算系统,其特征在于,所述括号数值计算单元计算括号内数值的具体实现为:对实例解析单元发送的数据放入一个集合中,查找该集合中除号位置,取除号前一元素和后一元素,相除得到一个新元素,进而将原位置的三个元素删除,放入该新元素;继续找除号进行上述操作,直至无法找到除号为止;根据上述操作方式执行乘号、减号和加号的计算,得出括号内...

【专利技术属性】
技术研发人员:孙成
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1