CN117453321A - 业务实例的生成方法、装置、存储介质及电子装置 - Google Patents
业务实例的生成方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN117453321A CN117453321A CN202311310726.0A CN202311310726A CN117453321A CN 117453321 A CN117453321 A CN 117453321A CN 202311310726 A CN202311310726 A CN 202311310726A CN 117453321 A CN117453321 A CN 117453321A
- Authority
- CN
- China
- Prior art keywords
- tree
- node
- target
- nodes
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000006870 function Effects 0.000 claims description 106
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000013515 script Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010411 cooking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种业务实例的生成方法、装置、存储介质及电子装置,涉及智慧家庭技术领域,该业务实例的生成方法包括:确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;从目标对象的执行指令中获取待执行的目标业务代码;确定出执行目标业务代码所需的目标语法函数,并从预设抽象语法树的所有树节点中确定与目标语法函数一致的目标树节点;根据目标树节点的节点继承信息生成目标业务代码的业务实例,采用上述技术方案,解决了如何生成业务代码的业务实例的技术问题。
Description
技术领域
本申请涉及智慧家庭技术领域,具体而言,涉及一种业务实例的生成方法、装置、存储介质及电子装置。
背景技术
目前,在执行业务代码的过程中,由于业务代码中需要调用的实例类型有很多种,如果仅仅依靠预置实例的方法来实现调用,由于只能调用预置实例,而无法调用其他未被预置的实例,灵活性和适用范围都非常有限。如果另外从数据库中调用实例,则可能会由于参数类型不匹配导致实例无法正确执行,进而导致业务代码执行失败。
因此,相关技术中,存在如何生成业务代码的业务实例的技术问题。
针对相关技术中,如何生成业务代码的业务实例的技术问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种业务实例的生成方法、装置、存储介质及电子装置,以至少解决相关技术中,如何生成业务代码的业务实例的技术问题。
根据本申请实施例的一个实施例,提供了一种业务实例的生成方法,包括:确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;从目标对象的执行指令中获取待执行的目标业务代码;确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
在一个示例性实施例中,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;将所述第一继承信息确定为所述节点继承信息。
在一个示例性实施例中,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;将所述第二继承信息确定为所述节点继承信息。
在一个示例性实施例中,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息,以及从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;根据所述目标树节点的节点伴随信息从所述其他树节点中获取所述目标树节点的伴随树节点;其中,所述节点伴随信息是基于所述目标树节点与所述伴随树节点之间的非继承关系生成的;根据所述第一继承信息,所述第二继承信息和所述节点伴随信息生成所述目标业务代码的业务实例。
在一个示例性实施例中,根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例,包括:确定出所述节点继承信息对应的多个树节点;根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型;根据所述容器类型对应的容器代码生成所述目标业务代码的业务实例。
在一个示例性实施例中,根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型,包括:从所述多个树节点中确定出与所述目标树节点之间存在节点继承关系的第一树节点,以及从所述多个树节点中确定出与所述目标树节点之间存在节点伴随关系的第二树节点;根据所述第一树节点与所述目标树节点之间的节点继承顺序确定出所述函数类型的继承优先级;使用第一连接词将所述第一树节点声明的函数类型按照所述继承优先级进行拼接,得到第一字符串;使用第二连接词将所述第二树节点声明的函数类型与所述第一字符串进行拼接,得到第二字符串;将所述第二字符串确定为所述目标业务代码对应的容器类型。
在一个示例性实施例中,在根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型之前,所述方法还包括:确定出所述多个树节点所声明的函数类型对应的不同函数名称;针对每一函数名称,分别从预设代码库中获取所述每一函数名称对应的第一业务代码,得到所述不同函数名称对应的多个第一业务代码;根据所述多个第一业务代码生成第二业务代码,并将所述第二业务代码确定为所述目标业务代码。
根据本申请实施例的另一方面,还提供了一种业务实例的生成装置,包括:节点确定模块,用于确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;代码获取模块,用于从目标对象的执行指令中获取待执行的目标业务代码;函数确定模块,用于确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;实例生成模块,用于根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述业务实例的生成方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的业务实例的生成方法。
在本申请实施例中,通过确定出预设抽象语法树的树节点,以及从目标对象的执行指令中获取待执行的目标业务代码,可以在确定出执行所述目标业务代码所需的目标语法函数之后,从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点,继而根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例;采用上述技术方案,解决了如何生成业务代码的业务实例的技术问题,进而提高业务代码执行成功的概率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例的一种业务实例的生成方法的硬件环境示意图;
图2是根据本申请实施例的业务实例的生成方法的流程图;
图3是根据本申请实施例的业务实例的生成方法的流程示意图;
图4是根据本申请实施例的业务代码的生成方法的示意图;
图5是根据本申请实施例的一种业务实例的生成装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种业务实例的生成方法。该业务实例的生成方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(Intelligence House)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述业务实例的生成方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
在本实施例中提供了一种业务实例的生成方法,应用于上述终端设备,图2是根据本申请实施例的业务实例的生成方法的流程图,该流程包括如下步骤:
步骤S202,确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
其中,上述预设抽象语法树是由人工预设的,抽象语法树(Abstract SyntaxTree,AST)表示一种抽象语法结构,可以将程序或脚本等源代码转换为一系列嵌套节点组成的树形结构。抽象语法树的每个树节点都代表着一个代码元素(如变量、函数、循环等),并包含了父子节点信息等节点继承信息。
步骤S204,从目标对象的执行指令中获取待执行的目标业务代码;
步骤S206,确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
步骤S208,根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
通过上述步骤,确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;从目标对象的执行指令中获取待执行的目标业务代码;确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例,解决了相关技术中,如何生成业务代码的业务实例的技术问题,进而提高业务代码执行成功的概率。
在一个示例性实施例中,在执行上述步骤S208中根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例的技术方案之前,进一步提出了以下技术方案,具体实现步骤包括:步骤S11,从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S12,将所述第一继承信息确定为所述节点继承信息。
在一个示例性实施例中,进一步的,还提出了其他用来确定节点继承信息的过程,具体步骤如下:步骤S21,从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S22,将所述第二继承信息确定为所述节点继承信息。
在一个示例性实施例中,进一步提出了根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前的其他实现方案,方案步骤具体包括:步骤S31,从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息,以及从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S32,根据所述目标树节点的节点伴随信息从所述其他树节点中获取所述目标树节点的伴随树节点;其中,所述节点伴随信息是基于所述目标树节点与所述伴随树节点之间的非继承关系生成的;步骤S33,根据所述第一继承信息,所述第二继承信息和所述节点伴随信息生成所述目标业务代码的业务实例。
在一个示例性实施例中,进一步对步骤S208中根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例的实现过程进行说明,具体过程包括:确定出所述节点继承信息对应的多个树节点;根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型;根据所述容器类型对应的容器代码生成所述目标业务代码的业务实例。
在一个示例性实施例中,对于根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型的具体过程,可以包括以下步骤:步骤S41,从所述多个树节点中确定出与所述目标树节点之间存在节点继承关系的第一树节点,以及从所述多个树节点中确定出与所述目标树节点之间存在节点伴随关系的第二树节点;步骤S42,根据所述第一树节点与所述目标树节点之间的节点继承顺序确定出所述函数类型的继承优先级;步骤S43,使用第一连接词将所述第一树节点声明的函数类型按照所述继承优先级进行拼接,得到第一字符串;步骤S44,使用第二连接词将所述第二树节点声明的函数类型与所述第一字符串进行拼接,得到第二字符串;步骤S45,将所述第二字符串确定为所述目标业务代码对应的容器类型。
其中,则在节点继承信息中包含与上述目标树节点之间存在节点继承关系的函数类型A和与上述目标树节点之间存在节点伴随关系的函数类型B的情况下,生成的容器类型表示为InstanceClass_Extends_A_With_B。上述第一拼接词例如为“Extends”,上述第二拼接词例如为“With”。
其中,上述容器例如可以为“类”,则上述容器类型可以理解为“类”的名称。
在一个示例性实施例中,在实现根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型的方案之前,还可以通过以下过程确定目标业务代码:确定出所述多个树节点所声明的函数类型对应的不同函数名称;针对每一函数名称,分别从预设代码库中获取所述每一函数名称对应的第一业务代码,得到所述不同函数名称对应的多个第一业务代码;根据所述多个第一业务代码生成第二业务代码,并将所述第二业务代码确定为所述目标业务代码。
为了更好的理解上述业务实例的生成方法的过程,以下再结合可选实施例对上述业务实例的生成的实现方法流程进行说明,但不用于限定本申请实施例的技术方案。
在本实施例中提供了一种业务实例的生成方法,图3是根据本申请实施例的业务实例的生成方法的流程示意图,如图3所示,具体如下步骤:
步骤S301,从执行指令中获取待执行的业务代码;
步骤S302,从AST中获取节点继承信息;
其中,抽象语法树(Abstract Syntax Tree,AST)表示一种抽象语法结构,可以将程序或脚本等源代码转换为一系列嵌套节点组成的树形结构。抽象语法树的每个树节点都代表着一个代码元素(如变量、函数、循环等),并包含了父子节点信息等节点继承信息。
例如,使用flutter动态化这种实现动态逻辑更新的技术手段,可以将dart代码转换成ast,再根据ast生成dsl(Domain Specific Language,专用于特定领域的语言)json,dsl json包含以符号的形式存在的dart代码中的变量,方法等。
步骤S303,根据节点继承信息生成容器名称;
步骤S304,使用容器名称对应的容器代码生成业务实例。
通过上述步骤,可以基于业务代码所需的语法函数确定出生成哪些业务实例,对于业务代码所需的语法函数对应的节点继承信息,可以通过AST中用于声明函数类型的树节点的继承关系得到。根据节点继承信息中的函数类型生成容器类型后,使用容器类型对应的容器代码创建业务代码的业务实例。
在本实施例中提供了一种业务代码的生成方法,图4是根据本申请实施例的业务代码的生成方法的示意图,如图4所示,具体如下步骤:
步骤S401,发起编译请求;
步骤S402,确定出编译单元compilationunit;
步骤S403,将编译单元传输给访问单元;
步骤S404,遍历节点,获取节点继承关系和节点伴随关系;
步骤S405,使用节点继承关系的类和节点伴随关系的类(即上述容器)的名称拼接出新的类名;
步骤S406,为新的类名写入对应的业务代码。
在上述步骤中,可以通过发起编译请求编译业务库代码,将获取到的编译单元发送给访问单元,以使访问单元从AST中获取树节点之间的节点继承关系(即节点继承信息)。根据节点继承信息中的函数类型生成容器类型。
其中,函数类型可以由函数名称来表示,函数类型A可以表示为A类,函数类型B可以表示为B类,则在节点继承信息中包含与上述目标树节点之间存在节点继承关系的函数类型A和与上述目标树节点之间存在节点伴随关系的函数类型B的情况下,生成的容器类型表示为InstanceClass_Extends_A_With_B。
在一个实施例中,将“InstanceClass_Extends_A_With_B”设置为预设容器,生成的容器代码实例如下:
class InstanceClass_Extends_A_With_B extends A with B{
InstanceOop instanceOop;
生命周期func1(){
instanceOop.invoke(‘func1’);
}
生命周期func2(){
instanceOop.invoke(‘func2’);
}
...}。
其中,这个实例具备属性InstacneOop,InstanceOop可以表示运行时中的实例结构,可以执行业务代码中声明的方法,存储业务代码中声明的属性等。
对于生命周期方法,可以由系统自动调用。例如,生命周期func1()被调用,则生命周期func1的实现中就会调用InstanceOop的方法去执行正确的逻辑。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
图5是根据本申请实施例的一种业务实例的生成装置的结构框图;如图5所示,包括:
节点确定模块52,用于确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
其中,上述预设抽象语法树是由人工预设的,抽象语法树(Abstract SyntaxTree,AST)表示一种抽象语法结构,可以将程序或脚本等源代码转换为一系列嵌套节点组成的树形结构。抽象语法树的每个树节点都代表着一个代码元素(如变量、函数、循环等),并包含了父子节点信息等节点继承信息。
代码获取模块54,用于从目标对象的执行指令中获取待执行的目标业务代码;
函数确定模块56,用于确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
实例生成模块58,用于根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
通过上述装置,确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;从目标对象的执行指令中获取待执行的目标业务代码;确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例,解决了相关技术中,如何生成业务代码的业务实例的技术问题,进而提高业务代码执行成功的概率。
在一个示例性实施例中,上述业务实例的生成装置,还包括第一确定模块,用于实现以下步骤:步骤S11,从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S12,将所述第一继承信息确定为所述节点继承信息。
在一个示例性实施例中,进一步的,上述业务实例的生成装置,还包括第二确定模块,用于实现以下步骤:步骤S21,从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S22,将所述第二继承信息确定为所述节点继承信息。
在一个示例性实施例中,上述业务实例的生成装置,还包括第三确定模块,用于实现以下步骤:步骤S31,从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息,以及从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;步骤S32,根据所述目标树节点的节点伴随信息从所述其他树节点中获取所述目标树节点的伴随树节点;其中,所述节点伴随信息是基于所述目标树节点与所述伴随树节点之间的非继承关系生成的;步骤S33,根据所述第一继承信息,所述第二继承信息和所述节点伴随信息生成所述目标业务代码的业务实例。
在一个示例性实施例中,上述实例生成模块58,用于:进一步确定出所述节点继承信息对应的多个树节点;根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型;根据所述容器类型对应的容器代码生成所述目标业务代码的业务实例。
在一个示例性实施例中,上述实例生成模块58,还包括第一生成单元,用于执行以下步骤:步骤S41,从所述多个树节点中确定出与所述目标树节点之间存在节点继承关系的第一树节点,以及从所述多个树节点中确定出与所述目标树节点之间存在节点伴随关系的第二树节点;步骤S42,根据所述第一树节点与所述目标树节点之间的节点继承顺序确定出所述函数类型的继承优先级;步骤S43,使用第一连接词将所述第一树节点声明的函数类型按照所述继承优先级进行拼接,得到第一字符串;步骤S44,使用第二连接词将所述第二树节点声明的函数类型与所述第一字符串进行拼接,得到第二字符串;步骤S45,将所述第二字符串确定为所述目标业务代码对应的容器类型。
其中,则在节点继承信息中包含与上述目标树节点之间存在节点继承关系的函数类型A和与上述目标树节点之间存在节点伴随关系的函数类型B的情况下,生成的容器类型表示为InstanceClass_Extends_A_With_B。上述第一拼接词例如为“Extends”,上述第二拼接词例如为“With”。
其中,上述容器例如可以为“类”,则上述容器类型可以理解为“类”的名称。
在一个示例性实施例中,上述实例生成模块58,还包括第二生成单元,用于:在实现根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型的方案之前,通过以下过程确定目标业务代码:确定出所述多个树节点所声明的函数类型对应的不同函数名称;针对每一函数名称,分别从预设代码库中获取所述每一函数名称对应的第一业务代码,得到所述不同函数名称对应的多个第一业务代码;根据所述多个第一业务代码生成第二业务代码,并将所述第二业务代码确定为所述目标业务代码。
本申请的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
S2,从目标对象的执行指令中获取待执行的目标业务代码;
S3,确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
S4,根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
S2,从目标对象的执行指令中获取待执行的目标业务代码;
S3,确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
S4,根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种业务实例的生成方法,其特征在于,包括:
确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
从目标对象的执行指令中获取待执行的目标业务代码;
确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
2.根据权利要求1所述的业务实例的生成方法,其特征在于,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;
将所述第一继承信息确定为所述节点继承信息。
3.根据权利要求1所述的业务实例的生成方法,其特征在于,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;
将所述第二继承信息确定为所述节点继承信息。
4.根据权利要求1所述的业务实例的生成方法,其特征在于,在根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例之前,所述方法还包括:从所述预设抽象语法树的其他树节点中获取所述目标树节点的上一根节点,将所述上一根节点与所述目标树节点之间的节点信息确定为第一继承信息,以及从所述预设抽象语法树的其他树节点中获取所述目标树节点的所有叶节点,将所述所有叶节点与所述目标树节点之间的节点信息确定为第二继承信息;其中,所述其他树节点表示所述所有树节点中除了所述目标树节点之外的树节点;
根据所述目标树节点的节点伴随信息从所述其他树节点中获取所述目标树节点的伴随树节点;其中,所述节点伴随信息是基于所述目标树节点与所述伴随树节点之间的非继承关系生成的;
根据所述第一继承信息,所述第二继承信息和所述节点伴随信息生成所述目标业务代码的业务实例。
5.根据权利要求1所述的业务实例的生成方法,其特征在于,根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例,包括:
确定出所述节点继承信息对应的多个树节点;
根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型;
根据所述容器类型对应的容器代码生成所述目标业务代码的业务实例。
6.根据权利要求5所述的业务实例的生成方法,其特征在于,根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型,包括:
从所述多个树节点中确定出与所述目标树节点之间存在节点继承关系的第一树节点,以及从所述多个树节点中确定出与所述目标树节点之间存在节点伴随关系的第二树节点;
根据所述第一树节点与所述目标树节点之间的节点继承顺序确定出所述函数类型的继承优先级;
使用第一连接词将所述第一树节点声明的函数类型按照所述继承优先级进行拼接,得到第一字符串;
使用第二连接词将所述第二树节点声明的函数类型与所述第一字符串进行拼接,得到第二字符串;
将所述第二字符串确定为所述目标业务代码对应的容器类型。
7.根据权利要求5所述的业务实例的生成方法,其特征在于,在根据所述多个树节点所声明的函数类型生成所述目标业务代码对应的容器类型之前,所述方法还包括:
确定出所述多个树节点所声明的函数类型对应的不同函数名称;
针对每一函数名称,分别从预设代码库中获取所述每一函数名称对应的第一业务代码,得到所述不同函数名称对应的多个第一业务代码;
根据所述多个第一业务代码生成第二业务代码,并将所述第二业务代码确定为所述目标业务代码。
8.一种业务实例的生成装置,其特征在于,包括:
节点确定模块,用于确定出预设抽象语法树的树节点,其中,每一个树节点均对应于一种语法函数,用于声明语法函数的类型;
代码获取模块,用于从目标对象的执行指令中获取待执行的目标业务代码;函数确定模块,用于确定出执行所述目标业务代码所需的目标语法函数,并从所述预设抽象语法树的所有树节点中确定与所述目标语法函数一致的目标树节点;
实例生成模块,用于根据所述目标树节点的节点继承信息生成所述目标业务代码的业务实例。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311310726.0A CN117453321A (zh) | 2023-10-10 | 2023-10-10 | 业务实例的生成方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311310726.0A CN117453321A (zh) | 2023-10-10 | 2023-10-10 | 业务实例的生成方法、装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453321A true CN117453321A (zh) | 2024-01-26 |
Family
ID=89593840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311310726.0A Pending CN117453321A (zh) | 2023-10-10 | 2023-10-10 | 业务实例的生成方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453321A (zh) |
-
2023
- 2023-10-10 CN CN202311310726.0A patent/CN117453321A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9424112B1 (en) | Execution plan generator and execution engine for interfacing with application programming interfaces | |
CN114697150B (zh) | 命令的下发方法和装置、存储介质及电子装置 | |
Loke | Service-oriented device ecology workflows | |
CN116107975A (zh) | 设备的控制方法和装置、存储介质及电子装置 | |
CN117453321A (zh) | 业务实例的生成方法、装置、存储介质及电子装置 | |
CN114911535B (zh) | 应用程序组件配置方法、存储介质及电子装置 | |
CN115982493A (zh) | 页面跳转方法及装置、存储介质及电子装置 | |
CN116027937A (zh) | 待编辑组件的渲染方法和装置、存储介质及电子装置 | |
CN116450229A (zh) | 应用软件的预启动方法、装置、存储介质及电子装置 | |
CN115002014B (zh) | 确定测试结果的方法、装置、存储介质及电子装置 | |
CN116301767A (zh) | 接口文件的生成方法、装置、存储介质及电子装置 | |
CN116541012A (zh) | 基础参数的修改方法及装置、存储介质及电子装置 | |
CN116257300A (zh) | 目标组件的生成方法、装置、存储介质及电子装置 | |
CN116243944A (zh) | 应用界面更新方法、装置、存储介质及电子装置 | |
CN116226246A (zh) | Hive数据的获取方法、装置、存储介质及电子装置 | |
CN115296958B (zh) | 设备控制任务的分发方法、装置、存储介质及电子装置 | |
CN116112353A (zh) | 网关修改请求体的方法、控制装置及计算机可读存储介质 | |
CN116521157A (zh) | 项目集成方法和装置、存储介质及电子装置 | |
CN117573320A (zh) | 任务节点的执行方法、装置、存储介质及电子装置 | |
CN116521767A (zh) | 数据信息的确定方法和装置、存储介质及电子装置 | |
CN117573237A (zh) | 校验结果的确定方法、装置、存储介质及电子装置 | |
CN116366671A (zh) | 数据同步方法和装置、存储介质及电子装置 | |
CN117891490A (zh) | 一种组件的配置方法、系统、电子设备及存储介质 | |
CN118210512A (zh) | 软件开发套件打包方法、存储介质及电子装置 | |
CN116107551A (zh) | 应用数据的检测方法、装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |