脚本的更新方法和装置制造方法及图纸

技术编号:22329812 阅读:46 留言:0更新日期:2019-10-19 12:13
本发明专利技术公开了一种脚本的更新方法和装置。其中,该方法包括:获取待处理脚本对应的抽象语法树,其中,抽象语法树为待处理脚本的抽象语法结构的树状表现形式;确定抽象语法树中需要进行文本更新的待处理子树;确定待处理子树在待处理脚本中的脚本位置;根据目标文本对脚本位置处的文本进行更新,得到更新后的脚本。本发明专利技术解决了现有技术中对脚本进行优化的效率低的技术问题。

Script update method and device

【技术实现步骤摘要】
脚本的更新方法和装置
本专利技术涉及计算机领域,具体而言,涉及一种脚本的更新方法和装置。
技术介绍
目前,运行游戏代码的方式主要有两种,即编译源码的方式以及虚拟机执行脚本语言的方式。对于编译源码的方式,通常是将源码编译为目标机器的机器码,例如,将源码编写为C++或者其他编译型语言,并由处理器来执行;对于第二种方式,通常用脚本语言编写,生成虚拟机字节码或者直接用源码在虚拟机内执行,该方式的执行速度较慢,但开发速度较快,而且对代码逻辑的更新也比较方便。在上述第二种方式中,处理器可以通过将脚本语言编译为预设文件,在对脚本进行编译的过程中去掉脚本内置的无用代码,从而减少无用语句的调用,但该方式的执行效率较低。另外,处理器还通过文本替换的方式来实现,通过文本匹配开发中的有用代码,在运行时无用的代码,例如print等语句,则在文本规则的基础上进行处理,在对代码进行处理之后,再将处理后的代码编译为虚拟机的字节码并在虚拟机中运行。该方式通常使用正则表达式匹配需要删除或者替换的内容,然后对其进行处理。在文本处理非常严格而完备的情况下,理论上可以提升脚本效率到能自动优化的最大值,但严格而完备的限制条件难以达到。对于一条可以优化的语句,由于语言的复杂性,因此,如果不进行语法解析而直接用正则来匹配则可能会漏掉大量边界的复杂情况,例如,语句print后可以接所有python语言所能表达的表达式形式,而用文本规则无法匹配所有的表达式。由上述内容可知,在现有技术中,程序开发者只能面临完备而不严格或者严格而不完备的困境。在完备而不严格的情况下,如果存在边界情况,则处理后的源码将不能正确执行。在严格而不完备的情况下,代码预处理忽略了大量可以优化的情况,优化效果不会理想,从而降低了脚本优化的效率。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种脚本的更新方法和装置,以至少解决现有技术中对脚本进行优化的效率低的技术问题。根据本专利技术实施例的一个方面,提供了一种脚本的更新方法,包括:获取待处理脚本对应的抽象语法树,其中,抽象语法树为待处理脚本的抽象语法结构的树状表现形式;确定抽象语法树中需要进行文本更新的待处理子树;确定待处理子树在待处理脚本中的脚本位置;根据目标文本对脚本位置处的文本进行更新,得到更新后的脚本。进一步地,脚本的更新方法还包括:对待处理脚本进行预处理,得到预处理后的脚本;对预处理后的脚本进行解析,生成并获取抽象语法树。进一步地,通过如下任意一种或多种方式对待处理脚本进行预处理,得到预处理后的脚本:将待处理脚本的字符串转换为预设编码类型的字符串;将待处理脚本中的回车符转换为预设格式的回车符;对待处理脚本中的文件编码头进行删除,其中,文件编码头用于标识待处理脚本的编码类型。进一步地,脚本的更新方法还包括:对预处理后的脚本进行分割处理,得到多个语法单元;确定多个语法单元之间的关系;根据多个语法单元以及关系生成抽象语法树;在生成抽象语法树之后,获取抽象语法树。进一步地,在根据目标文本对脚本位置处的文本进行更新之前,脚本的更新方法还包括:获取目标语法树,其中,目标语法树为目标文本对应的语法树;根据语法标准规则以及目标语法树生成目标文本。进一步地,脚本的更新方法还包括:获取常量表;确定常量表中的目标常量;根据目标常量对脚本位置处的常量进行更新,得到更新后的脚本。进一步地,脚本的更新方法还包括:检测待处理脚本中的无用语句,其中,无用语句用于在待处理脚本的代码运行过程中输出调试信息和/或打印错误信息;确定无用语句对应的脚本位置;采用预设语句对脚本位置处的无用语句进行更新,得到更新后的脚本。进一步地,脚本的更新方法还包括:获取宏函数所对应的函数体以及宏函数对应的脚本位置;采用函数体对脚本位置处的宏函数进行更新,得到更新后的脚本。进一步地,脚本的更新方法还包括:检测待处理脚本中满足第一预设条件的条件语句;提取条件语句中满足第二预设条件的分支语句;根据分支语句对条件语句对应的脚本位置处的文本进行更新,得到更新后的脚本。进一步地,在根据目标文本对脚本位置处的文本进行更新,得到更新后的脚本之后,脚本的更新方法还包括:对更新后的脚本进行编译,得到预设文件;对预设文件进行打包处理,以执行打包后的预设文件。根据本专利技术实施例的另一方面,还提供了一种脚本的更新装置,包括:获取模块,用于获取待处理脚本对应的抽象语法树,其中,抽象语法树为待处理脚本的抽象语法结构的树状表现形式;第一确定模块,用于确定抽象语法树中需要进行文本更新的待处理子树;第二确定模块,用于确定待处理子树在待处理脚本中的脚本位置;更新模块,用于根据目标文本对脚本位置处的文本进行更新,得到更新后的脚本。根据本专利技术实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行脚本的更新方法。根据本专利技术实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行脚本的更新方法。在本专利技术实施例中,采用抽象语法树对待处理脚本进行更新的方式,通过抽象语法树来对待处理脚本进行脚本更新,根据抽象语法树可以确定要更新的脚本对应的待处理子树,而根据待处理子树在抽象语法树中的位置即可确定要更新的脚本在待处理脚本中的位置,进而对该位置处的脚本进行更新。在上述过程中,无需编写正则表达式来匹配需要更新的脚本,提升了脚本优化的效率,另外,由于抽象语法树为待处理脚本的抽象语法结构的树状表现形式,从而避免了由于脚本复杂遗漏大量边界的问题。由此可见,本申请所提供的方案达到了对脚本进行优化的目的,从而实现了提高脚本优化效率的技术效果,进而解决了现有技术中对脚本进行优化的效率低的技术问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本专利技术实施例的一种脚本的更新方法的流程图;图2是根据本专利技术实施例的一种可选的脚本的更新方法的示意图;图3是根据本专利技术实施例的一种可选的脚本的更新方法的流程图;以及图4是根据本专利技术实施例的一种脚本的更新装置的示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本专利技术实施例,提供了一种脚本的更新方法实施例,需要说明的是,本文档来自技高网
...

