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

技术编号:37705156 阅读:9 留言:0更新日期:2023-06-01 23:53
本申请涉及计算机术领域,具体涉及一种计算函数构建方法、计算引擎、电子设备及可读存储介质。该方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板;分析第一计算模板对应确定的第一计算流、以及识别第一计算流中的函数的值、操作符和表达式组成中的一项或多项;采用根据函数的值构建的第一实例、根据表达式组成创建的第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数;采用构建的至少一个计算函数执行第一DSL语句,并基于执行的结果确定对待处理数据的处理结果。如此能够减少接口调用,利于提高DSL语句的执行效率和电子设备的响应速率。DSL语句的执行效率和电子设备的响应速率。DSL语句的执行效率和电子设备的响应速率。

【技术实现步骤摘要】
计算函数构建方法、计算引擎、电子设备及可读存储介质


[0001]本专利技术涉及计算机
,具体涉及一种计算函数构建方法、计算引擎、电子设备及可读存储介质。

技术介绍

[0002]领域特定语言(Domain

Specific Language,简称为DSL)是针对特定应用领域而设计的计算机语言,它使用约定的文法,表达专业人员的意图,辅助其在该领域中高效地解决问题。
[0003]在相关技术中,描述一种计算机语言,一般使用扩展巴科斯范式(Extend edBackus

Naur Forms,简称为EBNF)。基于扩展巴科斯范式的传统的领域特定语言描述工具,如开源语法分析器(Another Tool of Language Recognition,简称为ANTLR),能够在一定程度上简化领域特定语言的设计。然而,传统的基于扩展巴科斯范式的计算机语言描述方法,以及现有的语言描述和解析工具(如ANTLR)还是存在问题的。例如,服务端安装的基于ANTLR的DSL应用,通常可以在运行时对输入的领域特定语言进行动态解释执行。
[0004]然而,上述动态解释执行的过程需要依赖于ANTLR的运行时。具体体现为依赖ANTLR生成的基于领域特定语言的框架。该框架的功能可以包括分词、语法解析、监听访问、以及提供执行接口等。动态解释执行为相应的DSL应用运行时配置领域特定语言提供了基础,有利于解释一些领域的特定的数据处理意图。但由于ANTLR运行时需要解释DSL语言,并需要通过监听器(listener)接口来执行计算逻辑,这需要很多额外的接口调用指令,并且需要使用框架的执行接口。因此该种方式的执行性能较差,例如在一些需要采用动态解释执行方式的场景下,服务端可能会对客户端传入的DSL相关配置包和数据的解释执行速度较慢,从而导致服务端响应时间较长,用户体验也因此下降。

技术实现思路

[0005]本申请提供了一种计算函数构建方法、计算引擎、电子设备及可读存储介质,其中的方法能够在电子设备首次解释执行相应DSL语句时解析该过程所使用的计算模板,并根据解析出的函数的值、操作符以及表达式等,构建出可以直接用于计算引擎执行相应DSL语句的计算函数。进而,当需要再次执行该DSL语句处理相应数据时,可以不再调用原本使用的计算函数对应的各种接口,而可以直接调用已构建的计算函数直接执行相应DSL语句,有利于提高DSL语句的执行效率,进而有利于提高电子设备及其运行的服务端的响应速率,也有利于节省电子设备上的计算资源。
[0006]第一方面,本申请提供了一种用于数据处理请求的计算函数构建方法,应用于电子设备,该方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板,其中第一DSL语句为采用领域特定语言(DSL)描述对待处理数据的数据处理请求的语句;分析第一计算模板对应确定的第一计算流、以及识别第一计算流中的函数的值、操作符和表达式组成中的一项或多项,其中第一计算流用于
确定第一计算模板执行计算的过程;根据函数的值创建第一实例,以及根据表达式组成创建第二实例;采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数;采用构建的至少一个计算函数执行第一DSL语句,并基于执行的结果确定对待处理数据的处理结果。
[0007]例如,上述电子设备可以是服务器或者云计算平台等,上述第一DSL语句可以是车险业务中用于计算保单保费的请求语句等,上述用于解释执行第一DSL语句的第一计算模板例如可以是基于ANTLR框架开发的模板,电子设备可以基于ANTLR框架提供的各种接口调用该第一计算模块。另外,上述在采用第一计算模板解释执行上述第一DSL语句的过程中识别出的函数的值,例如可以是取值函数、判断函数、赋值函数等的值,例如保险金额Policy.Suminsure以及利率Policy.Rate等可以通过取值函数实现取值。上述识别出的操作符例如可以包括“+”、
“‑”
、“*”、“/”运算符等,上述识别出的表达式例如可以是Premium=Policy.Suminsured*Policy.Rate等形式的算术表达式。在此不做枚举,亦不作限制。
[0008]在上述第一方面的一种可能的实现中,计算引擎识别到解释执行第一DSL语句的过程中使用的第一计算模板,包括:预先定义DSL监听器,并注册DSL监听器对DSL应用的监听,其中DSL应用为基于ANTLR框架实现的应用;监听DSL应用解释执行第一DSL语句的过程中所使用的第一计算模板。
[0009]即在构建用于执行上述第一DSL语句的计算函数之前,电子设备上的计算引擎可以预先定义用于监听DSL语句的解释执行过程的DSL监听器。可以理解,电子设备可以利用ANTLR框架提供的监听器监听到待解释执行的DSL语句,例如上述第一DSL语句。计算引擎预先定义的上述DSL监听器,可以在上述第一DSL语句执行的过程中监听到该过程中使用到的计算模板。
[0010]在上述第一方面的一种可能的实现中,第一计算模板为基于ANTLR框架预设的json文件,并且第一计算模板能够被DSL应用调用并用于解释执行第一DSL语句。
[0011]在上述第一方面的一种可能的实现中,根据函数的值创建第一实例,包括:预先定义预设的第一函数的属性,其中属性至少包括对第一函数的返回值描述和函数类型声明;基于第一函数的属性,为识别出的函数的值匹配对应的函数类型;采用匹配到的函数类型以及函数的值,创建对应的函数实例作为第一实例。
[0012]在上述第一方面的一种可能的实现中,第一函数存储在预先创建的数据栈中,并且根据函数的值创建第一实例包括:预先定义第一函数对应的实例的存取路径,其中存取路径指向数据栈;将创建的第一实例存入数据栈中。
[0013]在上述第一方面的一种可能的实现中,表达式组成包括算术表达式,并且根据表达式组成创建第二实例包括:识别第一计算流中的第一表达式,创建与第一表达式相对应的表达式实例作为第二实例,并且,将创建的第二实例存入数据栈中。
[0014]在上述第一方面的一种可能的实现中,操作符存储于先创建的操作符栈中,并且方法还包括:预先定义操作符的默认存取路径,其中存取路径指向操作符栈;将从第一计算流中识别出的操作符存入操作符栈中。
[0015]在上述第一方面的一种可能的实现中,DSL监听器包括对数据栈和操作符栈的引用,并且,采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数,包括:基于DSL监听器监听存入操作符栈的第一操作符,以及监听存入数据
栈的第一实例、第二实例;读取监听到的第一操作符、第一实例以及第二实例,构建至少一个计算函数。
[0016]即该DSL监听器还可以监听用于存储函数实例或表达式实例的数据栈、以及存储有操作符的操作符栈。上述DSL监听器对数据栈和操作符栈的引用,也可以理解为注册监听的过程。进而,计算引擎便可以根据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于数据处理请求的计算函数构建方法,应用于电子设备,其特征在于,所述方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板,其中所述第一DSL语句为采用领域特定语言(DSL)描述对待处理数据的数据处理请求的语句;分析所述第一计算模板对应确定的第一计算流、以及识别所述第一计算流中的函数的值、操作符和表达式组成中的一项或多项,其中所述第一计算流用于确定所述第一计算模板执行计算的过程;根据所述函数的值创建第一实例,以及根据所述表达式组成创建第二实例;采用所述第一实例、第二实例以及识别到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数;采用构建的所述至少一个计算函数执行所述第一DSL语句,并基于所述执行的结果确定对所述待处理数据的处理结果。2.根据权利要求1所述的方法,其特征在于,所述计算引擎识别到解释执行第一DSL语句的过程中使用的第一计算模板,包括:预先定义DSL监听器,并注册所述DSL监听器对DSL应用的监听,其中所述DSL应用为基于ANTLR框架实现的应用;监听所述DSL应用解释执行第一DSL语句的过程中所使用的第一计算模板。3.根据权利要求2所述的方法,其特征在于,所述第一计算模板为基于ANTLR框架预设的json文件,并且所述第一计算模板能够被所述DSL应用调用并用于解释执行所述第一DSL语句。4.根据权利要求2所述的方法,其特征在于,所述根据所述函数的值创建第一实例,包括:预先定义预设的第一函数的属性,其中所述属性至少包括对所述第一函数的返回值描述和函数类型声明;基于所述第一函数的属性,为识别出的所述函数的值匹配对应的函数类型;采用匹配到的函数类型以及所述函数的值,创建对应的函数实例作为所述第一实例。5.根据权利要求4所述的方法,其特征在于,所述第一函数存储在预先创建的数据栈中,并且所述根据所述函数的值创建第一实例包括:预先定义所述第一函数对应的实例的存取路径,其中所述存取路径指向所述数据栈;将创建的所述第一实例存入所述数据栈中。6.根据权利要求5所述的方法,其特征在于,所述表达式组成包括算术表达式,并且所述根据所述表达式组成创建第二实例包括:识别所述第一计算流中的第一表达式,创建与所述第一表达式相对应的表达式实例作为所述第二实例,并且,将创建的所述第二实例存入所述数据栈中。7.根据权利要求5所述的方法,其特征在于,所述操作符存储于先创建的操作符栈中,并且所述方法还包括:预先定义所述操作符的默认存取路径,其中所述存取路径指向所述操作符栈;
将从所述第一计算流中识别出的操作符存入所述操作符栈中。8.根据权利要求2至7中任一项所述的方法,其特征在于,所述DSL监听器包括对所述数据栈和所述操作符栈的引用,并且,所述采用所述第一实例、第二实例以及识别到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数,包...

【专利技术属性】
技术研发人员:倪健邢志辉莫元武
申请(专利权)人:易保网络技术上海有限公司
类型:发明
国别省市:

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

1