计算函数构建方法、计算引擎、电子设备及可读存储介质与流程

文档序号:34312935发布日期:2023-05-31 22:24阅读:41来源:国知局
计算函数构建方法、计算引擎、电子设备及可读存储介质与流程

本发明涉及计算机,具体涉及一种计算函数构建方法、计算引擎、电子设备及可读存储介质。


背景技术:

1、领域特定语言(domain-specific language,简称为dsl)是针对特定应用领域而设计的计算机语言,它使用约定的文法,表达专业人员的意图,辅助其在该领域中高效地解决问题。

2、在相关技术中,描述一种计算机语言,一般使用扩展巴科斯范式(extendedbackus-naur forms,简称为ebnf)。基于扩展巴科斯范式的传统的领域特定语言描述工具,如开源语法分析器(another tool of language recognition,简称为antlr),能够在一定程度上简化领域特定语言的设计。然而,传统的基于扩展巴科斯范式的计算机语言描述方法,以及现有的语言描述和解析工具(如antlr)还是存在问题的。例如,服务端安装的基于antlr的dsl应用,通常可以在运行时对输入的领域特定语言进行动态解释执行。

3、然而,上述动态解释执行的过程需要依赖于antlr的运行时。具体体现为依赖antlr生成的基于领域特定语言的框架。该框架的功能可以包括分词、语法解析、监听访问、以及提供执行接口等。动态解释执行为相应的dsl应用运行时配置领域特定语言提供了基础,有利于解释一些领域的特定的数据处理意图。但由于antlr运行时需要解释dsl语言,并需要通过监听器(listener)接口来执行计算逻辑,这需要很多额外的接口调用指令,并且需要使用框架的执行接口。因此该种方式的执行性能较差,例如在一些需要采用动态解释执行方式的场景下,服务端可能会对客户端传入的dsl相关配置包和数据的解释执行速度较慢,从而导致服务端响应时间较长,用户体验也因此下降。


技术实现思路

1、本技术提供了一种计算函数构建方法、计算引擎、电子设备及可读存储介质,其中的方法能够在电子设备首次解释执行相应dsl语句时解析该过程所使用的计算模板,并根据解析出的函数的值、操作符以及表达式等,构建出可以直接用于计算引擎执行相应dsl语句的计算函数。进而,当需要再次执行该dsl语句处理相应数据时,可以不再调用原本使用的计算函数对应的各种接口,而可以直接调用已构建的计算函数直接执行相应dsl语句,有利于提高dsl语句的执行效率,进而有利于提高电子设备及其运行的服务端的响应速率,也有利于节省电子设备上的计算资源。

2、第一方面,本技术提供了一种用于数据处理请求的计算函数构建方法,应用于电子设备,该方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一dsl语句所使用的第一计算模板,其中第一dsl语句为采用领域特定语言(dsl)描述对待处理数据的数据处理请求的语句;分析第一计算模板对应确定的第一计算流、以及识别第一计算流中的函数的值、操作符和表达式组成中的一项或多项,其中第一计算流用于确定第一计算模板执行计算的过程;根据函数的值创建第一实例,以及根据表达式组成创建第二实例;采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数;采用构建的至少一个计算函数执行第一dsl语句,并基于执行的结果确定对待处理数据的处理结果。

3、例如,上述电子设备可以是服务器或者云计算平台等,上述第一dsl语句可以是车险业务中用于计算保单保费的请求语句等,上述用于解释执行第一dsl语句的第一计算模板例如可以是基于antlr框架开发的模板,电子设备可以基于antlr框架提供的各种接口调用该第一计算模块。另外,上述在采用第一计算模板解释执行上述第一dsl语句的过程中识别出的函数的值,例如可以是取值函数、判断函数、赋值函数等的值,例如保险金额policy.suminsure以及利率policy.rate等可以通过取值函数实现取值。上述识别出的操作符例如可以包括“+”、“-”、“*”、“/”运算符等,上述识别出的表达式例如可以是premium=policy.suminsured*policy.rate等形式的算术表达式。在此不做枚举,亦不作限制。

4、在上述第一方面的一种可能的实现中,计算引擎识别到解释执行第一dsl语句的过程中使用的第一计算模板,包括:预先定义dsl监听器,并注册dsl监听器对dsl应用的监听,其中dsl应用为基于antlr框架实现的应用;监听dsl应用解释执行第一dsl语句的过程中所使用的第一计算模板。

