函数编译方法、装置、介质以及电子设备制造方法及图纸

技术编号:39250564 阅读:9 留言:0更新日期:2023-10-30 12:02
本公开涉及一种函数编译方法、装置、介质以及电子设备,涉及计算机技术领域,该方法通过根据待编译的目标函数中的括号标志符,确定目标函数中的函数主体以及被函数主体调用的实参,并根据函数主体以及实参,将目标函数编译为抽象语法树,进而基于抽象语法树,获得目标函数对应的运算结果,可以将用户输入的公式文本字符串序列准确地编译为具有语义的抽象语法树,从而基于该具有语义的抽象语法树,计算得到目标函数的运算结果。基于本公开提供的函数编译方法,可以准确识别到用户输入的公式文本字符串序列的语义,并基于识别到的语义将目标函数编译为能够直接用于计算的抽象语法树,使得用户能够根据不同的需求来编写不同的公式。公式。公式。

【技术实现步骤摘要】
函数编译方法、装置、介质以及电子设备


[0001]本公开涉及计算机
,具体地,涉及一种函数编译方法、装置、介质以及电子设备。

技术介绍

[0002]随着公式计算函数被越来越广泛地应用,用户也能够主动创建自定义的函数逻辑。但是,针对用户自定义的函数逻辑,计算机在相关的语法规则下,往往不支持识别用户自定义的函数逻辑,导致函数编译失败。

技术实现思路

