一种格式调整方法及装置与流程

文档序号:17585717发布日期:2019-05-03 21:17阅读:138来源:国知局
一种格式调整方法及装置与流程

本发明属于代码处理技术领域,更具体的说,尤其涉及一种格式调整方法及装置。



背景技术:

随着计算机行业的发展,软件项目越来越多,一个软件项目需要多个程序员配合共同开发,而每个程序员所编写代码的格式不同,因此为了便于后期修改和维护,需要将具有不同格式的代码调整为具有统一格式的代码。

目前将具有不同格式的代码调整为具有统一格式的代码的方式有:预先制定代码格式规范和使用代码编辑器进行辅助,但是不同程序员对于预先制定代码格式规范有不同的理解,使得基于预先制定代码格式规范得到的代码的格式也会不同,同样的在使用代码编辑器时不同程序员对代码编辑器中与格式相关的菜单的设置不同,也会导致通过代码编辑器给出的代码的格式不同。



技术实现要素:

有鉴于此,本发明的目的在于提供一种格式调整方法及装置,用于将不同格式的源代码调整成具有相同特定格式的目标代码。

本发明提供一种格式调整方法,所述方法包括:

获取需要进行代码格式调整的源代码;

在所述源代码的代码编译过程中对所述源代码中的所有字符进行分割,得到多个独立组成部分,获得所述多个独立组成部分各自对应的类型,所述多个独立组成部分中的任一独立组成部分是字符串或字符;

基于所述多个独立组成部分各自对应的类型,对所述源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。

优选的,基于所述多个独立组成部分各自对应的类型,对所述源代码进行格式调整,得到具有特定格式的目标代码包括:

基于所述多个独立组成部分各自对应的类型和预设调整规则,对所述源代码进行格式调整,得到具有特定格式的目标代码,使得不同的源代码经过预设调整规则调整后得到的目标代码之间的特定格式相同。

优选的,所述基于所述多个独立组成部分各自对应的类型和预设调整规则,对所述源代码进行格式调整,得到具有特定格式的目标代码包括:

基于所述多个独立组成部分各自对应的类型,从预设调整规则中选取与所述类型对应的类型调整规则;

从所述预设调整规则中选取共用调整规则,所述共用调整规则用于对每行代码中除独立组成部分之外的部分进行格式限定;

基于所选取的类型调整规则和共用调整规则,对所述源代码进行格式调整,得到具有所述类型调整规则和共用调整规则所要求格式的目标代码。

优选的,所述在所述源代码的代码编译过程中对所述源代码中的所有字符进行分割,得到多个独立组成部分,获得所述多个独立组成部分各自对应的类型包括:

在所述源代码的代码编译过程中,将所述源代码的每行字符逐一输入;

获得每行字符包括的字符组,其中任意一行字符包括的字符组有:该行字符中第一个字符和第1个空格之间的字符组、该行字符中最后一个字符和第n个空格之间的字符组、第i个空格和第i+1个空格之间的字符组,其中i的取值为2到n-1,n为所述源代码中包括的空格总数;

对任一字符组:基于第一预设匹配规则确定该字符组包括的字符为字符串还是字符,并基于第二预设匹配规则得到类型。

优选的,所述对任一字符组:基于第一预设匹配规则确定该字符组包括的字符为字符串还是字符,并基于第二预设匹配规则得到类型包括:

对任一字符组执行以下步骤:

如果该字符组携带的全部内容为数字、运算符、标点符号和预设保留字中的一种,则该字符组的类型为全部内容对应的类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符;

如果该字符组携带的全部内容不包括数字、运算符、标点符号和预设保留字,则该字符组的类型为自变量类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符;

如果该字符组中字符数量大于1且包括至少一个预设字符,则通过所述预设字符对该字符组进行拆分,将预设字符确定为一个字符且该字符的类型与预设字符的类型相同,所述预设字符包括运算符、标点符号和数字中的至少一个;