5、即在构建用于执行上述第一dsl语句的计算函数之前,电子设备上的计算引擎可以预先定义用于监听dsl语句的解释执行过程的dsl监听器。可以理解,电子设备可以利用antlr框架提供的监听器监听到待解释执行的dsl语句,例如上述第一dsl语句。计算引擎预先定义的上述dsl监听器,可以在上述第一dsl语句执行的过程中监听到该过程中使用到的计算模板。

6、在上述第一方面的一种可能的实现中,第一计算模板为基于antlr框架预设的json文件,并且第一计算模板能够被dsl应用调用并用于解释执行第一dsl语句。

7、在上述第一方面的一种可能的实现中,根据函数的值创建第一实例,包括:预先定义预设的第一函数的属性,其中属性至少包括对第一函数的返回值描述和函数类型声明;基于第一函数的属性,为识别出的函数的值匹配对应的函数类型;采用匹配到的函数类型以及函数的值,创建对应的函数实例作为第一实例。

8、在上述第一方面的一种可能的实现中,第一函数存储在预先创建的数据栈中,并且根据函数的值创建第一实例包括:预先定义第一函数对应的实例的存取路径,其中存取路径指向数据栈;将创建的第一实例存入数据栈中。

9、在上述第一方面的一种可能的实现中,表达式组成包括算术表达式,并且根据表达式组成创建第二实例包括:识别第一计算流中的第一表达式,创建与第一表达式相对应的表达式实例作为第二实例,并且,将创建的第二实例存入数据栈中。

10、在上述第一方面的一种可能的实现中,操作符存储于先创建的操作符栈中,并且方法还包括:预先定义操作符的默认存取路径,其中存取路径指向操作符栈;将从第一计算流中识别出的操作符存入操作符栈中。

11、在上述第一方面的一种可能的实现中,dsl监听器包括对数据栈和操作符栈的引用,并且,采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数,包括:基于dsl监听器监听存入操作符栈的第一操作符,以及监听存入数据栈的第一实例、第二实例;读取监听到的第一操作符、第一实例以及第二实例,构建至少一个计算函数。

12、即该dsl监听器还可以监听用于存储函数实例或表达式实例的数据栈、以及存储有操作符的操作符栈。上述dsl监听器对数据栈和操作符栈的引用,也可以理解为注册监听的过程。进而,计算引擎便可以根据上述dsl监听器监听到的函数实例(即上述第一实例)、表达式实例(即上述第二实例)以及操作符等,构建用于执行上述第一dsl语句的计算函数。可以理解,所构建的计算函数可以是一个或者多个,各计算函数之间可以通过操作符或者赋值函数等方式建立联系,形成更高阶的计算函数,在此不做限制。

13、在上述第一方面的一种可能的实现中,采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数,包括:读取监听到的第一实例,创建与第一实例对应的函数类型相同的第二函数,并使第二函数的返回值与函数的值相同,其中构建的至少一个计算函数包括第二函数;读取监听到的第二实例,创建于第二实例对应的第一表达式结构相同的第二表达式,其中第二表达式中的操作符包括监听到的存入操作符栈的第一操作符,并且第二表达式中的变量包括创建的第二函数的返回值。

14、第二方面,本技术提供了一种计算引擎,计算引擎包括:解析模块,用于识别解释执行第一dsl语句的过程中使用的第一计算模板,并将识别的结果发送给计算流分析模块;计算流分析模块,用于分析第一计算模板对应确定的第一计算流、以及第一计算流中包括的函数的值、操作符和表达式组成,并将分析的结果发送给计算模板构建模块;以及用于根据分析出的函数的值创建第一实例、根据分析出的表达式组成创建第二实例;并且,计算模板构建模块,用于调用第一实例、第二实例以及分析得到的操作符,构建用于执行第一计算流的至少一个计算函数。

15、在上述第二方面的一种可能的实现中,计算引擎包括预先定义的dsl监听器,并且,解析模块根据dsl监听器对dsl应用解释执行第一dsl语句的过程的监听结果,识别第一计算模板;计算模板构建模块根据dsl监听器对数据栈以及操作符栈的监听结果,调用存入数据栈的第一实例、第二实例以及存入操作符栈的第一操作符,构建至少一个计算函数。

16、在上述第二方面的一种可能的实现中,计算引擎还包括:数据处理模块,用于根据客户端传入的数据处理请求,确定用于描述数据处理请求的第一dsl语句。

17、第三方面,本技术提供了一种电子设备,包括:上述第二方面以及上述第二方面的各种可能的实现中提供的计算引擎,其中,计算引擎用于上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法,构建用于执行第一dsl语句对应描述的数据处理请求的至少一个计算函数。

18、第四方面,本技术提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得设备执行上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法。

19、第五方面,本技术提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时,使计算机执行上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1