一种程序代码标记方法及装置与流程

文档序号:11198974阅读:843来源:国知局
一种程序代码标记方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种程序代码标记方法及装置。



背景技术:

随着计算机不断的发展,通过编程语言编辑程序代码来进行软件开发已经变得越来越重要,如,通过结构化查询语言(structuredquerylanguage,sql)编辑程序代码来进行软件开发。

目前,为了提高编辑程序代码的效率,通常采用将程序代码中某些程序代码进行标记,如,将程序代码中的变量进行加亮,以此使得程序员能够准确的定位想要找的程序代码的位置。

在现有技术中,代码编辑设备首先接收用户选择的编程语言,从程序代码的最前端开始按顺序读取程序代码,当匹配到预设的该编程语言对应的待标记的程序代码时,直接对该程序代码进行标记。

但是,在现有技术中,由于不同的编程语言有着不同的语法结构,因此,不同的编程语言对应着不同需要标记的程序代码,如,在perl语言中,只要程序代码为字符串,则直接将字符串进行全部标记,而在sql语言中,程序代码为字符串,则不会对整个字符进行全部标记,而是会识别字符串中的程序代码,并对需要标记的程序代码进行标记,当需要通过两种以上的编程语言编辑程序代码时,也就是说,程序代码中包含了两种以上不同的编程语言,现有技术中只能按照其中的一种编程语言对应的程序代码标记方式对当前的程序代码进行识别并标记。

例如,以下是包含了使用perl语言和sql两种编程语言的程序代码:

在上述程序代码中,如果选用perl语言对程序代码进行标记,则按照预设的perl语言的标记方式,程序代码中""符号中间的内容都会被认为是字符串,因而""符号中间的内容都被标记,如,“"10"”中的“10”,“$next_month_firstday=substr($bizdate,0,4)."1001"”中的“1001”等会被标记。

而对于sql语句来说,按照perl语言的标记方式,""符号中间的内容也会被标记,这显然是错误的。

因此,现有技术中只能采用一种编程语言的标记方式对包含有两种以上不同的编程语言的程序代码进行标记,这样势必会使得程序代码标记出现错误。



技术实现要素:

本申请实施例提供一种程序代码标记方法及装置,用以解决对包含两种以上的编程语言的程序代码进行标记时,势必会使得程序代码标记出现错误的问题。

本申请实施例提供的一种程序代码标记方法,所述方法包括:

顺序读取程序代码;

当读取到程序代码中包含的切换标识符时,确定所述切换标识符对应的标记规则;

采用所述标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定所述下一个切换标识符对应的另一标记规则,采用所述另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

本申请实施例提供的一种程序代码标记方法,所述程序代码由两种编程语言编写,预先保存与所述两种编程语言分别对应的两种标记规则,所述方法包括:

顺序读取程序代码;

采用所述两种标记规则中默认的标记规则对后续读取到的程序代码进行标记;

每当读取到程序代码中包含的切换标识符时,采用所述两种标记规则中与当前使用的标记规则不同的另一种标记规则,继续对后续读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

本申请实施例提供的一种程序代码标记装置,所述装置包括:

读取模块,用于顺序读取程序代码;

第一确定模块,用于当读取到程序代码中包含的切换标识符时,确定所述切换标识符对应的标记规则;

标记模块,用于采用所述标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定所述下一个切换标识符对应的另一标记规则,采用所述另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

本申请实施例提供的一种程序代码标记装置,所述程序代码由两种编程语言编写,预先保存与所述两种编程语言分别对应的两种标记规则,所述装置包括:

读取模块,用于顺序读取程序代码;

默认标记模块,用于采用所述两种标记规则中默认的标记规则对后续读取到的程序代码进行标记;

标记模块,用于每当读取到程序代码中包含的切换标识符时,采用所述两种标记规则中与当前使用的标记规则不同的另一种标记规则,继续对后续读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

本申请实施例提供一种程序代码标记方法及装置,该方法包括:顺序读取程序代码,当读取到程序代码中包含的切换标识符时,确定该切换标识符对应的标记规则,并采用该标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定该下一个切换标识 符对应的另一标记规则,并采用该另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。通过上述方法,即使程序代码由两种以上的编程语言进行编写的,但是可以根据切换标识符确定需要使用哪个标记规则,对后续读取到的程序代码进行准确的标记。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的程序代码标记过程;