【技术保护点】
1.一种脚本的更新方法,其特征在于,包括:获取待处理脚本对应的抽象语法树,其中,所述抽象语法树为所述待处理脚本的抽象语法结构的树状表现形式;确定所述抽象语法树中需要进行文本更新的待处理子树;确定所述待处理子树在所述待处理脚本中的脚本位置;根据目标文本对所述脚本位置处的文本进行更新,得到更新后的脚本。

【技术特征摘要】
1.一种脚本的更新方法,其特征在于,包括:获取待处理脚本对应的抽象语法树,其中,所述抽象语法树为所述待处理脚本的抽象语法结构的树状表现形式;确定所述抽象语法树中需要进行文本更新的待处理子树;确定所述待处理子树在所述待处理脚本中的脚本位置;根据目标文本对所述脚本位置处的文本进行更新,得到更新后的脚本。2.根据权利要求1所述的方法,其特征在于,获取待处理脚本对应的抽象语法树,包括:对所述待处理脚本进行预处理,得到预处理后的脚本;对所述预处理后的脚本进行解析,生成并获取所述抽象语法树。3.根据权利要求2所述的方法,其特征在于,通过如下任意一种或多种方式对所述待处理脚本进行预处理,得到预处理后的脚本:将所述待处理脚本的字符串转换为预设编码类型的字符串;将所述待处理脚本中的回车符转换为预设格式的回车符;对所述待处理脚本中的文件编码头进行删除,其中,所述文件编码头用于标识所述待处理脚本的编码类型。4.根据权利要求2所述的方法,其特征在于,对所述预处理后的脚本进行解析,生成并获取所述抽象语法树,包括:对所述预处理后的脚本进行分割处理,得到多个语法单元;确定所述多个语法单元之间的关系;根据所述多个语法单元以及所述关系生成所述抽象语法树;在生成所述抽象语法树之后,获取所述抽象语法树。5.根据权利要求1所述的方法,其特征在于,在根据目标文本对所述脚本位置处的文本进行更新之前,所述方法还包括:获取目标语法树,其中,所述目标语法树为所述目标文本对应的语法树;根据语法标准规则以及所述目标语法树生成所述目标文本。6.根据权利要求1所述的方法,其特征在于,根据目标文本对所述脚本位置处的文本进行更新,得到更新后的脚本,包括:获取常量表;确定所述常量表中的目标常量;根据所述目标常量对所述脚本位置处的常量进行更新,得到所述更新后的脚本。7.根据权利要求1所述的方法,其特征在于,根据目标文本对所述脚本位置处的文本进行更新,得到更新后的...

【专利技术属性】
技术研发人员:郭小灿冯帆
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

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

1