本申請涉及計算機技術領域,尤其涉及一種程序代碼標記方法及裝置。
背景技術:
隨著計算機不斷的發展,通過編程語言編輯程序代碼來進行軟件開發已經變得越來越重要,如,通過結構化查詢語言(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、光學存儲器等)上實施的計算機程序產品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。