图2为本申请实施例提供的程序代码标记过程;

图3为本申请实施例提供的第一种程序代码标记装置结构示意图;

图4为本申请实施例提供的第二种程序代码标记装置结构示意图。

具体实施方式

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

图1为本申请实施例提供的程序代码标记过程,具体包括以下步骤:

s101:顺序读取程序代码。

在实际应用中,为了提高编辑程序代码的效率,通常采用将程序代码中某些程序代码进行标记,以此使得程序员能够准确的定位想要找的程序代码的位置。

因此,在对程序代码进行标记的整个过程中,本申请首先由前向后顺序读 取程序代码,而顺序读取程序代码可以是由代码编辑设备执行,也可以由其他代码读取设备执行。

例如,假设程序代码a由perl语言、c语言、sql语言编写完成,代码编辑设备顺序读取程序代码a。

s102:当读取到程序代码中包含的切换标识符时,确定所述切换标识符对应的标记规则。

由于不同的编程语言有着不同的语法结构,因此,不同的编程语言对应着不同需要标记的程序代码,也就是说,不同的编程语言对应着不同的标记规则,所述标记规则里详细描述了针对某个编程语言,使用该程序语言进行程序代码编写时,需要标记的程序代码。

进一步的,由于在实际应用中,程序代码有可能由两种以上的编程语言编写的,因此,在本申请中,如果程序代码是由两种以上的编程语言编写的,则在对程序代码进行标记的时候,需要对不同的编程语言编写的程序代码,采用不同的标记规则进行标记。

进一步的,为了能够对不同的编程语言编写的程序代码,采用不同的标记规则进行标记,在本申请中,需要识别出程序代码到底是使用哪个编程语言编写的,而本申请具体是采用切换标识符来进行识别的,其中,每个切换标识符均对应一种编程语言,也就是说,通过切换标识符能够准确的识别出,接下来读取的程序代码是用哪种编程语言进行编写的,进而确定出切换标识符对应的标记规则。