对通过所述预设字符拆分得到的各部分中任一部分:如果该部分中字符数量等于1,则确定该部分为一个字符且字符的类型为自变量类型,如果该部分中字符数量大于1,则确定该部分为一个字符串,如果该字符串与预设保留字中的一个相同,则确定该字符串的类型为保留字类型,否则确定该字符串的类型为自变量类型。

本发明提供一种格式调整装置,所述装置包括:

获取模块,用于获取需要进行代码格式调整的源代码;

类型确定模块,用于在所述源代码的代码编译过程中对所述源代码中的所有字符进行分割,得到多个独立组成部分,获得所述多个独立组成部分各自对应的类型,所述多个独立组成部分中的任一独立组成部分是字符串或字符;

调整模块,用于基于所述多个独立组成部分各自对应的类型,对所述源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。

优选的,所述调整模块,用于基于所述多个独立组成部分各自对应的类型和预设调整规则,对所述源代码进行格式调整,得到具有特定格式的目标代码,使得不同的源代码经过预设调整规则调整后得到的目标代码之间的特定格式相同。

优选的,所述调整模块包括:

类型调整规则确定单元,用于基于所述多个独立组成部分各自对应的类型,从预设调整规则中选取与所述类型对应的类型调整规则;

共用调整规则确定单元,用于从所述预设调整规则中选取共用调整规则,所述共用调整规则用于对每行代码中除独立组成部分之外的部分进行格式限定;

调整单元,用于基于所选取的类型调整规则和共用调整规则,对所述源代码进行格式调整,得到具有所述类型调整规则和共用调整规则所要求格式的目标代码。

优选的,所述类型确定模块包括:

读取单元,用于在所述源代码的代码编译过程中,将所述源代码的每行字符逐一输入;

分割单元,用于获得每行字符包括的字符组,其中任意一行字符包括的字符组有:该行字符中第一个字符和第1个空格之间的字符组、该行字符中最后一个字符和第n个空格之间的字符组、第i个空格和第i+1个空格之间的字符组,其中i的取值为2到n-1,n为所述源代码中包括的空格总数;

类型确定单元,用于对任一字符组:基于第一预设匹配规则确定该字符组包括的字符为字符串还是字符,并基于第二预设匹配规则得到类型。

优选的,所述类型确定单元,用于对任一字符组执行以下步骤:

如果该字符组携带的全部内容为数字、运算符、标点符号和预设保留字中的一种,则该字符组的类型为全部内容对应的类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符;

如果该字符组携带的全部内容不包括数字、运算符、标点符号和预设保留字,则该字符组的类型为自变量类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符;

如果该字符组中字符数量大于1且包括至少一个预设字符,则通过所述预设字符对该字符组进行拆分,将预设字符确定为一个字符且该字符的类型与预设字符的类型相同,所述预设字符包括运算符、标点符号和数字中的至少一个;

对通过所述预设字符拆分得到的各部分中任一部分:如果该部分中字符数量等于1,则确定该部分为一个字符且字符的类型为自变量类型,如果该部分中字符数量大于1,则确定该部分为一个字符串,如果该字符串与预设保留字中的一个相同,则确定该字符串的类型为保留字类型,否则确定该字符串的类型为自变量类型。

通过上述技术方案可知,获取需要进行代码格式调整的源代码,在源代码的代码编译过程中对源代码中的所有字符进行分割,得到多个独立组成部分,获得多个独立组成部分各自对应的类型,基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同,实现将需要进行代码格式调整的源代码进行统一格式调整,从而提高代码的可读性,而统一的格式可以让每个程序员能够准确理解代码的思路和用意,在准确理解思路和用意的基础上才能够对代码进行准确更改,从而利于代码的修改和维护。并且字符分割是在源代码的代码编译过程中进行,这样可以通过一次字符的输入实现代码编译和代码格式调整的同时进行,降低代码编译和代码格式调整的耗时。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种格式调整方法的流程图;

