[发明专利]一种基于二叉树的字符串表达式计算方法及装置在审

专利信息
申请号: 201811608927.8 申请日: 2018-12-27
公开(公告)号: CN109783702A 公开(公告)日: 2019-05-21
发明(设计)人: 高峰;王治华;金明辉;卢志洋;邹兴兵;薛斌 申请(专利权)人: 国网上海市电力公司;新华三技术有限公司
主分类号: G06F16/903 分类号: G06F16/903
代理公司: 北京卓岚智财知识产权代理事务所(特殊普通合伙) 11624 代理人: 郭智
地址: 200002 上海市浦*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 二叉树 计算方法及装置 字符串表达式 解析 计算机技术领域 表达式结果 表达式类型 输入字符串 文字字符串 语义 字段类型 字符前缀 操作符 字符串 装入
【说明书】:

发明公开了一种基于二叉树的字符串表达式计算方法及装置,属于计算机技术领域,其方法如下:获取输入字符串:例如“IP Type==192.168.1.1AND ProType==TCP”;解析字段类型:例如IP地址类型、IP协议类型;解析操作符:例如==符号、AND符号;获取字符前缀表达式;将字符串装入二叉树中;计算二叉树,获得表达式结果,本发明通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。

技术领域

本发明涉及计算机技术领域,更具体地说,涉及一种基于二叉树的字符串表达式计算方法及装置。

背景技术

前缀表达式:是一种没有括号的算术表达式,其将运算符写在前面,操作数写在后面。

二叉树:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

现有技术;互联网上的现有技术主要为通过字符串表达式求值,其操作的字符范围为数字以及数学符号,形如“(4+3*2)/2”的表达式。

现有技术的缺点主要是:

1、无法进行纯字符串的表达,此类表达一般都含有较大业务意义,例如“IP地址==192.168.1.1并且协议类型==TCP”。

2、只能对数字等简单类型做操作,无法进行自定义扩展类型的操作。

发明内容

1.要解决的技术问题

针对现有技术中存在的问题,本发明的目的在于提供一种基于二叉树的字符串表达式计算方法及装置,它通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。

2.技术方案

为解决上述问题,本发明采用如下的技术方案。

一种基于二叉树的字符串表达式计算方法及装置,所述方法如下:

S1、获取输入字符串;

S2、解析字段类型;

S3、解析操作符;

S4、获取字符前缀表达式;

S5、将字符串装入二叉树中;

S6、计算二叉树,获得表达式结果。

进一步的,上述方法通过java实现,具体步骤如下:

(A)抽象自定义类型;

(B)定义操作符类型;

(C)将字符串转换为二叉树;

(D)实现二叉树计算。

进一步的,所述步骤(A)中,定义抽象基类,包括如下接口:

(a)获取该类型支持的操作符接口;

(b)执行表达式接口;

(c)判断是否为此类型字段。

进一步的,所述步骤(B)中,定义操作符基类,包括如下接口

(a)计算两个值及操作符的执行结果,并返回;

(b)判断是否为此类型操作符。

进一步的,所述步骤(C)中,将字符串按(A)和(B)步骤解析后,判断出字符类型和操作符类型,根据前缀表达式得到二叉树:

(a)碰到操作数则把其值赋给相应的新申请的二叉树结点,地址压栈;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网上海市电力公司;新华三技术有限公司,未经国网上海市电力公司;新华三技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201811608927.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top