[0003]提供该
技术实现思路
部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该
技术实现思路
部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
[0004]第一方面,本公开提供一种函数编译方法,包括:
[0005]获取待编译的目标函数;
[0006]根据所述目标函数中的括号标志符,确定所述目标函数中的函数主体以及被所述函数主体调用的实参;
[0007]根据所述函数主体以及所述实参,将所述目标函数编译为抽象语法树,其中所述抽象语法树用于描述所述函数主体以及所述实参之间的参数调用关系;
[0008]基于所述抽象语法树,获得所述目标函数对应的运算结果。
[0009]第二方面,本公开提供一种函数编译装置,包括:
[0010]获取模块,被配置为获取待编译的目标函数;
[0011]确定模块,被配置为根据所述目标函数中的括号标志符,确定所述目标函数中的函数主体以及被所述函数主体调用的实参;
[0012]编译模块,被配置为根据所述函数主体以及所述实参,将所述目标函数编译为抽象语法树,其中所述抽象语法树用于描述所述函数主体以及所述实参之间的参数调用关系;
[0013]运算模块,被配置为基于所述抽象语法树,获得所述目标函数对应的运算结果。
[0014]第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面所述的方法的步骤。
[0015]第四方面,本公开提供一种电子设备,包括:
[0016]存储装置,其上存储有计算机程序;
[0017]处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面所述的方法的步骤。
[0018]基于上述技术方案,通过根据待编译的目标函数中的括号标志符,确定目标函数中的函数主体以及被函数主体调用的实参,并根据函数主体以及实参,将目标函数编译为
抽象语法树,进而基于抽象语法树,获得目标函数对应的运算结果,可以将用户输入的公式文本字符串序列准确地编译为具有语义的抽象语法树,从而基于该具有语义的抽象语法树,计算得到目标函数的运算结果。基于本公开提供的函数编译方法,可以在在线表格或在线数据库表格中准确识别到用户输入的公式文本字符串序列的语义,并基于识别到的语义将目标函数编译为能够直接用于计算的抽象语法树,使得用户能够根据不同的需求来编写不同的公式,提高了用户使用的自由度。
[0019]本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0020]结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
[0021]图1是根据一示例性实施例示出的一种函数编译方法的流程图。
[0022]图2是图1所示步骤130的详细流程图。
[0023]图3是根据一示例性实施例示出的抽象语法树的示意图。
[0024]图4是图1所示步骤120的详细流程图。
[0025]图5是根据一示例性实施例示出的目标函数的示意图。
[0026]图6是图1所示步骤140的详细流程图。
[0027]图7是根据一示例性实施例示出的作用域栈的示意图。
[0028]图8是根据一示例性实施例示出的一种函数编译装置的模块连接示意图。
[0029]图9是根据一示例性实施例示出的一种电子设备的示意图。
具体实施方式
[0030]下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0031]应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
[0032]本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
[0033]需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0034]需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0035]本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性
的目的,而并不是用于对这些消息或信息的范围进行限制。
[0036]本公开实施例提供的函数编译方法主要用于在线表格或者在线数据库表格中的公式计算函数。
[0037]图1是根据一示例性实施例示出的一种函数编译方法的流程图。如图1所示,本公开实施例提供一种函数编译方法,该方法可以通过电子设备执行,具体可以是通过一种函数编译装置来执行,该装置可以由软件和/或硬件的方式实现,配置于电子设备中。如图1所示,该方法可以包括以下步骤。
[0038]在步骤110中,获取待编译的目标函数。
[0039]这里,待编译的目标函数可以是指需要调用实参的函数,根据调用的实参的不同,目标函数的计算结果也不会不同。
[0040]例如,函数=Lambda(x,y,Lambda(y,x+y)(x))(123,456)需要调用123和456。又例如,函数=(LAMBDA(x,x+1))(1)需要调用“(1)”中的1。
[0041]应当理解的是,目标函数并不一定是用户创建的原始函数逻辑。例如,用户创建的原始函数逻辑可以是f(x,y)=x+y+1,该原始函数逻辑可以通过高阶函数Lambda函数表示,即将原始函数逻辑表示为“=Lambda(x,y,x+y+1)(x,y)”。相应地,“=Lambda(x,y,x+y+1)(x,y)”为目标函数。当然,若用户输入的公式为“=L本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数编译方法,其特征在于,包括:获取待编译的目标函数;根据所述目标函数中的括号标志符,确定所述目标函数中的函数主体以及被所述函数主体调用的实参;根据所述函数主体以及所述实参,将所述目标函数编译为抽象语法树,其中所述抽象语法树用于描述所述函数主体以及所述实参之间的参数调用关系;基于所述抽象语法树,获得所述目标函数对应的运算结果。2.根据权利要求1所述的方法,其特征在于,所述根据所述函数主体以及所述实参,将所述目标函数编译为抽象语法树,包括:针对所述目标函数,将所述目标函数编译为抽象语法树中的高阶函数节点,其中所述高阶函数节点表征通过高阶函数对所述函数主体以及所述实参进行操作,获得所述目标函数的运算结果;针对所述函数主体中的具名参数,将所述具名参数编译为抽象语法树中的具名参数节点,其中所述具名参数节点表征通过根据所述具名参数对应的名称确定所述具名参数调用的所述实参;根据所述高阶函数节点、所述具名参数节点以及所述函数主体与所述实参之间的参数调用关系,获得所述目标函数对应的抽象语法树。3.根据权利要求1所述的方法,其特征在于,所述根据所述目标函数中的括号标志符,确定所述目标函数中的函数主体以及被所述函数主体调用的实参,包括:对所述目标函数进行词素分析,获得包括多个词素的词素序列;在所述词素序列中确定用于表示函数调用的括号标志符;根据所述用于表示函数调用的括号标志符,确定所述目标函数中的函数主体以及被所述函数主体调用的实参。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述基于所述抽象语法树,获得所述目标函数对应的运算结果,包括:基于所述实参以及所述函数主体中的具名参数,构建参数映射字典,其中所述参数映射字典用于表征所述具名参数的参数名称与该参数名称对应的实参之间的映射关系;将所述参数映射字典写入在作用域栈中;基于所述抽象语法树包括的所述函数主体中的具名参数的参数名称,在所述作用域栈中查找得到该参数名称对应的目标实参;将所述抽象语法树中的所述具名参数转换为所述目标实参,获得转换后的抽象语法树;基于所述转换后的抽象语法树,获得所述目标函数对应的运算结果。5.根据权...

【专利技术属性】
技术研发人员:许锴霖
申请(专利权)人:北京字跳网络技术有限公司
类型:发明
国别省市:

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

1