在此需要说明的是,在本申请中,为了考虑到编写完成的程序代码能够被执行设备识别并执行,因此,在预先设定切换标识符时,可以使用编程语言里已有的程序代码作为切换标识符,如,perl语言中程序代码""符号可以作为切换标识符,但是,如果使用编程语言里已有的程序代码作为切换标识符时,有可能存在该切换标识符可能有其他的意义,如,如果选择程序代码""作为切换标识符,程序代码""还可能表示转义,也就是说,程序代码""符号中间的程 序代码和两边的程序代码都是同一种编程语言,这样,当代码编辑设备读取到该切换标识符,则继续按照切换标识符来进行切换标记规则的话,很有可能直接导致标记出现错误,因此,如果使用程序代码作为切换标识符,该程序代码除了切换标识符的意义以外还有其他的意义时,则可以修改编程语言,用新的程序代码来表示被用作切换标识符的该程序代码的意义,这样该程序代码就可以作为切换标识符使用了,如,可将表示转义的程序代码""修改成程序代码"""",这样,程序代码""就可以作为切换标识符了。

另外,由于注释通常可以自定义,并且即使注释被自定义,执行设备也可正常的识别并执行程序代码,因此,在本申请中,也可以使用注释(在注释中说明接下来的程序代码是使用哪种编程语言编写的)来作为切换标识符,并自由设定该切换标识符。

延续上例,假设采用注释来作为切换标识符,并且,预设的切换标识符为“//perl语言”(表示接下来的程序代码是用perl语言编写的)、“//c语言”(表示接下来的程序代码是用c语言编写的)、“//sql语言”(表示接下来的程序代码是用sql语言编写的),而且,预先设定“//perl语言”对应perl标记规则,“//c语言”对应c标记规则,“//sql语言”对应sql标记规则。

假设程序代码a中首次出现的切换标识符为“//perl语言”,因此,代码编辑设备顺序读取程序代码a,当读取到程序代码中包含的“//perl语言”时,确定该“//perl语言”对应的perl标记规则。

在实际应用中,有可能存在整个程序代码的最前端的程序代码不是切换标识符的情况,但是,由于通常情况下整个程序代码的开头所使用的编程语言与文件类型是相对应的,也就是说,文件类型可以决定程序代码的开头所使用的编程语言,因此,对于这种情况,本申请在对整个程序代码进行标记时,具体可以在首次读取到切换标识符之前,根据该程序代码所在的文件的文件类型,确定该文件类型对应的标记规则,根据该文件类型对应的标记规则,对后续读取到的程序代码进行标记,直到读取到切换标识符为止。如,假设正在编写的 程序代码中,位于最前端的程序代码不是切换标识符,假设程序代码所在的文件是sql类型的文件,代码编辑设备在首次读取到切换标识符之前,根据sql文件类型,确定该文件类型对应的标记规则,假设标记规则为sql标记规则,并根据该sql标记规则,对后续读取到的程序代码进行标记,直到读取到切换标识符为止。

s103:采用所述标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定所述下一个切换标识符对应的另一标记规则,采用所述另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

考虑到实际应用中,当采用的切换标识符是编程语言里已有的程序代码时,有可能存在预先设定的切换标识符出现在注释中,并且,注释前面的程序代码以及注释后面的程序代码都是同一种编程语言的情况,因此,在本申请中,在采用标记规则,对后续读取到的程序代码进行标记之前,确定所述切换标识符在所述程序代码中所在的位置不是预设的指定位置,如果确定出的切换标识符在程序代码中所在的位置是预设的指定位置,则说明该切换标识符前面的程序代码以及后面的程序代码都是同一种编程语言,因此,可以直接将该切换标识符忽略,即,不做任何处理。

例如,假设以程序代码"作为切换标识符,并且,切换标识符不能出现在注释中,代码编辑设备在读取程序代码e的过程中,读取到注释中包含的切换标识符",判断出该切换标识符"在程序代码中所在的位置是在注释中,也即,该切换标识符"在预设的指定位置上,则代码编辑设备直接忽略此切换标识符",不采用切换标识符"对应的标记规则对后续读取的程序代码进行标记,仍采用当前的标记规则对后续读取的程序代码进行标记。

进一步的,代码编辑设备在确定出切换标识符在程序代码中所在的位置不是预设的指定位置后,可直接根据该标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定下一 个切换标识符对应的另一标记规则,采用另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

在对程序代码进行标记的过程中,在本申请中,可以采用高亮的方式对程序代码进行标记,即,对后续读取到的需要标记的程序代码进行高亮显示,当然也可以对需要标记的程序代码,按照类型的不同添加不同的底色。

继续沿用上例,代码编辑设备确定出该//perl语言对应的perl标记规则,假设代码编辑设备确定出该//perl语言在程序代码a中所在的位置不是预设的指定位置,因此,代码编辑设备采用perl标记规则对后续读取到的需要标记的程序代码进行高亮(即,标记),直到再次读取到程序代码中包含的下一个切换标识符,假设下一个切换标识符为//c语言,确定出该//c语言对应的c标记规则,并采用该c标记规则对后续读取到的需要标记的程序代码进行高亮,假设下一个切换标识符为//sql语言,确定出该//sql语言对应的sql标记准则,并采用该sql标记规则对后续读取到的需要标记的程序代码进行高亮,直到将全部的程序代码a标记为止。

通过上述方法,即使程序代码由两种以上的编程语言进行编写的,但是可以根据切换标识符确定需要使用哪个标记规则,对后续读取到的程序代码进行准确的标记。

以上为本申请提供的程序代码标记的方法,在整个程序代码标记的过程中,切换标识符均唯一对应一个编程语言的标记规则,也就是说,通过切换标识符能够唯一标识确定出一个编程语言对应的标记规则,但是,在实际应用中,对于仅由两种编程语言编写的程序代码,在预先设定切换标识符时,所设定的切换标识符无需对应任何一个编程语言的标记规则,代码编辑设备只要读取到该切换标识符时,则可采用两种标记规则中与当前使用的标记规则不同的另一种标记规则即可,具体如图2所示。

图2为本申请实施例提供的程序代码标记过程,具体包括以下步骤:

s201:顺序读取程序代码。

例如,假设程序代码b由perl语言以及sql语言编写完成,并且预先保存了perl语言对应的perl标记规则,sql语言对应的sql标记规则,假设程序代码b具体如下:

代码编辑设备顺序读取程序代码b。

s202:采用所述两种标记规则中默认的标记规则对后续读取到的程序代码进行标记。

s203:每当读取到程序代码中包含的切换标识符时,采用所述两种标记规则中与当前使用的标记规则不同的另一种标记规则,继续对后续读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

由于在本申请中只有两种编程语言编写,因此,为了提高编写程序代码的效率,在本申请中,切换标识符可以只设定一个,每当代码编辑设备读取到该切换标识符时,就采用两种标记规则中与当前使用的标记规则不同的另一种标记规则,继续对后续读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

进一步的,由于本申请中只设定一个切换标识符,因此,整个程序代码中,位于最前端的程序代码不是切换标识符,也就是说,从位于最前端的程序代码到首次出现切换标识符之间的程序代码,需要从两种标记规则中选择一个标记规则(在本申请中,可以将该标记规则作为默认的标记规则)对从位于最前端的程序代码到首次出现切换标识符之间的程序代码进行标记。

对于到底从两种标记规则中选择哪一个标记规则,本申请提供了一种选取方法,具体为:根据程序代码所在的文件的文件类型,确定两种标记规则中与 该文件类型对应的标记规则,作为默认的标记规则,采用该默认的标记规则,对后续读取到的程序代码进行标记。

延续上例,假设预设的切换标识符为#切换标示符(表示接下来的程序代码的标记规则是采用perl标记规则以及sql标记规则中与当前使用的标记规则不同的另一种标记规则)。

假设程序代码b所在文件的文件类型为perl,代码编辑设备根据程序代码b所在文件的文件类型perl,确定出该文件类型对应的perl标记规则,并将perl标记规则作为默认的标记规则,代码编辑设备采用perl标记规则对后续读取到的程序代码进行高亮,即,对substr、"10"、"1001"、"%y-%m-%d%h:%m:%s"、##bizdate=yesterday、$进行高亮。

直到读取到程序代码b包含的#切换标识符时,采用两种标记规则中与当前使用的perl标记规则不同的另一种标记规则,即,sql标记规则,继续对后续读取到的程序代码b进行高亮,即,对=、’$temp_bizdate’、—统计月份、—支付账户与银行账户balance/bank、count、sum、’yyyy-mm-ddhh:mi:ss’、’yyymm’进行高亮,直到将程序代码b完全标记完为止。

以上为本申请实施例提供的两种程序代码标记方法,基于同样的思路,本申请实施例还提供了第一种程序代码标记装置,如图3所示,第二种程序代码标记装置,如图4所示。。

图3为本申请实施例提供的第一种程序代码标记装置结构示意图,包括:

读取模块301,用于顺序读取程序代码;

第一确定模块302,用于当读取到程序代码中包含的切换标识符时,确定所述切换标识符对应的标记规则;

标记模块303,用于采用所述标记规则,对后续读取到的程序代码进行标记,直到再次读取到程序代码中包含的下一个切换标识符时,再次确定所述下一个切换标识符对应的另一标记规则,采用所述另一标记规则,继续对读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

所述装置还包括:

初始标记模块304,用于在首次读取到切换标识符之前,根据所述程序代码所在的文件的文件类型,确定所述文件类型对应的标记规则,根据所述文件类型对应的标记规则,对后续读取到的程序代码进行标记,直到读取到切换标识符为止。

所述装置还包括:

第二确定模块305,用于所述标记模块303采用所述标记规则,对后续读取到的程序代码进行标记之前,确定所述切换标识符在所述程序代码中所在的位置不是预设的指定位置。

所述标记模块303具体用于,对后续读取到的需要标记的程序代码进行高亮显示。

图4为本申请实施例提供的第二种程序代码标记装置结构示意图,所述程序代码由两种编程语言编写,预先保存与所述两种编程语言分别对应的两种标记规则,包括:

读取模块401,用于顺序读取程序代码;

默认标记模块402,用于采用所述两种标记规则中默认的标记规则对后续读取到的程序代码进行标记;

标记模块403,用于每当读取到程序代码中包含的切换标识符时,采用所述两种标记规则中与当前使用的标记规则不同的另一种标记规则,继续对后续读取到的程序代码进行标记,直到将全部的程序代码标记完为止。

所述默认标记模块402具体用于,根据所述程序代码所在的文件的文件类型,确定所述两种标记规则中与所述文件类型对应的标记规则,作为默认的标记规则,采用所述默认的标记规则,对后续读取到的程序代码进行标记。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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