CN114741085A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114741085A CN114741085A CN202210278198.4A CN202210278198A CN114741085A CN 114741085 A CN114741085 A CN 114741085A CN 202210278198 A CN202210278198 A CN 202210278198A CN 114741085 A CN114741085 A CN 114741085A
- Authority
- CN
- China
- Prior art keywords
- target
- program code
- parameter
- abstract syntax
- syntax tree
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、设备及存储介质。数据处理方法包括:获取源程序代码对应的初始抽象语法树;所述源程序代码中包含参数引用关系;在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;对所述替换后抽象语法树进行代码转换,得到替换后程序代码并运行。本申请实施例可以提升参数化计算的效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
在很多应用场景下都会涉及到参数化计算,参数化计算是指根据某一个或者某几个参数的值,采用一定的公式进行计算,从而得到计算结果的过程。
参数化计算过程通常是通过运行对应程序代码得到。相关技术中,程序代码通常是基于参数引用实现的,具体运行过程为:先一并获取该程序代码中所有被引用参数的参数值,之后,再将具体参数值带入参数引用位置,以按照代码中定义的各参数之间的逻辑关系(公式)进行计算,从而得到最终的参数化结果。
代码中用于进行参数化计算的参数,其参数值通常又需要依赖其他的参数进行一定的运算之后才能得到;并且,一些情况下,由于不同逻辑关系的限定,并非所有的参数取值都会对计算结果产生影响,或者说,并非所有的参数最终都会参与计算。例如,图1为相关技术中用于进行参数化计算的示例性程序代码,参见图1中的左侧部分,该程序代码由逻辑关系和参数两部分组成,a、b、c以及d均为其中的参数,按照相关技术的处理方式,需要将a、b、c以及d这4个参数的参数值一并获取,形成完整的程序代码(参见图1中的右侧部分)并运行,才能得到参数化计算结果。但是,分析其逻辑关系可知:当a的值小于或者等于10时,则无论b、c以及d如何取值,都不会影响代码运行结果(结果均为0)。而上述相关技术的参数化计算过程,由于无论是否存在对计算结果不产生影响的参数,都要预先计算出所有参数的参数值,因此,参数化计算的效率较低。
发明内容
有鉴于此,本申请实施例提供一种数据处理方法、装置、设备及存储介质,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种数据处理方法,包括:
获取源程序代码对应的初始抽象语法树;所述源程序代码中包含参数引用关系;
在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;
按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;
对所述替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
根据本申请实施例的第二方面,提供了另一种数据处理方法,应用于客户端设备,包括:
在设备显示界面中显示目标部件;
响应于对所述目标部件的目标属性的属性值调整操作,确定依赖于所述目标属性的依赖属性;
加载所述依赖属性对应的替换后程序代码;其中,所述替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;所述源程序代码用于获取所述依赖属性的属性值;所述目标参数中包括与所述目标属性对应的参数;
运行所述替换后程序代码,得到所述依赖属性更新后的属性值。
根据本申请实施例的第三方面,提供了一种数据处理装置,包括:
初始抽象语法树获取模块,用于获取源程序代码对应的初始抽象语法树;所述源程序代码中包含参数引用关系;
目标位置信息获取模块,用于在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;
替换模块,用于按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;
代码转换模块,用于对所述替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
根据本申请实施例的第四方面,提供了另一种数据处理装置,位于客户端设备,包括:
显示模块,用于在设备显示界面中显示目标部件;
依赖属性确定模块,用于响应于对所述目标部件的目标属性的属性值调整操作,确定依赖于所述目标属性的依赖属性;
程序代码加载模块,用于加载所述依赖属性对应的替换后程序代码;其中,所述替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;所述源程序代码用于获取所述依赖属性的属性值;所述目标参数中包括与所述目标属性对应的参数;
更新后属性值得到模块,用于运行所述替换后程序代码,得到所述依赖属性更新后的属性值。
根据本申请实施例的第五方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面或者第二方面所述的数据处理方法对应的操作。
根据本申请实施例的第六方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据处理方法。
根据本申请实施例提供的数据处理方法,在获取到包含参数引用关系的源程序代码之后,先借助抽象语法树,将所有被引用的目标参数均替换为了参数值获取函数,从而形成替换后程序代码,这样,若运行替换后程序代码,则不会先一并获取所有被引用参数的参数值,而是,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作。因此,本申请实施例可以有效提升参数化计算的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为相关技术中用于进行参数化计算的示例性程序代码;
图2为根据本申请实施例一的一种数据处理方法的步骤流程图;
图3为图2所示实施例中的一种场景示例的示意图;
图4为根据本申请实施例二的一种数据处理方法的步骤流程图;
图5为图1左侧所示的源程序代码对应的初始抽象语法树;
图6为根据本申请实施例三的一种数据处理方法的步骤流程图;
图7为图6所示实施例中属性之间的依赖关系示意图;
图8为属性值调整操作引起的链式反应示意图;
图9为根据本申请实施例四的一种数据处理装置的结构框图;
图10为根据本申请实施例五的一种数据处理装置的结构框图;
图11为根据本申请实施例六的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
实施例一
参照图2,图2为根据本申请实施例一的一种数据处理方法的步骤流程图。具体地,本实施例提供的数据处理方法包括以下步骤:
步骤202,获取源程序代码对应的初始抽象语法树,源程序代码中包含参数引用关系。
抽象语法树(Abstract Syntax Code,AST)是源程序代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,其是基于抽象语法结构将源代码转化为树形结构的一种表示方式。抽象语法树描述了如何从文法结构来推导程序语言中的语句的过程,抽象语法树的节点分为不同的类型如二元表达式、声明、函数定义等。
可以采用现有的静态分析验证工具,对源程序代码进行词法分析和语法分析,从而生成源程序代码对应的抽象语法树。本申请实施例中,由于后续步骤中对源程序代码对应的抽象语法树进行了相关处理,因此,为更好地区分处理前、后的抽象语法树,将经词法和语法分析后得到的抽象语法,称为初始语法树。
步骤204,在初始抽象语法树中,确定被引用的目标参数的目标位置信息。
在得到源程序代码对应的初始抽象语法树之后,可以对初始抽象语法树的结构进行遍历,从而确定出存在参数引用的位置,本申请实施例中,将被引用的参数称为目标参数,目标参数在初始抽象语法树中的位置称为目标位置。本步骤中,可以遍历整个初始抽象语法树,从而确定出目标参数的目标位置信息。本领域技术人员可以理解,在一段源程序代码对应的初始抽象语法树中,可能仅存在一个被引用的参数,也可能存在多个被引用的参数,因此,对应地,本步骤中,可能仅存在一个目标参数,也可能存在多个目标参数。
步骤206,按照目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树。
其中,当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;
具体地,可以基于目标参数的参数名,构建参数值获取函数,然后,根据步骤204中确定出的目标参数在初始语法树中的目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,从而得到替换后抽象语法树。
步骤208,对替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
本步骤中,在得到替换后程序代码后,即可运行该替换后程序代码,从而得到参数化计算的计算结果。
参见图3,图3为本申请实施例一对应的场景示意图,以下,将参考图3所示的示意图,以一个具体场景示例,对本申请实施例进行说明:
还以图1中的包含有a、b、c以及d共4个被引用的目标参数的源程序代码为例,先获取源程序代码对应的初始抽象语法树;然后,在初始抽象语法树中,确定出被引用的目标参数的目标位置信息,具体包括:目标参数a的目标位置信息M、目标参数b的目标位置信息N、目标参数C的目标位置信息P、目标参数d的目标位置信息Q;再分别基于目标位置信息M、N、P、Q,将初始抽象语法树中的目标参数替换为参数值获取函数,从而得到替换后抽象语法树,具体地:将目标参数a替换为参数值获取函数:get(“a”),以当该参数值获取函数被调用时,可以获取目标参数a的参数值、将目标参数b替换为参数值获取函数:get(“b”),以当该参数值获取函数被调用时,可以获取目标参数b的参数值、将目标参数c替换为参数值获取函数:get(“c”),以当该参数值获取函数被调用时,可以获取目标参数c的参数值、将目标参数d替换为参数值获取函数:get(“d”),以当该参数值获取函数被调用时,可以获取目标参数d的参数值;基于替换后抽象语法树,再次生成如图3中示出的替换后程序代码并运行。
本申请实施例中,在获取到包含参数引用关系的源程序代码之后,先借助抽象语法树,将所有被引用的目标参数均替换为了参数值获取函数,从而形成替换后程序代码,这样,若运行替换后程序代码,则不会先一并获取所有被引用参数的参数值,而是,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作。因此,本申请实施例可以有效提升参数化计算的效率。
本申请实施例的数据处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
本申请实施例提供的数据处理方法,可以适用于多种不同的场景。
如:产品设计、三维建模,具体地:以居家产品设计为例,受后期产品加工工艺、室内空间位置等方面的约束,每个产品的设计过程通常都会涉及几十个甚至几百个参数(每个参数可以对应于产品的一种属性,如:长度、高度、厚度等)并且,不同参数之间可能相互依赖和制约,满足一定的联动关系。基于上述情况,可以将本申请实施例提供的数据处理方法应用于安装有产品设计类应用程序的客户端设备,当产品设计师用户在客户端设备调整显示界面内某产品部件的某属性值时,可以在确定出依赖于上述属性值的依赖属性后,进而通过本申请实施例提供的数据处理方法加载并运行上述确定出的依赖属性对应的替换后程序代码,以得到各依赖属性更新后的属性值。
又如:尺寸链计算,具体地:对于由多个不同部件装配而成的产品而言,其内部的零部件尺寸之间也满足一定的约束关系,当其中某个尺寸改变时,可能会引起其他尺寸的更新,因此,在尺寸链计算这一场景下,当某个尺寸值改变时,也可以在确定出依赖于上述尺寸的依赖尺寸之后,通过本请实施例提供的数据处理方法,加载并运行依赖尺寸对应的替换后程序代码,进而得到依赖尺寸更新后的尺寸值,以完成尺寸链的更新计算,等等。
实施例二
参照图4,图4为根据本申请实施例二的一种数据处理方法的步骤流程图。具体地,本实施例提供的数据处理方法包括以下步骤:
步骤402,获取源程序代码对应的初始抽象语法树,源程序代码中包含参数引用关系。
进一步地,可以通过如下方式获取源程序代码对应的初始抽象语法树:
获取源程序代码;
对源程序代码进行词法分析和语法分析,生成源程序代码对应的初始抽象语法树。
在对源程序代码进行词法分析和语法分析以生成初始抽象语法树时,可以参见相关技术中的具体分析方法实现,此处不再赘述。
步骤404,在初始抽象语法树中,确定所有被引用的变量。
通过对初始抽象语法树的遍历,可以确定出所有的被引用的变量。上述被引用的变量中,可能包含在源程序代码中直接定义了的变量,也可能包含需要通过调用其他程序代码段才能获取到具体数值的参数。
参见图5,图5为图1左侧所示的源程序代码对应的初始抽象语法树,该初始抽象语法树是采用现有的静态分析验证工具,对图1左侧所示的源程序代码进行词法和语法分析之后生成的。本步骤中,可以遍历该初始抽象语法树,从而确定出所有的被引用变量,具体方法为:从初始抽象语法树确定出所有包含“IdentNode”的目标部分(如图5中通过黑色框标识出的4个部分),进而基于上述目标部分,确定出所有的被引用变量:a、b、c以及d。
步骤406,确定源程序代码中包含的已定义变量。
本步骤中的已定义变量即为在源程序代码中直接定义的变量,而并非需要通过调用其他程序代码段才能获取到具体数值的变量(参数)。
步骤408,将所有被引用的变量中除已定义变量之外的其余变量,确定为被引用的目标参数,并获取目标参数的目标位置信息。
参见图1左侧图,由于源程序代码中并未直接定义变量a、b、c以及d,因此,本步骤中将步骤404中确定除的所有被引用的变量a、b、c以及d均确定为被引用的目标参数,并获取到a、b、c以及d在初始抽象语法树中的目标位置信息。
步骤410,获取预先定义的初始参数值获取函数。
其中,初始参数值获取函数用于获取传入参数的参数值。
本申请实施例中,对于初始参数值获取函数的具体形式不做限定,例如:可以预先定义函数:get(“u”),使得当该函数被调用时,可以获取其传入参数“u”的参数值;或者,也可以预先定义函数:value(“u”),使得当该函数被调用时,可以获取其传入参数“u”的参数值,等等。
步骤412,将目标参数的参数名作为初始参数值获取函数的传入参数,构建参数值获取函数。
以目标参数a为例,可以将目标参数的参数名“a”作为初始参数值获取函数(假设初始参数值获取函数的形式为get(“u”))的传入参数,构建参数值获取函数:get(“a”),当该参数值获取函数被调用时,则可以运行与目标参数对应的目标程序代码以获取目标参数的参数值。
步骤414,按照目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树。
本步骤中,当目标参数有多个时,为了提高参数化计算的效率,可以将所有目标参数均替换为对应的参数值获取函数,从而得到替换后抽象语法树。
步骤416,对替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
本申请实施例中,在获取到包含参数引用关系的源程序代码之后,先借助抽象语法树,将所有被引用的目标参数均替换为了参数值获取函数,从而形成替换后程序代码,这样,若运行替换后程序代码,则不会先一并获取所有被引用参数的参数值,而是,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作。因此,本申请实施例可以有效提升参数化计算的效率。
本实施例的数据处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
实施例三
参照图6,图6为根据本申请实施例三的一种数据处理方法的步骤流程图。
该实施例的应用场景可以是:零部件设计场景,如:居家产品(衣柜,桌椅等)设计等。以居家产品设计为例,在该场景中,由于受后期产品加工工艺、室内空间位置等方面的约束,每个产品的设计过程通常都会涉及几十个甚至几百个属性(每个属性对应一个参数),例如:长度、高度、厚度等用于描述产品具体尺寸的信息,并且,不同部件的属性之间可能相互依赖和制约,满足一定的联动关系(公式),即:某些属性值可能需要依赖其他属性值,通过公式计算得到。如图7中,涉及A、B、C、D、E、F、G共7个部件,其中,部件A的属性1(长度)和部件A的属性2(宽度)均依赖于部件B的属性1(宽度)和部件C的属性2(宽度),通过公式1和公式2计算得到;部件D的属性2(宽度)依赖于部件C的属性2和部件E的属性2(宽度),通过公式3计算得到;部件F的属性1(长度)依赖于部件G的属性1(长度),通过公式4计算得到。
这种情况下,设计过程中,当设计师用户在设计类应用的客户端设备中,调整显示界面中某个部件的某个属性值时,对应地,依赖于该属性的其他属性(本申请实施例中简称为依赖属性)的属性值则需要重新计算。例如:当更改图7中部件B的属性1(长度)的属性值时,则依赖于部件B的属性1的依赖属性(部件A的属性1和属性2)的属性值则需要重新计算。
本申请实施例中,每个属性均对应有一段用于获取该属性值的源程序代码,每个源程序代码中通常都会包含一个或多个参数。而对于依赖属性而言,其包含的参数中一定包含与该依赖属性所依赖的目标属性相对应的目标参数,即:若依赖属性1依赖于目标属性2,则在依赖属性1对应的源程序代码中,一定包含与目标属性2相对应的目标参数2,该目标参数2的参数值等于上述目标属性2的属性值,该目标属性2对应有一段用于获取该属性值的程序代码片段。
参见图8,图8为属性值调整操作引起的链式反应示意图,结合图8可知,当设计师用户进行属性值变更(调整)操作后(如调整了某个部件的长度,则代表长度的属性值就会改变);同时,由于这些属性值发生了变更,依赖这些属性值的依赖属性的属性值也就需要重新进行计算了(刷新),这种一层层属性依赖、刷新关系最终形成了链式反应,如同原子弹爆炸一般,其计算过程的CPU消耗可能是巨大的。
在属性值调整以及更新过程中,如果可以裁剪掉一些依赖关系,那么在上述“链式反应”中则可以节省一大笔CPU消耗。
本申请实施例中,则是对依赖属性所对应的源程序代码进行了预处理:借助抽象语法树,将源程序代码中所有被引用的目标参数均替换为了参数值获取函数,这样,若运行预处理后的程序代码,则无需执行上述链式反应中可能涉及到的所有链路,而是,根据逻辑关系的限定,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作,即:当需要执行哪条链路时,则保留对应的依赖关系,运行对应的参数值获取函数;当无需执行哪条链路时,则可以删除掉对应的依赖关系,无需运行参数值获取函数进行计算。因此,本申请实施例可以有效提升部件属性值的更新速度,进而提高用户的操作体验(执行属性值调整操作后,后台很快便可以对相关联的所以依赖属性值进行同步属性值调整,以便用户高效地进行产品设计)。
具体地,本实施例提供的数据处理方法,应用于客户端设备,包括以下步骤:
步骤602,在设备显示界面中显示目标部件。
本步骤中,对于显示截面中目标部件的具体显示形式并不做限定,例如:可通过三维模型的形式显示,也可以通过二维模型的形式显示,还可以通过表格等形式显示,等等。
步骤604,响应于对目标部件的目标属性的属性值调整操作,确定依赖于目标属性的依赖属性。
步骤606,加载依赖属性对应的替换后程序代码。
其中,替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;源程序代码用于获取依赖属性的属性值;目标参数中包括与目标属性对应的参数。
具体地,本申请实施例中,可以有两种方式加载依赖属性对应的替换后程序代码:
第一种方式:将该场景下可能涉及到的所有部件的所有属性值分别对应的源程序代码均存储在服务端设备中,当检测到对目标部件的目标属性的属性值调整操作,并确定出依赖于目标属性的依赖属性之后,再从服务端设备获取依赖属性对应的源程序代码,并将源程序代码处理为替换后程序代码。
具体地:从服务端设备获取源程序代码,并获取源程序代码对应的初始抽象语法树;在初始抽象语法树中,确定被引用的目标参数的目标位置信息;基于目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;对替换后抽象语法树进行代码转换,得到依赖属性对应的替换后程序代码。
第二种方式:预先在服务端设备中,对该场景下可能涉及到的所有部件的所有属性值分别对应的源程序代码分别进行处理,从而得到替换后程序代码,并存储在服务端设备中,当客户端设备检测到对目标部件的目标属性的属性值调整操作,并确定出依赖于目标属性的依赖属性之后,再从服务端设备获取依赖属性对应的替换后程序代码。
具体地:从服务器设备加载依赖属性对应的替换后程序代码;替换后程序代码是在响应于对目标部件中目标属性的属性值调整操作,确定依赖于目标属性的依赖属性步骤之前,预先存储在服务器设备中的。
步骤608,运行替换后程序代码,得到依赖属性更新后的属性值。
本申请实施例中,客户端设备在检测到对目标属性的属性值调整操作,并确定出依赖属性之后,加载并运行的是依赖属性对应的替换后程序代码,而上述替换后程序代码是借助抽象语法树,将源程序代码中所有被引用的目标参数均替换为参数值获取函数后形成的,这样,若运行替换后程序代码进行依赖属性的属性值更新计算时,则不会先一并获取所有被引用目标参数的参数值,而是,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作。因此,本申请实施例可以有效提升部件属性值的更新速度,进而提高用户的操作体验(执行属性值调整操作后,后台很快便可以对相关联的所以依赖属性值进行同步属性值调整,以便用户高效地进行产品设计)。
实施例四
参见图9,图9为根据本申请实施例四的一种数据处理装置的结构框图。本申请实施例提供的数据处理装置包括:
初始抽象语法树获取模块902,用于获取源程序代码对应的初始抽象语法树;源程序代码中包含参数引用关系;
目标位置信息获取模块904,用于在初始抽象语法树中,确定被引用的目标参数的目标位置信息;
替换模块906,用于按照目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;
代码转换模块908,用于对替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
可选地,在其中一些实施例中,替换模块906,具体用于:
获取预先定义的初始参数值获取函数;其中,初始参数值获取函数用于获取传入参数的参数值;
将目标参数的参数名作为初始参数值获取函数的传入参数,构建参数值获取函数;
按照目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树。
可选地,在其中一些实施例中,目标位置信息获取模块904,具体用于:
在初始抽象语法树中,确定所有被引用的变量;
确定源程序代码中包含的已定义变量;
将所有被引用的变量中除已定义变量之外的其余变量,确定为被引用的目标参数,并获取目标参数的目标位置信息。
可选地,在其中一些实施例中,初始抽象语法树获取模块902,具体用于:
获取源程序代码;
对源程序代码进行词法分析和语法分析,生成源程序代码对应的初始抽象语法树。
本申请实施例的数据处理装置用于实现前述方法实施例一或实施例二中相应的数据处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本申请实施例的数据匹配装置中的各个模块的功能实现均可参照前述方法实施例一或实施例二中的相应部分的描述,在此亦不再赘述。
实施例五
参照图10,图10为根据本申请实施例五的一种数据处理装置的结构框图。本申请实施例提供的数据处理装置,位于客户端设备,包括:
显示模块1002,用于在设备显示界面中显示目标部件;
依赖属性确定模块1004,用于响应于对目标部件的目标属性的属性值调整操作,确定依赖于目标属性的依赖属性;
程序代码加载模块1006,用于加载依赖属性对应的替换后程序代码;其中,替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;源程序代码用于获取依赖属性的属性值;目标参数中包括与目标属性对应的参数;
更新后属性值得到模块1008,用于运行替换后程序代码,得到依赖属性更新后的属性值。
可选地,在其中一些实施例中,程序代码加载模块1006,具体用于:
从服务器设备获取源程序代码,并获取源程序代码对应的初始抽象语法树;
在初始抽象语法树中,确定被引用的目标参数的目标位置信息;
基于目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;
对替换后抽象语法树进行代码转换,得到依赖属性对应的替换后程序代码。
可选地,在其中一些实施例中,程序代码加载模块1006,具体用于:
从服务器设备加载依赖属性对应的替换后程序代码;替换后程序代码是在响应于对目标部件中目标属性的属性值调整操作,确定依赖于目标属性的依赖属性步骤之前,预先存储在服务器设备中的。
本申请实施例的数据处理装置用于实现前述方法实施例三中相应的数据处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本申请实施例的数据处理装置中的各个模块的功能实现均可参照前述方法实施例三中的相应部分的描述,在此亦不再赘述。
实施例六
参照图11,示出了根据本申请实施例六的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图11所示,该电子设备可以包括:处理器(processor)1102、通信接口(Communications Interface)1104、存储器(memory)1106、以及通信总线1108。
其中:
处理器1102、通信接口1104、以及存储器1106通过通信总线1108完成相互间的通信。
通信接口1104,用于与其它电子设备或服务器进行通信。
处理器1102,用于执行程序1110,具体可以执行上述数据处理方法实施例中的相关步骤。
具体地,程序1110可以包括程序代码,该程序代码包括计算机操作指令。
处理器1102可能是CPU,或者是特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器806,用于存放程序1110。存储器1106可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序1110具体可以用于使得处理器1102执行以下操作:获取源程序代码对应的初始抽象语法树;源程序代码中包含参数引用关系;在初始抽象语法树中,确定被引用的目标参数的目标位置信息;按照目标位置信息,将初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;对替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
或者,程序1110具体可以用于使得处理器802执行以下操作:在设备显示界面中显示目标部件;响应于对目标部件的目标属性的属性值调整操作,确定依赖于目标属性的依赖属性;加载依赖属性对应的替换后程序代码;其中,替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当参数值获取函数被调用时,用于运行与目标参数对应的目标程序代码以获取目标参数的参数值;源程序代码用于获取依赖属性的属性值;目标参数中包括与目标属性对应的参数;运行替换后程序代码,得到依赖属性更新后的属性值。
程序1110中各步骤的具体实现可以参见上述数据处理方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,在获取到包含参数引用关系的源程序代码之后,先借助抽象语法树,将所有被引用的目标参数均替换为了参数值获取函数,从而形成替换后程序代码,这样,若运行替换后程序代码,则不会先一并获取所有被引用参数的参数值,而是,当代码运行至参数值获取函数位置时,再获取目标参数的参数值,相反地,当基于程序代码中的逻辑关系,最终无需运行参数值获取函数,则无需进行目标参数的参数值获取操作。因此,本申请实施例可以有效提升参数化计算的效率。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一数据处理方法对应的操作。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据处理方法。此外,当通用计算机访问用于实现在此示出的数据处理方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据处理方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (12)
1.一种数据处理方法,包括:
获取源程序代码对应的初始抽象语法树;所述源程序代码中包含参数引用关系;
在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;
按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;
对所述替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
2.根据权利要求1所述的方法,其中,所述按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树,包括:
获取预先定义的初始参数值获取函数;其中,所述初始参数值获取函数用于获取传入参数的参数值;
将所述目标参数的参数名作为所述初始参数值获取函数的传入参数,构建参数值获取函数;
按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为所述参数值获取函数,得到替换后抽象语法树。
3.根据权利要求1所述的方法,其中,所述在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息,包括:
在所述初始抽象语法树中,确定所有被引用的变量;
确定所述源程序代码中包含的已定义变量;
将所有被引用的变量中除所述已定义变量之外的其余变量,确定为被引用的目标参数,并获取所述目标参数的目标位置信息。
4.根据权利要求1所述的方法,其中,所述获取源程序代码对应的初始抽象语法树,包括:
获取源程序代码;
对所述源程序代码进行词法分析和语法分析,生成所述源程序代码对应的初始抽象语法树。
5.一种数据处理方法,应用于客户端设备,包括:
在设备显示界面中显示目标部件;
响应于对所述目标部件的目标属性的属性值调整操作,确定依赖于所述目标属性的依赖属性;
加载所述依赖属性对应的替换后程序代码;其中,所述替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;所述源程序代码用于获取所述依赖属性的属性值;所述目标参数中包括与所述目标属性对应的参数;
运行所述替换后程序代码,得到所述依赖属性更新后的属性值。
6.根据权利要求5所述的方法,其中,所述加载所述依赖属性对应的替换后程序代码,包括:
从服务器设备获取所述源程序代码,并获取所述源程序代码对应的初始抽象语法树;
在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;
基于所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;
对所述替换后抽象语法树进行代码转换,得到所述依赖属性对应的替换后程序代码。
7.根据权利要求5所述的方法,其中,所述加载所述依赖属性对应的替换后程序代码,包括:
从服务器设备加载所述依赖属性对应的替换后程序代码;所述替换后程序代码是在所述响应于对目标部件中目标属性的属性值调整操作,确定依赖于所述目标属性的依赖属性步骤之前,预先存储在服务器设备中的。
8.一种数据处理装置,包括:
初始抽象语法树获取模块,用于获取源程序代码对应的初始抽象语法树;所述源程序代码中包含参数引用关系;
目标位置信息获取模块,用于在所述初始抽象语法树中,确定被引用的目标参数的目标位置信息;
替换模块,用于按照所述目标位置信息,将所述初始抽象语法树中的目标参数替换为参数值获取函数,得到替换后抽象语法树;其中,当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;
代码转换模块,用于对所述替换后抽象语法树进行代码转换,得到替换后程序代码并运行。
9.一种数据处理装置,位于客户端设备,包括:
显示模块,用于在设备显示界面中显示目标部件;
依赖属性确定模块,用于响应于对所述目标部件的目标属性的属性值调整操作,确定依赖于所述目标属性的依赖属性;
程序代码加载模块,用于加载所述依赖属性对应的替换后程序代码;其中,所述替换后程序代码为将源程序代码中被引用的目标参数替换为参数值获取函数后的程序代码;当所述参数值获取函数被调用时,用于运行与所述目标参数对应的目标程序代码以获取所述目标参数的参数值;所述源程序代码用于获取所述依赖属性的属性值;所述目标参数中包括与所述目标属性对应的参数;
更新后属性值得到模块,用于运行所述替换后程序代码,得到所述依赖属性更新后的属性值。
10.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-4中任一项所述的数据处理方法对应的操作,或者,执行如权利要求5-7所述的数据处理方法对应的操作。
11.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-4中任一所述的数据处理方法,或者,实现如权利要求5-7所述的数据处理方法。
12.一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如权利要求1-4中任一所述的数据处理方法对应的操作,或者,执行如权利要求5-7所述的数据处理方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210278198.4A CN114741085A (zh) | 2022-03-21 | 2022-03-21 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210278198.4A CN114741085A (zh) | 2022-03-21 | 2022-03-21 | 数据处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114741085A true CN114741085A (zh) | 2022-07-12 |
Family
ID=82277892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210278198.4A Pending CN114741085A (zh) | 2022-03-21 | 2022-03-21 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741085A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115509514A (zh) * | 2022-11-23 | 2022-12-23 | 济南浪潮数据技术有限公司 | 一种前端数据模拟方法、装置、设备及介质 |
CN116954622A (zh) * | 2023-09-18 | 2023-10-27 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
-
2022
- 2022-03-21 CN CN202210278198.4A patent/CN114741085A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115509514A (zh) * | 2022-11-23 | 2022-12-23 | 济南浪潮数据技术有限公司 | 一种前端数据模拟方法、装置、设备及介质 |
CN116954622A (zh) * | 2023-09-18 | 2023-10-27 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
CN116954622B (zh) * | 2023-09-18 | 2023-12-15 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109343857B (zh) | 线上部署机器学习模型的方法、设备和存储介质 | |
CN113065656B (zh) | 一种规则引擎配置方法、装置、服务器及可读存储介质 | |
CN114741085A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN108897567B (zh) | 基于Unity的软件加载文件的方法、装置、设备及存储介质 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
US11269760B2 (en) | Systems and methods for automated testing using artificial intelligence techniques | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
CN111552462A (zh) | 物联网设备的设备模型构建方法、装置及存储介质 | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN109683858B (zh) | 数据处理方法及装置 | |
CN107704235A (zh) | 图形化建模中数据流程图的解析方法、系统及存储介质 | |
CN114691148A (zh) | 模型推理加速方法、装置、电子设备及存储介质 | |
EP4338048A1 (en) | Change estimation in version control system | |
US20110224954A1 (en) | Modelling of systems | |
US20180089337A1 (en) | Creating an engineering project in an industrial automation environment | |
KR20220125720A (ko) | 종속성 그래프 생성 방법, 장치, 기기, 저장 매체 및 컴퓨터 프로그램 | |
CN110019207B (zh) | 数据处理方法和装置以及脚本显示方法和装置 | |
CN113553635A (zh) | 图库图元配置方法、装置、电子设备和存储介质 | |
CN116541020A (zh) | 基于领域模型的代码生成方法、装置、设备、介质及产品 | |
CN114296726A (zh) | 一种代码生成方法、装置、计算机设备和存储介质 | |
CN113050935A (zh) | 生成混入对象的方法、装置、计算设备及计算机可读存储介质 | |
US20210174233A1 (en) | Graph equation modeling for mathematical equation decomposition and automated code generation | |
CN117573199B (zh) | 一种模型差异对比分析方法、装置、设备及介质 | |
JP2017111749A (ja) | 計算コード生成装置、方法及びプログラム |
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 |