脚本引擎系统和计算机装置制造方法及图纸

技术编号:36757392 阅读:11 留言:0更新日期:2023-03-04 10:49
本发明专利技术提出了一种脚本引擎系统和计算机装置。其中,脚本引擎系统包括:语法解析层,语法解析层用于对数据的词法和语法的解析;计算执行层,计算执行层用于实现对数据的逻辑运行、函数定义和作用域的隔离;优化扩展层,优化扩展层用于实现自定义扩展函数、解析数据树缓存和作用域的优化。存和作用域的优化。存和作用域的优化。

【技术实现步骤摘要】
脚本引擎系统和计算机装置


[0001]本专利技术涉及计算机
,具体而言,涉及一种脚本引擎系统和一种计算机装置。

技术介绍

[0002]现阶段在财务领域,针对不同的复杂结构原始单据,在进行事项转换时需要针对复杂的数据结构进行转换、计算,某些复杂场景下还需要多语句执行。在税务领域,则需要对纳税申报的报表取数场景下,针对不同数据源进行并行取数的处理优化。在其他领域场景下,也需要支持自定义取数或查询函数的扩展能力支持。本脚本引擎系统旨在综合财务、税务及其他领域的公式、脚本使用场景下,结合相关的脚本语言特点,提供一种统一、灵活、可自适应扩展的脚本引擎系统。

技术实现思路