图2是本发明实施例提供的一种格式调整装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其示出了本发明实施例提供的一种格式调整方法的流程图,用于对需要进行代码格式调整的源代码进行格式调整,得到具有特定格式的目标代码,具体的,图1所示格式调整方法可以包括以下步骤:

s101:获取需要进行代码格式调整的源代码,可以理解为:各个程序员编写的代码的格式各不相同,为了能够提高代码的可读性,使得代码结构更加美观,需要对源代码(即程序员编写的代码)进行代码格式调整,由此可知需要进行代码格式调整的源代码可以是但不限于未经过格式调整并且具有格式调整需求的源代码。

其中,获取需要进行代码格式调整的源代码的一种方式是:程序员通过编译器编写的代码,另一种方式是:通过文字编辑软件的编写的文本代码,再将文本代码写入至编译器的代码。

需要说明的是,上述源代码需要符合编译器的编写要求,即在程序员在编写代码时,需要遵守编写规则,避免在代码编译过程中出现编译错误,并且使得在后续的确定拆分字符时出现错误。

s102:在源代码的代码编译过程中对源代码中的所有字符进行分割,得到多个独立组成部分,获得多个独立组成部分各自对应的类型,其中,多个独立组成部分中的任一独立组成部分是字符或字符串。

也就是说对于源代码来说,该源代码是由字符串和字符这两种类型的独立组成部分组成,本实施例获得多个独立组成部分的阶段是在代码编译过程中,如在代码编译的词法分析阶段,这是因为在词法分析阶段需要逐一输入字符进行分析,而在获得独立组成部分时也需要逐一输入字符,所以可以在词法分析阶段进行分割,实现一次字符输入能够得到多个独立组成部分和对词法进行分析,从而可以减少字符输入次数,提高代码编译和代码格式调整的耗时。

在本实施例中,获得多个独立组成部分各自对应的类型的一种可行方式是:在源代码的代码编译过程中,将源代码的每行字符逐一输入,获得每行字符包括的字符组,其中任意一行字符包括的字符组有:该行字符中第一个字符和第1个空格之间的字符组、该行字符中最后一个字符和第n个空格之间的字符组、第i个空格和第i+1个空格之间的字符组,i的取值为2至n-1,n为源代码中包括的空格总数,对任一字符组:基于第一预设匹配规则确定该字符组包括的字符为字符串还是字符,并基于第二预设匹配规则得到类型。

其中,第一预设匹配规则可以是但不限于字符组包括的字符的数量,如果字符组包括的字符的数量等于1,则确定该字符组为字符,如果字符组包括的字符的数量大于1,则确定该字符组为字符串,第二预设匹配规则可以是基于预设保留字、运算符、标点符号和数字进行匹配,对于任意一种编程语言来说,都有规定的保留字(即上述预设保留字)、运算符、标点符号,由此可以基于这些来确定类型,而数字一般在编程语言中用于赋值,因此也可以基于数字确定类型。过程如下:对任一字符组执行以下步骤:

如果该字符组携带的全部内容为数字、运算符、标点符号和预设保留字中的一种,则该字符组的类型为全部内容对应的类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符。

如果该字符组携带的全部内容不包括数字、运算符、标点符号和预设保留字,则该字符组的类型为自变量类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符。

如果该字符组中的字符数大于1且包括至少一个预设字符,则通过预设字符对该字符组进行拆分,将预设字符确定为一个字符且该字符的类型与预设字符的类型相同,预设字符包括:运算符、标点符号和数字中的至少一个。

对通过预设字符拆分得到的各个部分中任一部分:如果该部分中字符数量等于1,则确定该部分为一个字符且字符的类型为自变量,如果该部分中的字符数量大于1,则确定该部分为一个字符串,如果该字符串与预设保留字中的一个相同,则确定该字符串的类型为保留字类型,否则确定该字符串的类型为自变量类型。

