代码处理方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:33708481 阅读:10 留言:0更新日期:2022-06-06 08:36
本申请实施例公开了代码处理方法、装置、计算机设备和存储介质;本申请实施例可以根据初始代码,生成初始抽象语法树;确定所述初始抽象语法树中的目标属性节点;将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树;根据所述目标抽象语法树,生成目标代码。在本申请实施例中通过将抽象语法树中的目标属性节点替换为了对应的字面值,简化初始代码,以提升代码运行速度,在运行获得的目标代码时,当运行目标属性节点对应的代码文本时,可以直接访问到真实的字面值,而不需要依照原本代码文本的方式进行多层索引,大大提升了代码的运行效率。大提升了代码的运行效率。大提升了代码的运行效率。

【技术实现步骤摘要】
代码处理方法、装置、计算机设备和存储介质


[0001]本申请涉及计算机
,具体涉及代码处理方法、装置、计算机设备和存储介质。

技术介绍

[0002]Python是一种广泛使用的解释型、高级和通用的编程语言,提供了高效的高级数据结构、简单有效地面向对象编程等特点,已经逐步为编程领域所重视。
[0003]然而,在实际应用中,在加载Python代码时会将代码对应的全部运行代码资源进行加载。也就是说,当Python代码中包含多个对象时,通常要加载每个对象对应的代码文本,这种方式会导致加载过多的运行代码资源的情况,代码运行速度低。

技术实现思路

