[发明专利]一种表达式处理方法和装置有效
申请号: | 201710806609.1 | 申请日: | 2017-09-08 |
公开(公告)号: | CN107729001B | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 胡勇 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;姜劲 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 表达式 处理 方法 装置 | ||
本发明公开了一种表达式处理方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:一种表达式处理方法,其特征在于,所述表达式是树型结构,所述表达式本身作为根节点,每个非根节点是其父节点的子表达式,每个节点包括前缀,所述前缀标识处理该节点的计算引擎,所述方法包括:步骤a,对所述表达式中的未处理的最低层的节点,调用该节点的计算引擎处理该节点以得到计算结果,并在所述表达式中,把该节点替换为所述计算结果;步骤b,确定该表达式中是否还存在未处理的节点,若存在,则转步骤a。该实施方式能够通过多种表达式引擎混合使用来计算表达式,结合多种表达式引擎的优点进行表达式计算。
技术领域
本发明涉及计算机技术领域,尤其涉及一种表达式处理方法和装置。
背景技术
表达式是由数字、算符、数字分组符号、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。很多程序代码中都涉及到表达式的计算,目前代码中表达式的算术运算,都交给表达式引擎来完成。表达式引擎是第三方提供的表达式计算工具,其可以对字符串表达式进行四则运算、三目运算以及函数调用等等一系列处理,将表达式解析成计算机能识别的代码。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:每种表达式引擎的功能都有自己的局限性,且每种表达式引擎都有各自的特殊的调用方式、数据计算方法和所适用的特殊场景。而开发者在写程序代码时往往只能单独使用一种表达式引擎,然而只使用一种表达式计算引擎,就为表达式的计算带来了上述的局限性。
因此,亟需一种能够支持通过多种表达式引擎混合使用来计算表达式的表达式处理方法,实现由多种表达组合来完成一个算术运算。
发明内容
有鉴于此,本发明实施例提供一种表达式处理方法和装置,能够通过多种表达式引擎混合使用来计算表达式,结合多种表达式引擎的优点进行表达式计算。
为实现上述目的,根据本发明实施例的一个方面,提供了一种表达式处理方法,所述表达式是树型结构,所述表达式本身作为根节点,每个非根节点是其父节点的子表达式,每个节点包括前缀,所述前缀标识处理该节点的计算引擎,所述方法包括:
步骤a,对所述表达式中的未处理的最低层的节点,调用该节点的计算引擎处理该节点以得到计算结果,并在所述表达式中,把该节点替换为所述计算结果;
步骤b,确定该表达式中是否还存在未处理的节点,若存在,则转步骤a。
进一步的,所述节点除了前缀还包括:内容,所述节点的内容位于对应的左右标识符之间,
所述方法还包括:
构建所述树结构中所有节点的标识符对象,其中,所述标识符对象包括:节点的左右标识符的符号和位置,所述最低层的节点是在所述表达式中的节点中比较每个节点的标识符的位置获得的。
进一步的,所述标识符对象还包括:相应节点的前缀,其中,该节点对应的计算引擎是在预设的注册模块中通过所述前缀匹配确定的,其中,所述注册模块中预注册有一个或多个预设的计算引擎和其所对应的前缀名称。
进一步的,所述构建所述表达式中所有节点的标识符对象包括:
从左至右顺序地对所述表达式的每个字符执行下述标识符识别步骤:
判断当前字符是否是左右标识符,
若当前字符是左标识符,则创建该左标识符对应的节点的标识符对象,在该标识符对象中记录该左标识符的符号和位置,并匹配该左标识符对应的前缀,将匹配确定的前缀记录在该标识符对象中,然后将该标识符对象压入栈中,
若当前字符是右标识符,则把所述栈中栈顶的标识符对象出栈,并将该右标识符的符号和位置记录其中,
若当前字符不是左右标识符,则结束当前字符的标识符识别步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710806609.1/2.html,转载请声明来源钻瓜专利网。