需要说明的是,在日常生活中的标点符号中的下划线“_”,在本申请中不归为标点符号的范畴,本申请将下划线“_”归为特殊符号,下划线和字母具有相同的类型,也就是说,一个字符串包括字母和下划线时,不需要对该字符串进行拆分。

如果一个字符组中的字符数量大于1且包括一个预设字符,如该字符组中包括运算符“=”,则通过运算符“=”对该字符组进行拆分,将运算符“=”确定为一个字符且该字符的类型与预设字符的类型相同。

如果一个字符组中的字符数量大于1且包括至少两个预设字符,如该字符组中包括运算符“=”和标点符号“}”,则通过运算符“=”和标点符号“}”对该字符组进行拆分,将运算符“=”和标点符号“}”分别确定为一个字符且该字符的类型与预设字符的类型相同即确定运算符“=”为运算符类型,确定标点符号“}”为标点符号类型。

如果一个字符组中的字符数量大于1且包括至少一个预设字符,且至少一个预设字符中包括至少一个数字,则对该数字的前一个字符进行类型判定,基于数字的前一个字符的类型进行拆分。

基于数字的前一个字符的类型进行拆分的一种可行方式是:如果数字的前一个字符的类型为字母,则不能通过数字对该字符组进行拆分,否则通过数字对该字符组进行拆分。也就是说,数字跟在字母后面,则将字母和数字视为一个整体,数字跟在运算符或标点符号后面,则将该数字和运算符或标点符号拆分。

为了便于理解,在此以c语言为例,对上述分割方式进行举例说明:

首先,保留字为c语言中已经定义过的字符组,不能再将这些字作为变量名使用,如“int”是c语言中已经定义过的字符组,则“int”仅能够作为保留字使用,而不能将其作为自变量使用,如程序员在定义某个名称时不能使用int;自变量为c语言中未定义过的字符组,具体是程序员自行定义字符串或字符。如“pwd_type”,该定义的字符串或字符串在后续使用中的属性由程序员自行定义;运算符为用于执行程序代码运算,运算符为c语言中设置好的,其中运算符包括:单目运算、双目运算和三目运算,单目运算为该运算符只对一个变量进行操作,如“!”(逻辑非运算符);双目运算为该运算符对两个变量进行操作,如“=”(赋值运算符);三目运算为该运算符对三个变量进行操作,如“?:”(条件运算符),同样的运算符和标点符号也是c语言中设置好的,对此本实施例不再一一说明。

例如,需要进行格式调整的源代码如下:

首先根据每行的第一个字符和第1个空格、每行的最后一个字符和第n个空格、以及每行的相邻两个空格对源代码进行分割,得到的各个字符组为“viod”、“main(){”、“int”、“a”、“=”、“35”、“;”、“int”、“b=4;”“int”、“c”和“=a+b;”,其中,任两个空格之间的字符为空,则舍弃该字符组。

字符组“35”为所有字符均为数字,则确定该字符组为数字类型,并且该字符组的字符数量大于1,确定该字符组为一个字符串。

字符组“viod”、“int”、“int”和“int”均与保留字相同,则确定保留字类型,并且该字符组的字符数量大于1,确定该字符组为一个字符串。

字符组“a”、“c”、“=”和“;”的字符数量等于1,“a”、“c”确定为字母,“=”确定为运算符,“;”确定为标点符号,并确定“a”、“c”为自变量类型,“=”为运算符类型,“;”确定为标点符号类型,并且该字符组的字符数量等于1,确定该字符组为一个字符。

字符组“b=4;”、“main(){”和“=a+b;”字符数量大于1且包括预设字符,则对这些字符组进行拆分,以字符组“main(){”为例,拆分得到“main”、“()”、“{”,再将得到的字符组进行确定类型,确定类型与上述代码进行确定类型的执行过程和原理形同,在此不再赘述。

s103:基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。可以理解为:不同的独立组成部分各自对应的类型,进行调整后得到以不同的格式展示的独立组成部分,而不同的源代码中相同的独立组成部分各自对应的类型,进行调整之后得到相同格式展示的独立组成部分,使得不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。

基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码一种可行方式是:基于多个独立组成部分各自对应的类型和预设调整规则,对源代码进行格式调整,得到特定格式的目标代码,使得不同的源代码经过预设调整规则调整后得到的目标代码之间的特定格式相同。

其中预设调整规则是用于对源代码的格式进行限定的规则,也就是说,预设调整规则已经限定了代码采用什么样的格式编写,所以通过预设调整规则能够表明最终输出的目标代码的特定格式,预设调整规则可以是但不限于:对代码的每行、每类字符/字符串以及头文件等组成代码的各部分的格式要求,例如对每行要求缩进第一预设个空格,对每类字符或字符串进行空格隔开,对头文件要求缩进第二预设个空格,其中,第一预设个空格和第二个预设空格可以相同,也可以不同,本实施例对第一预设个空格和第二预设个空格不作限定,在此不作阐述。

在本实施例中,基于预设调整规则得到特定格式的目标代码的一种可行方式是:基于多个独立组成部分各自对应的类型,从预设调整规则中选取与类型对应的类型调整规则,从预设调整规则中选取共用调整规则,共用调整规则用于对每一行代码中除独立组成部分之外的部分进行格式限定,基于所选取的类型调整规则和共用调整规则,对源代码进行格式调整,得到具有类型调整规则和共用调整规则所要求格式的目标代码。

其中,共用调整规则用来对不同代码中共有格式的限定,例如限定每行代码的格式、头文件的格式,例如限定每行代码缩进多少,头文件是否允许缩进等,同时,还可以根据每行代码在代码中的不同的逻辑位置,每行代码有不同的特定格式,如对于多级嵌套来说其缩进有所不同,这样可以使得代码整体上看井井有条,层次分明。共用调整规则可以包括但不限于:代码缩进、冗余空行删除与空行添加、花括号对齐和每行只有一个程序语;类型调整规则则是针对某种类型的字符或字符串的调整,其可以包括但不限于:字符或字符串前后的空格调整。

在本实施例中,代码缩进的缩进幅度与对应的程序语句在源代码中逻辑位置相关,不同逻辑位置的程序语句的代码缩进的缩进幅度不同,比如对于if和else这种嵌套语句来说,存在多级嵌套的情况,那么每级嵌套采用的代码缩进的缩进幅度不同。冗余空行删除与空行添加可根据想要的特定格式进行调整。

在此,以c语言为例,对得到特定格式的目标代码进行说明:源代码如下:

经过上述步骤s102获得上述源代码的各个独立组成部分的类型,分别有保留系类型、数字类型、标点类型和预算符类型。可以从预设调整规则中提取这些类型各自对应的类型调整规则,将类型调整规则结合共用调整规则,对源代码进行调整,得到如下目标代码:

得到上述目标代码的涉及的规则如下:花括号单独占一行、一对花括号对齐、花括号内缩进四个字符、删除多余空行、独立组成部分前后加空格,其中独立组成部分前后加空格为:每行代码中任意相邻的两个字符/字符串之间用空格隔开;删除多余空行为任意相邻两行代码之间删除多余空行。

需要说明的是,预设调整规则可以是人为提前设置的规则或者是系统规定的规则,在这两种形式下也可以根据需求增加新的调整规则,但是需要注意的是:无论采用哪种预设调整规则进行调整,需要保证一个项目或者一个公司编写的代码具有统一的特定格式。可以是人为提前设置的规则根据用户的喜好而定,在此不再阐述。

通过上述技术方案可知,获取需要进行代码格式调整的源代码,在源代码的代码编译过程中对源代码中的所有字符进行分割,得到多个独立组成部分,获得多个独立组成部分各自对应的类型,基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同,实现将需要进行代码格式调整的源代码进行统一格式调整,从而提高代码的可读性,而统一的格式可以让每个程序员能够准确理解代码的思路和用意,在准确理解思路和用意的基础上才能够对代码进行准确更改,从而利于代码的修改和维护。并且字符分割是在源代码的代码编译过程中进行,这样可以通过一次字符的输入实现代码编译和代码格式调整的同时进行,降低代码编译和代码格式调整的耗时。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

与上述方法实施例相对应,本发明实施例还提供一种格式调整装置,其结构示意图如图2所示,可以包括:获取模块11、类型确定模块12、调整模块13。

获取模块11,用于获取需要进行代码格式调整的源代码,其中源代码的说明以及获取方式请参阅方法实施例中的相关说明,对此本实施例不再阐述。

类型确定模块12,用于在源代码的代码编译过程中对源代码中的所有字符进行分割,得到多个独立组成部分,获得多个独立组成部分各自对应的类型,其中,多个独立组成部分中的任一独立组成部分是字符串或字符。

也就是说对于源代码来说,该源代码是由字符串和字符这两种类型的独立组成部分组成,本实施例获得多个独立组成部分的阶段是在代码编译过程中,如在代码编译的词法分析阶段,这是因为在词法分析阶段需要逐一输入字符进行分析,而在获得独立组成部分时也需要逐一输入字符,所以可以在词法分析阶段进行分割,实现一次字符输入能够得到多个独立组成部分和对词法进行分析,从而可以减少字符输入次数,提高代码编译和代码格式调整的耗时。

在本实施例中,类型确定模块12的一种结构可以是:类型确定模块12包括:读取单元、分割单元和类型确定单元。

其中读取单元,用于在源代码的代码编译过程中,将源代码的每行字符逐一输入;分割单元,用于获得每行字符包括的字符组,其中任意一行字符包括的字符组有:该行字符中第一个字符和第1个空格之间的字符组、该行字符中最后一个字符和第n个空格之间的字符组、第i个空格和第i+1个空格之间的字符组,i的取值为2至n-1,n为源代码中包括的空格总数;类型确定单元,用于对任一字符组:基于第一预设匹配规则确定该字符组包括的字符为字符串还是字符,并基于第二预设匹配规则得到类型。

其中,第一预设匹配规则可以是但不限于字符组包括的字符的数量,如果字符组包括的字符的数量等于1,则确定该字符组为字符,如果字符组包括的字符的数量大于1,则确定该字符组为字符串,第二预设匹配规则可以是基于预设保留字、运算符、标点符号和数字进行匹配,对于任意一种编程语言来说,都有规定的保留字(即上述预设保留字)、运算符、标点符号,由此可以基于这些来确定类型,而数字一般在编程语言中用于赋值,因此也可以基于数字确定类型。基于此类型确定单元对任一字符组执行以下步骤以确定类型:

如果该字符组携带的全部内容为数字、运算符、标点符号和预设保留字中的一种,则该字符组的类型为全部内容对应的类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符。

如果该字符组携带的全部内容不包括数字、运算符、标点符号和预设保留字,则该字符组的类型为自变量类型,如果该字符组中字符数量大于1,确定该字符组为一个字符串,如果该字符组中字符数量等于1,确定该字符组为一个字符。

如果该字符组中的字符数大于1且包括至少一个预设字符,则通过预设字符对该字符组进行拆分,将预设字符确定为一个字符且该字符的类型与预设字符的类型相同,预设字符包括:运算符、标点符号和数字中的至少一个。

对通过预设字符拆分得到的各个部分中任一部分:如果该部分中字符数量等于1,则确定该部分为一个字符且字符的类型为自变量,如果该部分中的字符数量大于1,则确定该部分为一个字符串,如果该字符串与预设保留字中的一个相同,则确定该字符串的类型为保留字类型,否则确定该字符串的类型为自变量类型。

需要说明的是,在日常生活中的标点符号中的下划线“_”,在本申请中不归为标点符号的范畴,本申请将下划线“_”归为特殊符号,下划线和字母具有相同的类型,也就是说,一个字符串包括字母和下划线时,不需要对该字符串进行拆分。其中代码分割的具体说明以及得到的类型请参阅方法实施例中的相关说明,对此本实施例不再阐述。

调整模块13,用于基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。可以理解为:不同的独立组成部分各自对应的类型,进行调整后得到以不同的格式展示的独立组成部分,而不同的源代码中相同的独立组成部分各自对应的类型,进行调整之后得到相同格式展示的独立组成部分,使得不同的源代码进行格式调整后得到的目标代码之间的特定格式相同。

基于调整模块13得到具有特定格式的目标代码一种可行方式是:基于多个独立组成部分各自对应的类型和预设调整规则,对源代码进行格式调整,得到特定格式的目标代码,使得不同的源代码经过预设调整规则调整后得到的目标代码之间的特定格式相同。

其中预设调整规则是用于对源代码的格式进行限定的规则,也就是说,预设调整规则已经限定了代码采用什么样的格式编写,所以通过预设调整规则能够表明最终输出的目标代码的特定格式,预设调整规则可以是但不限于:对代码的每行、每类字符/字符串以及头文件等组成代码的各部分格式要求,例如对每行要求缩进第一预设个空格,对每类字符或字符串进行空格隔开,对头文件要求缩进第二预设个空格,其中,第一预设个空格和第二个预设空格可以相同,也可以不同,本实施例对第一预设个空格和第二预设个空格不作限定,在此不作阐述。

在本实施例中,调整模块13的一种可选结构是:调整模块13包括:类型调整规则确定单元、共用调整规则确定单元和调整单元。

其中类型调整规则确定单元,用于基于多个独立组成部分各自对应的类型,从预设调整规则中选取与类型对应的类型调整规则;共用调整规则确定单元,用于从预设调整规则中选取共用调整规则,共用调整规则用于对每一行代码中除独立组成部分之外的部分进行格式限定;调整单元,用于基于所选取的类型调整规则和共用调整规则,对源代码进行格式调整,得到具有类型调整规则和共用调整规则所要求格式的目标代码。

其中,共用调整规则用来对不同代码中共有格式的限定,例如限定每行代码的格式、头文件的格式,例如限定每行代码缩进多少,头文件是否允许缩进等,同时,还可以根据每行代码在代码中的不同的逻辑位置,每行代码有不同的特定格式,如对于多级嵌套来说其缩进有所不同,这样可以使得代码整体上看井井有条,层次分明。共用调整规则可以包括但不限于:代码缩进、冗余空行删除与空行添加、花括号对齐和每行只有一个程序语;类型调整规则则是针对某种类型的字符或字符串的调整,其可以包括但不限于:字符或字符串前后的空格调整。

在本实施例中,代码缩进的缩进幅度与对应的程序语句在源代码中逻辑位置相关,不同逻辑位置的程序语句的代码缩进的缩进幅度不同,比如对于if和else这种嵌套语句来说,存在多级嵌套的情况,那么每级嵌套采用的代码缩进的缩进幅度不同。冗余空行删除与空行添加可根据想要的特定格式进行调整。

具体的执行过程和原理与上述方法实施例中的执行过程和原理相同,在此不再赘述。

通过上述技术方案可知,获取需要进行代码格式调整的源代码,在源代码的代码编译过程中对源代码中的所有字符进行分割,得到多个独立组成部分,获得多个独立组成部分各自对应的类型,基于多个独立组成部分各自对应的类型,对源代码进行格式调整,得到具有特定格式的目标代码,其中不同的源代码进行格式调整后得到的目标代码之间的特定格式相同,实现将需要进行代码格式调整的源代码进行统一格式调整,从而提高代码的可读性,而统一的格式可以让每个程序员能够准确理解代码的思路和用意,在准确理解思路和用意的基础上才能够对代码进行准确更改,从而利于代码的修改和维护。并且字符分割是在源代码的代码编译过程中进行,这样可以通过一次字符的输入实现代码编译和代码格式调整的同时进行,降低代码编译和代码格式调整的耗时。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1