[0003]本专利技术旨在至少解决相关技术或相关技术中存在的技术问题之一。
[0004]为此,本专利技术的第一个方面提出了一种脚本引擎系统。
[0005]本专利技术的第二个方面提出了一种计算机装置。
[0006]有鉴于此,根据本专利技术的第一个方面,提出了一种脚本引擎系统,包括:语法解析层,语法解析层用于对数据的词法和语法的解析;计算执行层,计算执行层用于实现对数据的逻辑运行、函数定义和作用域的隔离;优化扩展层,优化扩展层用于实现自定义扩展函数、解析数据树缓存和作用域的优化。
[0007]本专利技术提供的脚本引擎系统,主要是面向于数据处理领域,具体包括语法解析层、计算执行层以及优化扩展层。其中,语法解析层用于对数据的词法和语法的解析,将不同格式的数据解析成符合本脚本引擎系统的词法结构和语法结构的解析数据树,从而供计算执行层工作。计算执行层用于实现对数据的逻辑运行、函数定义及作用域隔离等,通过设置计算执行层进而执行相关的公式运算。优化扩展层用于实现自定义扩展函数、解析数据树缓存和作用域的优化,通过设置优化扩展层使得用户可以通过工厂方法模式为不同场景下的公式使用提供自定义优化。本专利技术通过设置语法解析层和计算执行层可以很好的对复杂的数据结构进行有效的计算、处理。另外基于优化扩展层进行灵活的可扩展结构设计,相较于相关技术来说也具有更大的优势。
[0008]根据本专利技术的上述脚本引擎系统,还可以具有以下技术特征:
[0009]在上述技术方案中,语法解析层具体用于:对具有轻量级数据交换格式的数据、函数、匿名函数和中文变量进行语法解析,生成符合脚本引擎系统的语法结构的解析数据树。
[0010]在该技术方案中,本专利技术所提供的脚本引擎系统相比于相关的表达式引擎(spel表达式引擎)或相关的脚本引擎(groovy脚本引擎),本脚本引擎系统更面向于数据处理领域。因此在设计时,语法解析层原生支持了对具有轻量级数据交换格式的数据(json数据)的语法支持。同时也有类似于groovy脚本的函数支持,匿名函数(lambda表达式)的支持及
中文变量支持等。通过对json数据、运行时的函数、lambda表达式以及中午变量进行语法解析,从而将其转换为符合本脚本引擎系统的语法结构的解析数据树。其中,对于json数据来说,任何符合语法格式的json数据,都可以在本脚本引擎系统当中原生支持。具体地,通过在语法中添加定义,从而直接原生支持了json格式的数据结构。此外还可以在json结构中嵌套变量引用,将表达式中的变量的值进行替换,从而生成符合语法结构的json数据。可见,本脚本引擎系统基于原生的json数据支持,从而可以支持丰富的使用场景。本脚本引擎系统通过对多种语法的原生支持,从而相比于groovy脚本引擎或spel表达式引擎,在语法支持的表达能力上得到了更大的增强。
[0011]在上述任一技术方案中,计算执行层具体用于:支持基本运算的执行、支持具有轻量级数据交换格式的数据的读写、支持函数和匿名函数的执行以及函数和匿名函数的延迟执行。
[0012]在该技术方案中,计算执行层主要包含基本运算支持,json数据的读写支持,以及函数和lambda表达式执行、函数和lambda表达式延迟执行的支持等。通过支持多种运算的执行,从而使得脚本引擎系统能够对不同的公式计算进行执行。
[0013]在上述任一技术方案中,基本运算具体包括:四则运算、布尔运算和向量运算。
[0014]在该技术方案中,计算执行层中的支持的基本运算,可以包括四则运算,布尔运算和向量运算等基本运算。本脚本引擎系统通过支持向量运算从而相比于groovy脚本引擎或spel表达式引擎,具有更大的优势。
[0015]在上述任一技术方案中,计算执行层支持基本运算执行的具体过程包括:根据基本运算生成解析数据树;按解析数据树的层次分别执行计算。
[0016]在该技术方案中,计算执行层支持基本运算执行的具体过程包括:语法解析层根据基本运算的表达式将基本运算解析成符合脚本引擎系统的语法结构的解析数据树,进而计算执行层安装解析数据树中的层次分别执行计算,从而实现了计算执行层对基本运算执行的支持。
[0017]在上述任一计算方案中,计算执行层支持具有轻量级数据交互格式的数据的读写的具体过程包括:通过多次的范围提取对具有轻量级数据交互格式的数据进行读写。
[0018]在该技术方案中,由于脚本引擎系统主要使用场景是数据处理方面,因此对json数据原生提供了丰富的读写支持。计算执行层支撑具有轻量级数据交互格式的数据(json数据)的读写的具体过程中包括:通过多次的范围提取对json数据进行读写。具体地,由于脚本引擎系统支撑范围提取,因此可通过对json数据执行第一次大范围的提取,提取出json数据中的部分数据,进而对第一次提取出的部分数据执行第二次范围提取,从而得到缩小范围的小部分数据,进而对小部分数据执行第三次范围提取,从而得到更小部分的数据,如此下去,直至得到所要的数据。由此可见,在针对复杂的json数据时,脚本引擎系统可以通过简单的表达式轻松的实现json数据的读写。
[0019]在上述任一技术方案中,计算执行层支持函数和匿名函数的延迟执行的具体过程包括:根据函数和匿名函数生成对应的解析数据树;根据所述解析数据树,分别对函数和匿名函数调用的各个参数数据进行封装;根据执行时所使用到的参数数据,调用封装后的参数数据执行计算。
[0020]在该技术方案中,脚本引擎系统原生支持函数及lambda表达式的语法执行。同时
相比于groovy脚本,还支持了函数及lambda表达式的延迟执行。其中延迟执行的具体过程包括:首先进行语法解析,通过语法解析层根据函数和lambda表达式解析成对应的符合脚本引擎系统的语法结构的解析数据树形式。其次,对参数进行生产(Supplier)化封装。在形成解析数据树后,分别对函数和lambda表达式调用的各个参数,封装为Supplier,从而基于计算机编程语言(Java)的原生支持,可以实现参数的延迟计算功能。最后,在函数和lambda表达式执行计算时,根据实际使用到的参数数据,调用封装后的参数数据按照表达式执行计算。通过支持函数及lambda表达式的延迟执行,可以在保证解析数据树的不同分支短路执行的基础上,节约计算资源提升效率,也更本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种脚本引擎系统,其特征在于,包括:语法解析层,所述语法解析层用于对数据的词法和语法的解析;计算执行层,所述计算执行层用于实现对数据的逻辑运行、函数定义和作用域的隔离;优化扩展层,所述优化扩展层用于实现自定义扩展函数、解析数据树缓存和所述作用域的优化。2.根据权利要求1所述的脚本引擎系统,其特征在于,所述语法解析层具体用于:对具有轻量级数据交换格式的所述数据、所述函数、匿名函数和中文变量进行语法解析,生成符合所述脚本引擎系统的语法结构的解析数据树。3.根据权利要求2所述的脚本引擎系统,其特征在于,所述计算执行层具体用于:支持基本运算的执行、支持具有所述轻量级数据交换格式的所述数据的读写、支持所述函数和所述匿名函数的执行以及所述函数和所述匿名函数的延迟执行。4.根据权利要求3所述的脚本引擎系统,其特征在于,所述基本运算具体包括:四则运算、布尔运算和向量运算。5.根据权利要求2至4中任一项所述的脚本引擎系统,其特征在于,所述计算执行层支持基本运算执行的具体过程包括:根据所述基本运算生成所述解析数据树;按所述解析数据树的层次分别执行计算。6.根据权利要求3所述的脚本...

【专利技术属性】
技术研发人员:刘强张诚
申请(专利权)人:用友网络科技股份有限公司
类型:发明
国别省市:

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

1