[0004]本申请实施例提供代码处理方法、装置、计算机设备和存储介质,可以简化初始代码,以提升代码运行速度。
[0005]本申请实施例提供一种代码处理方法,包括:根据初始代码,生成初始抽象语法树;确定所述初始抽象语法树中的目标属性节点;将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树;根据所述目标抽象语法树,生成目标代码。
[0006]本申请实施例还提供一种代码处理装置,包括:生成单元,用于根据初始代码,生成初始抽象语法树;确定单元,用于确定所述初始抽象语法树中的目标属性节点;替换单元,用于将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树;生成单元,还用于根据所述目标抽象语法树,生成目标代码。
[0007]本申请实施例还提供一种计算机设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种代码处理方法中的步骤。
[0008]本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种代码处理方法中的步骤。
[0009]本申请实施例可以根据初始代码,生成初始抽象语法树;确定所述初始抽象语法树中的目标属性节点;将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树;根据所述目标抽象语法树,生成目标代码。
[0010]在本申请中通过将抽象语法树中的目标属性节点替换为了对应的字面值,简化初始代码,以提升代码运行速度,在运行获得的目标代码时,当运行目标属性节点对应的代码文本时,可以直接访问到真实的字面值,而不需要依照原本代码文本的方式进行多层索引,大大提升了代码的运行效率。
附图说明
[0011]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1是本申请实施例提供的代码处理系统的场景示意图;
[0013]图2是本申请实施例提供的代码处理方法的流程示意图;
[0014]图3是本申请另一个实施例提供的代码处理方法的流程示意图;
[0015]图4是本申请实施例提供的代码处理装置的结构示意图;
[0016]图5是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
[0017]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0018]本申请实施例提供代码处理方法、装置、计算机设备和存储介质。
[0019]其中,该代码处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
[0020]在一些实施例中,该代码处理装置还可以集成在多个电子设备中,比如,代码处理装置可以集成在多个服务器中,由多个服务器来实现本申请的代码处理方法。
[0021]在一些实施例中,服务器也可以以终端的形式来实现。
[0022]例如,参考图1,在一些实施方式中提供了一种代码处理系统的场景示意图,该系统可以实现代码处理方法。该代码处理系统可以包括终端1000、服务器2000以及网络3000,终端以及服务器可以通过网络进行数据交互。
[0023]其中,服务器用于根据初始代码,生成初始抽象语法树;确定初始抽象语法树中的目标属性节点;将目标属性节点替换为目标属性节点对应的字面值,得到目标抽象语法树;根据目标抽象语法树,生成目标代码。
[0024]其中,终端用于从服务器获取目标代码,并加载运行目标代码。
[0025]在本申请中,通过将抽象语法树中的目标属性节点替换为了对应的字面值,简化初始代码,以提升代码运行速度,在运行获得的目标代码时,当运行目标属性节点对应的代码文本时,可以直接访问到真实的字面值,而不需要依照原本代码文本的方式进行多层索引,大大提升了代码的运行效率。
[0026]以下分别进行详细说明。
[0027]在本实施例中,提供了一种基于代码处理方法,如图2所示,该代码处理方法的具体流程可以如下:
[0028]110、根据初始代码,生成初始抽象语法树。
[0029]其中,初始代码是指待处理的代码,可以包括软件全部或部分的代码文本,例如,可以为Python源代码,等等。初始抽象语法树是指通过对初始代码转换得到的抽象语法树,
是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构。例如,可以通过Asttokens将字符串对象转化为抽象语法树上的节点,抽象语法树提供节点类的定义、工具函数和类,包括遍历语法树类和修改语法树等功能,可以使用Asttokens来分析和处理Python源代码。Asttokens是文本和标记化形式维护源,并用标记信息标记AST节点的工具。
[0030]在一些实施方式中,具体地,在步骤120之前,还可以包括步骤1.1~1.2,如下:
[0031]1.1、获取初始代码对应的所有常量文件;
[0032]1.2、建立常量文件集,常量文件集包括所有常量文件。
[0033]其中,常量文件是指用来存储常量的配置文件。由于Python语言中没有常量,因此可以通过自定义类实现常量,常量可以满足命名全部为大写以及一旦绑定不可再修改这两个条件。例如,以自定义类实现常量,const.py作为常量文件,通过import(导入)const,以定义常量,const是用来声明某个常量字段或常量局部变量的关键字。常量文件集是指初始代码对应的所有常量文件的集合。
[0034]通过汇集初始代码对应的所有常量文件,预设常量文件集,以作为目标属性节点的判断依据以及常量值获取的来源,提高源,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码处理方法,其特征在于,包括:根据初始代码,生成初始抽象语法树;确定所述初始抽象语法树中的目标属性节点;将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树;根据所述目标抽象语法树,生成目标代码。2.如权利要求1所述的代码处理方法,其特征在于,所述确定所述初始抽象语法树中的目标属性节点,包括:获取所述初始抽象语法树中的候选属性节点;将包含目标标识信息的候选属性节点确定为目标属性节点。3.如权利要求2所述的代码处理方法,其特征在于,所述获取所述初始抽象语法树中的候选属性节点,包括:获取所述初始抽象语法树中的属性节点;获取所述属性节点的目标子节点,所述目标子节点用来表征所述属性节点的节点值;将所述目标子节点为名字表达式节点类型的所述属性节点确定为候选属性节点。4.如权利要求2所述的代码处理方法,其特征在于,所述将包含目标标识信息的候选属性节点确定为目标属性节点,包括:获取常量文件集,所述常量文件集包含至少一个常量文件,每个所述常量文件对应一个目标标识信息;获取所述候选属性节点中的标识信息;将所述标识信息与任意一个所述目标标识信息相同的所述候选属性节点确定为目标属性节点。5.如权利要求1所述的代码处理方法,其特征在于,所述将所述目标属性节点替换为所述目标属性节点对应的字面值,得到目标抽象语法树,包括:获取所述目标属性节点对应的目标字面值;将所述目标属性节点替换为目标字面值,得到目标抽象语法树。6.如权利要求5所述的代码处理方法,其特征在于,所述获取所述目标属性节点对应的目标字面值,包括:获取常量文件集,所述常量文件集包含至少一个常量文件;获取所述常量文件集中与所述目标属性节点对应的目标常量文件;将所述...

【专利技术属性】
技术研发人员:陈乔伟
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

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

1