一种表达式执行方法和装置制造方法

文档序号:6517792阅读:133来源:国知局
一种表达式执行方法和装置制造方法
【专利摘要】本申请提供了一种表达式执行方法,包括:获取表达式;解析所述表达式获取运算逻辑;根据所述运算逻辑调用添加了数据库规则的执行引擎。本申请还提供了对应的装置。本发明实施例通过调用添加了数据库规则的执行引擎,实现了表达式关于数据库中null值的运算。
【专利说明】 一种表达式执行方法和装置

【技术领域】
[0001]本申请涉及数据库管理【技术领域】,特别是涉及一种表达式执行方法和装置。

【背景技术】
[0002]在数据库的表达式执行过程中,一般的表达式求值对null值当成空指针,从而抛出异常,但是数据库中,null作为一个合法的运算,并遵守数据库中的一套运算规则,但是某些数据库产品中对数据库中数据进行变换的时候,就必须遵守数据库的一套规则,但是目前的技术中并不能实现按照数据库运算规则的表达式执行方式。


【发明内容】

[0003]本申请所要解决的技术问题是提供一种可以对数据库中null值进行运算的表达式执行方法和装置。
[0004]为了解决上述问题,本申请公开了一种表达式执行方法,包括:
获取表达式;
解析所述表达式获取运算逻辑;
根据所述运算逻辑调用添加了数据库规则的执行引擎。
[0005]进一步,所述获取表达式包括:
获取用户输入的表达式。
[0006]进一步,所述解析表达式获取运算逻辑包括:
采用自底向上的解析方法解析所述表达式获取运算逻辑。
[0007]进一步,所述根据运算逻辑调用添加了数据库规则的执行引擎包括:
根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
[0008]本申请还提供了一种表达式执行装置,包括:
获取模块,用于获取表达式;
解析模块,用于解析所述表达式获取运算逻辑;
调用模块,用于根据所述运算逻辑调用添加了数据库规则的执行引擎。
[0009]进一步,所述获取模块还用于:
获取用户输入的表达式。
[0010]进一步,所述解析模块还用于:
采用自底向上的解析装置解析所述表达式获取运算逻辑。
[0011]进一步,所述调用模块还用于:
根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
[0012]与现有技术相比,本申请包括以下优点:通过调用添加了数据库规则的执行引擎,实现了表达式关于数据库中null值的运算。
[0013]

【专利附图】

【附图说明】
图1是本发明一种表达式执行方法一实施例的流程图;
图2是本发明一种表达式执行装置一实施例的结构示意图。

【具体实施方式】
[0014]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0015]参照图1,示出了本申请一种表达式执行方法一实施例的流程图;
数据库中,null作为一个合法的运算,并遵守数据库中的一套运算规则,但是某些数据库产品中对数据库中数据进行变换的时候,就必须遵守数据库的一套规则,从而需要这套对null进行特殊处理的一套表达式求值;本发明实施例创新的实现了适合数据库的一套求值规则,使得该数据库产品的数据处理更加自然,使得处理结构忠于数据库实际语意,产品得到极大完善。本发明实施例提供的一种表达式执行方法,包括:
步骤S101、获取表达式;
进一步,所述获取表达式包括:
获取用户输入的表达式。
[0016]所述表达式可以是用户输入的符合数据库规则的字符串命令。
[0017]步骤S102、解析所述表达式获取运算逻辑;
进一步,所述解析表达式获取运算逻辑包括:
采用自底向上的解析方法解析所述表达式获取运算逻辑。
[0018]步骤S102也可以通过手写分析器,总体上采用算符优先的解析表达式,局部采用LL(I)分析,最终形成一颗抽象语法树(AST),并进行语法校验。
[0019]步骤S103、根据所述运算逻辑调用添加了数据库规则的执行引擎。
[0020]进一步,所述根据运算逻辑调用添加了数据库规则的执行引擎包括:
根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
[0021]遍历AST,采用访问者设计模式,实现实体和操作分离;
首先进行类型检查,完成类型合法性,隐式转换等工作;
其次将AST变成执行指令序列,方便执行引擎读取指令,执行运算。
[0022]指令序列是有内部定义的符合数据库运算规则的抽象描述,它将运算规则描述成符合数据库需求的形式,使得执行引擎能够执行处正确的结果。
[0023]本发明实施例通过通过调用添加了数据库规则的执行引擎,实现了表达式关于数据库中null值的运算。
[0024]参照图2为本发明一种表达式执行装置一实施例的结构示意图。
[0025]本发明实施例提供的一种表达式执行装置,包括:
获取模块21,用于获取表达式;
解析模块22,用于解析所述表达式获取运算逻辑;
调用模块23,用于根据所述运算逻辑调用添加了数据库规则的执行引擎。
[0026]进一步,所述获取模块21还用于: 获取用户输入的表达式。
[0027]进一步,所述解析模块22还用于:
采用自底向上的解析装置解析所述表达式获取运算逻辑。
[0028]进一步,所述调用模块23还用于:
根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
[0029]解析模块22也可以通过手写分析器,总体上采用算符优先的解析表达式,局部采用LL(I)分析,最终形成一颗抽象语法树(AST),并进行语法校验。
[0030]调用模块23调用的执行引擎可以遍历AST,采用访问者设计模式,实现实体和操作分离;首先进行类型检查,完成类型合法性,隐式转换等工作;其次将AST变成执行指令序列,方便执行引擎读取指令,执行运算。
[0031]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0032]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0033]以上对本申请所提供的一种表达式执行方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种表达式执行方法,其特征在于,包括: 获取表达式; 解析所述表达式获取运算逻辑; 根据所述运算逻辑调用添加了数据库规则的执行引擎。
2.根据权利要求1所述的方法,其特征在于,所述获取表达式包括: 获取用户输入的表达式。
3.根据权利要求1或2所述的方法,其特征在于,所述解析表达式获取运算逻辑包括: 采用自底向上的解析方法解析所述表达式获取运算逻辑。
4.根据权利要求2所述的方法,其特征在于,所述根据运算逻辑调用添加了数据库规则的执行引擎包括: 根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
5.一种表达式执行装置,其特征在于,包括: 获取模块,用于获取表达式; 解析模块,用于解析所述表达式获取运算逻辑; 调用模块,用于根据所述运算逻辑调用添加了数据库规则的执行引擎。
6.根据权利要求5所述的装置,其特征在于,所述获取模块还用于: 获取用户输入的表达式。
7.根据权利要求5或6所述的装置,其特征在于,所述解析模块还用于: 采用自底向上的解析装置解析所述表达式获取运算逻辑。
8.根据权利要求6所述的装置,其特征在于,所述调用模块还用于: 根据运算逻辑调用添加了数据库规则的执行引擎,所述数据库规则至少包含数据库的null运算规则。
【文档编号】G06F17/30GK104252509SQ201310538489
【公开日】2014年12月31日 申请日期:2013年11月5日 优先权日:2013年11月5日
【发明者】叶东, 贾西贝 申请人:深圳市华傲数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1