代碼轉(zhuǎn)換的方法及裝置制造方法
【專利摘要】本發(fā)明涉及計(jì)算機(jī)編程領(lǐng)域,具體而言,涉及一種代碼轉(zhuǎn)換的方法及裝置,通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹存儲(chǔ)到創(chuàng)建的堆棧中并按照堆棧的后進(jìn)先出的順序彈出代碼行或者代碼樹中的子節(jié)點(diǎn),然后將當(dāng)前彈出的代碼行或者子節(jié)點(diǎn)進(jìn)行分解為待轉(zhuǎn)換文件,最后遍歷自然語(yǔ)義對(duì)照表,自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
【專利說明】代碼轉(zhuǎn)換的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)編程領(lǐng)域,具體而言,涉及一種代碼轉(zhuǎn)換的方法及裝置。
【背景技術(shù)】
[0002]程序代碼為機(jī)器語(yǔ)言,不容易被人理解,程序員在使用代碼編輯器編寫代碼時(shí),為了使其它人能更加容易地看懂其編寫的代碼的含義,一般會(huì)對(duì)代碼行進(jìn)行注釋,即以自然語(yǔ)言來標(biāo)注代碼。
[0003]目前一般的注釋操作需要人工對(duì)代碼進(jìn)行排版,在需要注釋的代碼行的同一行之后,采用自然語(yǔ)言進(jìn)行標(biāo)注或解釋。
[0004]但是上述注釋操作的過程非常繁瑣,大大增加了程序員的工作量。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種代碼轉(zhuǎn)換的方法及裝置,以解決上述的問題。
[0006]在本發(fā)明的實(shí)施例中提供了一種代碼轉(zhuǎn)換的方法,包括:
[0007]讀取待轉(zhuǎn)換代碼文件的所有代碼行,并記錄總行數(shù);
[0008]根據(jù)總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧,并將所有代碼行逐行壓入代碼行原始堆棧中;
[0009]在代碼行原始堆棧中,按照原始堆棧順序,逐行彈出代碼行;
[0010]將當(dāng)前彈出的代碼行分解為待轉(zhuǎn)換短語(yǔ);
[0011]將待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中,并按照語(yǔ)法短語(yǔ)堆棧順序彈出待轉(zhuǎn)換短語(yǔ);
[0012]遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則將待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言;
[0013]語(yǔ)法短語(yǔ)堆棧為空時(shí),進(jìn)行下一代碼行的分解和轉(zhuǎn)換,直至代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。
[0014]進(jìn)一步的,遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括:
[0015]若對(duì)照表中不存在與待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改待轉(zhuǎn)換短語(yǔ),接收到更改后的短語(yǔ)后,則將待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為更改后的短語(yǔ);或者,提示是否在對(duì)照表中增加待轉(zhuǎn)換短語(yǔ)對(duì)應(yīng)為參考短語(yǔ),若接收到增加待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)的指令,則在對(duì)照表中增加待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)。
[0016]進(jìn)一步的,該方法進(jìn)一步包括:
[0017]每一次語(yǔ)法短語(yǔ)堆棧為空時(shí),創(chuàng)建一個(gè)與語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn);
[0018]將通過語(yǔ)法短語(yǔ)堆棧轉(zhuǎn)換后的代碼行存于節(jié)點(diǎn)中;
[0019]代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧均為空時(shí)結(jié)束;
[0020]所有節(jié)點(diǎn)形成代碼樹。[0021]創(chuàng)建一個(gè)與語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn),包括:
[0022]在讀取待轉(zhuǎn)換代碼文件的所有代碼行之前,創(chuàng)建初始化節(jié)點(diǎn);
[0023]若彈出的代碼行以起始嵌套符號(hào)為開始,則在初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義子節(jié)點(diǎn)名為N;
[0024]否則,在初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義子節(jié)點(diǎn)名為N+1 ;
[0025]若彈出的代碼行以結(jié)束嵌套符號(hào)為結(jié)束,則尋找與代碼行子節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn),并記錄與子節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn)的信息。
[0026]進(jìn)一步的,該方法還包括:
[0027]遍歷代碼樹;
[0028]將初始化節(jié)點(diǎn)作為父節(jié)點(diǎn),獲取父節(jié)點(diǎn)的語(yǔ)句值,創(chuàng)建與父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句框,并在語(yǔ)句框中顯示父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句值;
[0029]若父節(jié)點(diǎn)存在子節(jié)點(diǎn),則獲取子節(jié)點(diǎn)中存儲(chǔ)的轉(zhuǎn)換后的代碼行的語(yǔ)句值;
[0030]根據(jù)子節(jié)點(diǎn)與父節(jié)點(diǎn)的預(yù)設(shè)的位置偏移量,創(chuàng)建與子節(jié)點(diǎn)的轉(zhuǎn)換后的代碼行的語(yǔ)句值對(duì)應(yīng)的語(yǔ)句框,并在語(yǔ)句框中顯示轉(zhuǎn)換后的代碼行的語(yǔ)句值;
[0031]連接父節(jié)點(diǎn)與子節(jié)點(diǎn),并顯示代碼樹。
[0032]在本發(fā)明的實(shí)施例中還提供了一種代碼轉(zhuǎn)換的方法,包括:
[0033]獲取一個(gè)待編譯的代碼樹初始化節(jié)點(diǎn),并掃描代碼樹初始化節(jié)點(diǎn)下的所有子節(jié)
占.[0034]記錄子節(jié)點(diǎn)的總行數(shù);
[0035]根據(jù)總行數(shù),創(chuàng)建自然語(yǔ)言堆棧;
[0036]預(yù)先在子節(jié)點(diǎn)中設(shè)置自然語(yǔ)句值,獲取自然語(yǔ)句值,并將自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ);
[0037]將待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到自然語(yǔ)言堆棧中,并按照自然語(yǔ)言堆棧順序彈出待轉(zhuǎn)換自然短語(yǔ);
[0038]遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ),則將待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ);
[0039]自然語(yǔ)言堆棧為空時(shí),進(jìn)行下一子節(jié)點(diǎn)的分解和轉(zhuǎn)換,直至子節(jié)點(diǎn)和自然語(yǔ)言堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。
[0040]進(jìn)一步的,遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括:
[0041]若對(duì)照表中不存在與待轉(zhuǎn)換自然短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換自然短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改待轉(zhuǎn)換自然短語(yǔ),接收到更改后的自然短語(yǔ)后,則將待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為更改后的自然短語(yǔ);或者,提示是否在對(duì)照表中增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ),若接收到增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)的指令,則在對(duì)照表中增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)。
[0042]進(jìn)一步的,該方法還包括:
[0043]創(chuàng)建語(yǔ)法短語(yǔ)堆棧,語(yǔ)法短語(yǔ)堆棧用于存儲(chǔ)轉(zhuǎn)化后的語(yǔ)法短語(yǔ);
[0044]每一次自然語(yǔ)言堆棧為空,且子節(jié)點(diǎn)無下一層子節(jié)點(diǎn),則創(chuàng)建語(yǔ)法語(yǔ)句堆棧;
[0045]彈出語(yǔ)法短語(yǔ)堆棧中存儲(chǔ)的轉(zhuǎn)化后的語(yǔ)法短語(yǔ),并將語(yǔ)法短語(yǔ)拼接成語(yǔ)句,壓入語(yǔ)法語(yǔ)句堆棧;[0046]當(dāng)代碼樹的所有子節(jié)點(diǎn)全部轉(zhuǎn)化完成,且自然語(yǔ)言堆棧為空時(shí)結(jié)束;
[0047]與代碼樹所有子節(jié)點(diǎn)對(duì)應(yīng)的所有語(yǔ)法短語(yǔ)拼接成的語(yǔ)句組成代碼文件;
[0048]創(chuàng)建語(yǔ)法語(yǔ)句堆棧包括:
[0049]讀取子節(jié)點(diǎn);
[0050]若子節(jié)點(diǎn)是第一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化開始前壓入嵌套起始語(yǔ)法符號(hào);
[0051]若子節(jié)點(diǎn)是最后一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化結(jié)束后壓入嵌套結(jié)束語(yǔ)法符號(hào)。
[0052]進(jìn)一步的,該方法還包括:
[0053]在語(yǔ)法語(yǔ)句堆棧中,順序彈出語(yǔ)句;
[0054]在語(yǔ)句末尾增加與語(yǔ)句對(duì)應(yīng)的自然語(yǔ)義及與相應(yīng)的注釋符號(hào);
[0055]對(duì)代碼樹進(jìn)行編碼,并將編碼結(jié)果添加到注釋符號(hào)末尾;
[0056]若語(yǔ)法語(yǔ)句堆棧為空,則顯示整個(gè)代碼文件;
[0057]順序彈出語(yǔ)句,包括:
[0058]通過嵌套開始語(yǔ)法符號(hào)與嵌套結(jié)束語(yǔ)法符號(hào)的層數(shù),確定代碼的縮進(jìn)空格數(shù),并順序彈出語(yǔ)句。
[0059]在本發(fā)明的實(shí)施例中提供了 一種代碼轉(zhuǎn)換的裝置,包括:
[0060]讀取單元,用于讀取待轉(zhuǎn)換代碼文件的所有代碼行;
[0061]記錄單元,與讀取單元連接,用于記錄讀取單元讀取的待轉(zhuǎn)換代碼文件的所有代碼行總行數(shù);
[0062]創(chuàng)建單元,與記錄單元連接,用于根據(jù)記錄單元記錄的總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧;
[0063]壓入單元,與創(chuàng)建單元連接,用于將所有代碼行逐行壓入創(chuàng)建單元?jiǎng)?chuàng)建的代碼行原始堆棧中;
[0064]第一彈出單元,與壓入單元連接,用于在壓入單元壓入的代碼行原始堆棧中,按照原始堆棧順序,逐行彈出代碼行;
[0065]分解單元,與第一彈出單元連接,用于將第一彈出單元彈出的代碼行分解為待轉(zhuǎn)換短語(yǔ);
[0066]存儲(chǔ)單元,與分解單元連接,用于將分解單元分解的待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中;
[0067]第二彈出單元,與存儲(chǔ)單元連接,用于按照堆棧順序彈出存儲(chǔ)單元存儲(chǔ)的待轉(zhuǎn)換短語(yǔ);
[0068]轉(zhuǎn)換單元,與第二彈出單元連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與第二彈出單元彈出的待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),將第二彈出單元彈出的待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
[0069]在本發(fā)明的實(shí)施例中還提供了 一種代碼轉(zhuǎn)換的裝置,包括:
[0070]第一獲取單元,用于獲取一個(gè)待編譯的代碼樹根節(jié)點(diǎn);
[0071]掃描單元,與第一獲取單元連接,用于掃描第一獲取單元獲取的代碼樹根節(jié)點(diǎn)下的所有代碼樹子節(jié)點(diǎn);
[0072]記錄單元,與掃描單元連接,用于記錄掃描單元掃描的子節(jié)點(diǎn)的總行數(shù);
[0073]創(chuàng)建單元,與記錄單元連接,用于根據(jù)記錄單元記錄的總行數(shù),創(chuàng)建自然語(yǔ)言堆棧;
[0074]第二獲取單元,與創(chuàng)建單元連接,用于從創(chuàng)建單元?jiǎng)?chuàng)建的自然語(yǔ)言堆棧中獲取自然語(yǔ)句值;
[0075]分解單元,與第二獲取單元連接,用于將第二獲取單元獲取的自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ);
[0076]存儲(chǔ)單元,與分解單元連接,用于將分解單元分解得到的待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到自然語(yǔ)言堆棧中;
[0077]轉(zhuǎn)換單元,與存儲(chǔ)單元連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與存儲(chǔ)單元存儲(chǔ)的待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ),則將存儲(chǔ)單元存儲(chǔ)的待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ)。
[0078]本發(fā)明實(shí)施例提供的代碼轉(zhuǎn)換的方法及裝置,與現(xiàn)有技術(shù)中的需要程序員手動(dòng)為代碼添加標(biāo)注和解釋,并構(gòu)建代碼之間邏輯關(guān)系的流程圖,操作過程繁瑣,大大增加了程序員的工作量的方案相比,其通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將其存儲(chǔ)到堆棧中并順序彈出,根據(jù)自然語(yǔ)義對(duì)照表自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
【專利附圖】
【附圖說明】
[0079]圖1示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖;
[0080]圖2示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖;
[0081]圖3示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖
[0082]圖4示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖
[0083]圖5示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖
[0084]圖6示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的方法的流程圖
[0085]圖7示出了本發(fā)明實(shí)施例中一種使用ANLVC的方法的流程圖;
[0086]圖8示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的裝置的結(jié)構(gòu)示意圖;
[0087]圖9示出了本發(fā)明實(shí)施例中一種代碼轉(zhuǎn)換的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0088]下面通過具體的實(shí)施例子并結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。
[0089]為便于對(duì)本實(shí)施例進(jìn)行理解,首先對(duì)本實(shí)施例所基于的代碼編輯器進(jìn)行簡(jiǎn)要說明。本發(fā)明使用的 ANLVC (Approximate Natural language Logical VisibleCoding-system,近似自然語(yǔ)言性、邏輯性、可視性代碼編輯系統(tǒng)),在使用過程中,可以將其安裝在其他開發(fā)平臺(tái)項(xiàng)目的目錄下,當(dāng)使用時(shí),打開該系統(tǒng)即可。
[0090]本實(shí)施例提供了一種代碼轉(zhuǎn)換的方法,如圖1所示,該方法包括:
[0091]101、讀取待轉(zhuǎn)換代碼文件的所有代碼行,并記錄總行數(shù)。
[0092]具體的,待轉(zhuǎn)換代碼文件可以是程序員正在編輯的代碼文件,也可以預(yù)先編好的是一個(gè)完整的代碼文件;其中代碼行的行數(shù),可以ASCII碼10與13為標(biāo)記。[0093]102、根據(jù)總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧,并將所有代碼行逐行壓入代碼行原始堆棧中。
[0094]具體的,根據(jù)總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧,為了保證創(chuàng)建的兩個(gè)堆棧不會(huì)太大,導(dǎo)致浪費(fèi)資源;也不會(huì)太小,以至于不能容納所有代碼行;
[0095]將所有代碼行逐行壓入代碼行原始堆棧中,為了后續(xù)逐行彈出代碼行并對(duì)其進(jìn)行分解和轉(zhuǎn)換。根據(jù)堆棧的后進(jìn)先出的特點(diǎn),優(yōu)選的,將所有的代碼行從末尾至開始逐行壓入代碼行原始堆棧中;也可以從開始將代碼行逐行壓入代碼行原始堆棧中。
[0096]103、在代碼行原始堆棧中,按照原始堆棧順序,逐行彈出代碼行。
[0097]具體的,根據(jù)代碼行原始堆棧的后進(jìn)先出的原則,在后壓入的代碼行在先被彈出。
[0098]104、將當(dāng)前彈出的代碼行分解為待轉(zhuǎn)換短語(yǔ)。
[0099]本實(shí)施例中,以空格、符號(hào)為分隔符,將彈出的代碼行分解成待轉(zhuǎn)換短語(yǔ)。其中,符號(hào)與空格,也算一個(gè)短語(yǔ),當(dāng)遇到符號(hào)時(shí),證明該代碼行分解完成。
[0100]具體的,以代碼行【var Score=O;】為例進(jìn)行說明,其分解后的結(jié)果為:短語(yǔ)1:【var】,其中該分解后的短語(yǔ)I為棧底,短語(yǔ)2:【】,短語(yǔ)3:【SCOre】,短語(yǔ)4:【=】,短語(yǔ)5:【0】,短語(yǔ)6:【;】,其中,該分解后的短語(yǔ)6為棧頂。
[0101]105、將待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧,并按照語(yǔ)法短語(yǔ)堆棧順序彈出待轉(zhuǎn)換短語(yǔ)。
[0102]具體的,將步驟104中分解后的待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中,以便后續(xù)按照堆棧順序?qū)υ摱陶Z(yǔ)進(jìn)行轉(zhuǎn)換;具體的,可以將待轉(zhuǎn)換短語(yǔ)順序存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中,也可以逆序?qū)⒋D(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中;優(yōu)選的,為后者,這樣可以從框頂開始,逐框彈出根據(jù)后的待轉(zhuǎn)換短語(yǔ)。
[0103]106、遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則將待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
[0104]具體的,在ANLVC中預(yù)設(shè)自然語(yǔ)言的對(duì)照表,該自然語(yǔ)言的對(duì)照表中存儲(chǔ)有參考短語(yǔ)及與該參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
[0105]107、語(yǔ)法短語(yǔ)堆棧為空時(shí),進(jìn)行下一代碼行的分解和轉(zhuǎn)換,直至代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。
[0106]本發(fā)明實(shí)施例提供的代碼轉(zhuǎn)換的方法,與現(xiàn)有技術(shù)中的需要程序員手動(dòng)為代碼添加標(biāo)注和解釋,并構(gòu)建代碼之間邏輯關(guān)系的流程圖,操作過程繁瑣,大大增加了程序員的工作量的方案相比,其通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將其存儲(chǔ)到堆棧中并順序彈出,根據(jù)自然語(yǔ)義對(duì)照表自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
[0107]進(jìn)一步的,遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括:
[0108]若對(duì)照表中不存在與待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改待轉(zhuǎn)換短語(yǔ),接收到更改后的短語(yǔ)后,則將待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為更改后的短語(yǔ);或者,提示是否在對(duì)照表中增加待轉(zhuǎn)換短語(yǔ)對(duì)應(yīng)為參考短語(yǔ),若接收到增加待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)的指令,則在對(duì)照表中增加待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)。[0109]具體的,程序員輸入的待轉(zhuǎn)換短語(yǔ)可能出現(xiàn)拼寫錯(cuò)誤,致使系統(tǒng)不能識(shí)別,故系統(tǒng)提示程序員是否更改待轉(zhuǎn)換短語(yǔ)為系統(tǒng)可識(shí)別的短語(yǔ);或者,程序員輸入的待轉(zhuǎn)換短語(yǔ)沒有錯(cuò)誤,但是對(duì)照表不存在與待轉(zhuǎn)換短語(yǔ)對(duì)應(yīng)的參考短語(yǔ),故系統(tǒng)會(huì)提示是否在對(duì)照表增加待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ),若接收到程序員“是”的指令,設(shè)置與該參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
[0110]例如,當(dāng)程序員輸入“if”,對(duì)“if”不識(shí)別,系統(tǒng)自動(dòng)提示【自然識(shí)別錯(cuò)誤:if ?】,此時(shí),系統(tǒng)會(huì)提示是否修改“if”為識(shí)別的短語(yǔ);或者對(duì)剛才程序員輸入的“if ”,系統(tǒng)自動(dòng)提示是否需要在對(duì)照表中增加“if”為參考短語(yǔ),若接收到程序員“是”的指令,設(shè)置與“if”對(duì)應(yīng)的自然短語(yǔ)。例如“if”匹配“如果”,同時(shí),還可以按照人們的自然語(yǔ)言習(xí)慣,對(duì)“if”多匹配幾個(gè)自然用語(yǔ),例如“if”匹配“假設(shè)”,“假如”等,也可以匹配一段自然語(yǔ)言的錄音。對(duì)于待轉(zhuǎn)換短語(yǔ),例如case,可以有多個(gè)自然語(yǔ)言定義,具體的,可以是不同國(guó)家語(yǔ)言,都能使待轉(zhuǎn)換短語(yǔ)自動(dòng)轉(zhuǎn)換到相應(yīng)的自然語(yǔ)言。
[0111]進(jìn)一步的,如圖2所示,該方法進(jìn)一步包括:
[0112]201、每一次語(yǔ)法短語(yǔ)堆棧為空時(shí),創(chuàng)建一個(gè)與語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn)。
[0113]具體的,該節(jié)點(diǎn)用于存儲(chǔ)轉(zhuǎn)換后的代碼行。該節(jié)點(diǎn)名稱可以定義為【行+序號(hào)】,例如【行1】。
[0114]202、將通過語(yǔ)法短語(yǔ)堆棧轉(zhuǎn)換后的代碼行存于節(jié)點(diǎn)中。
[0115]具體的,將通過語(yǔ)法短語(yǔ)堆棧轉(zhuǎn)換后的代碼行存于節(jié)點(diǎn)中,為了當(dāng)語(yǔ)法短語(yǔ)堆棧和代碼行原始堆棧都為空時(shí),所有的節(jié)點(diǎn)組成代碼樹。
[0116]203、代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧均為空時(shí)結(jié)束。
[0117]204、所有節(jié)點(diǎn)形成代碼樹。
[0118]進(jìn)一步的,創(chuàng)建一個(gè)與語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn),包括:
[0119]在讀取待轉(zhuǎn)換代碼文件的所有代碼行之前,創(chuàng)建初始化節(jié)點(diǎn);
[0120]若彈出的代碼行以起始嵌套符號(hào)為開始,則在初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義子節(jié)點(diǎn)名為N;
[0121]否則,在初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義子節(jié)點(diǎn)名為N+1 ;
[0122]若彈出的代碼行以結(jié)束嵌套符號(hào)為結(jié)束,則尋找與彈出的代碼行子節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn),并記錄與子節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn)的信息。
[0123]具體的,在創(chuàng)建子節(jié)點(diǎn)的時(shí)候,對(duì)每個(gè)子節(jié)點(diǎn)進(jìn)行編號(hào);其中,編號(hào)方式根據(jù)彈出的代碼行的順序進(jìn)行編號(hào);具體的,如果是一個(gè)完整的代碼文件,則按照彈出的順序進(jìn)行編號(hào);如果是程序員正在編輯中的代碼,則是根據(jù)程序員輸入的代碼的順序進(jìn)行編號(hào)。
[0124]進(jìn)一步的,如圖3所示,該方法還包括:
[0125]301、遍歷代碼樹。
[0126]302、將初始化節(jié)點(diǎn)作為父節(jié)點(diǎn),獲取父節(jié)點(diǎn)的語(yǔ)句值,創(chuàng)建與父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句框,并在語(yǔ)句框中顯示父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句值。
[0127]303、若父節(jié)點(diǎn)存在子節(jié)點(diǎn),則獲取子節(jié)點(diǎn)中存儲(chǔ)的轉(zhuǎn)換后的代碼行的語(yǔ)句值。
[0128]304、根據(jù)子節(jié)點(diǎn)與父節(jié)點(diǎn)的預(yù)設(shè)的位置偏移量,創(chuàng)建與子節(jié)點(diǎn)的轉(zhuǎn)換后的代碼行的語(yǔ)句值對(duì)應(yīng)的語(yǔ)句框,并在語(yǔ)句框中顯示轉(zhuǎn)換后的代碼行的語(yǔ)句值。
[0129]具體的,子節(jié)點(diǎn)與父節(jié)點(diǎn)位置偏移量可以根據(jù)程序員的需求進(jìn)行設(shè)置,例如設(shè)置子節(jié)點(diǎn)與父節(jié)點(diǎn)之間為一個(gè)空格的位置偏移量;也可以根據(jù)業(yè)內(nèi)人員通用的一種習(xí)慣和規(guī)律進(jìn)行設(shè)置。對(duì)此,本實(shí)施例不作具體限定。
[0130]305、連接父節(jié)點(diǎn)與子節(jié)點(diǎn),并顯示代碼樹。
[0131]具體的,用線將父節(jié)點(diǎn)與子節(jié)點(diǎn)連接起來,生成代碼樹,并在顯示屏上顯示出來。
[0132]本發(fā)明的實(shí)施例中還提供了一種代碼轉(zhuǎn)換的方法,如圖4所示,包括:
[0133]401、獲取一個(gè)待編譯的代碼樹初始化節(jié)點(diǎn),并掃描代碼樹初始化節(jié)點(diǎn)下的所有子節(jié)點(diǎn)。
[0134]402、記錄子節(jié)點(diǎn)的總行數(shù)。
[0135]403、根據(jù)總行數(shù),創(chuàng)建自然語(yǔ)言堆棧。
[0136]具體的,根據(jù)總行數(shù),創(chuàng)建自然語(yǔ)言堆棧,是為了使創(chuàng)建的自然語(yǔ)言堆棧可以能容納后續(xù)待轉(zhuǎn)換的自然短語(yǔ),同時(shí)也不會(huì)使創(chuàng)建的太大,從而造成浪費(fèi)資源。
[0137]404、預(yù)先在子節(jié)點(diǎn)中設(shè)置自然語(yǔ)句值,獲取自然語(yǔ)句值,并將自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ)。
[0138]具體的,該分解方法與上述將代碼行分解的方法相類似。以空格、符號(hào)為分隔符,將自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ),并存儲(chǔ)到自然語(yǔ)言堆棧中,其中,符號(hào)與空格也是短語(yǔ),當(dāng)遇到符號(hào)時(shí),證明該自然語(yǔ)言分解完成。
[0139]具體的,以“變量=成績(jī)=0”為例進(jìn)行說明;例如:變量=成績(jī)=0 ;自然短語(yǔ)1:【變量】(為棧底);自然短語(yǔ)2:【=】;自然短語(yǔ)3:【成績(jī)】;自然短語(yǔ)4:【0】;自然短語(yǔ)5:【;】。
[0140]405、將待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到自然語(yǔ)言堆棧中,并按照自然語(yǔ)言堆棧順序彈出待轉(zhuǎn)換自然短語(yǔ)。
[0141]具體的,根據(jù)自然語(yǔ)言堆棧的后進(jìn)先出的順序,彈出待轉(zhuǎn)換自然短語(yǔ)。
[0142]406、遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ),則將待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ)。
[0143]具體的,在ANLVC中預(yù)設(shè)自然語(yǔ)言的對(duì)照表,該自然語(yǔ)言的對(duì)照表中存儲(chǔ)有參考短語(yǔ)及與該參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ)。若有匹配項(xiàng),將替換自然短語(yǔ)為語(yǔ)法短語(yǔ),壓入語(yǔ)法短語(yǔ)堆棧。
[0144]407、自然語(yǔ)言堆棧為空時(shí),進(jìn)行下一子節(jié)點(diǎn)的分解和轉(zhuǎn)換,直至子節(jié)點(diǎn)和自然語(yǔ)言堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。
[0145]本發(fā)明實(shí)施例提供的代碼轉(zhuǎn)換的方法,與現(xiàn)有技術(shù)中的需要程序員手動(dòng)為代碼添加標(biāo)注和解釋,并構(gòu)建代碼之間邏輯關(guān)系的流程圖,操作過程繁瑣,大大增加了程序員的工作量的方案相比,其通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將其存儲(chǔ)到堆棧中并順序彈出,根據(jù)自然語(yǔ)義對(duì)照表自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
[0146]進(jìn)一步的,遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括:
[0147]若對(duì)照表中不存在與待轉(zhuǎn)換自然短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換自然短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改待轉(zhuǎn)換自然短語(yǔ),接收到更改后的自然短語(yǔ)后,則將待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為更改后的自然短語(yǔ);或者,提示是否在對(duì)照表中增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ),若接收到增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)的指令,則在對(duì)照表中增加待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)。
[0148]本實(shí)施例中的具體解釋與上述實(shí)施例相類似,此處不做贅述。
[0149]進(jìn)一步的,如圖5所示,該方法還包括:
[0150]501、創(chuàng)建語(yǔ)法短語(yǔ)堆棧,語(yǔ)法短語(yǔ)堆棧用于存儲(chǔ)轉(zhuǎn)化后的語(yǔ)法短語(yǔ)。
[0151]502、每一次自然語(yǔ)言堆棧為空,且子節(jié)點(diǎn)無下一層子節(jié)點(diǎn),則創(chuàng)建語(yǔ)法語(yǔ)句堆棧。
[0152]503、彈出語(yǔ)法短語(yǔ)堆棧中存儲(chǔ)的轉(zhuǎn)化后的語(yǔ)法短語(yǔ),并將語(yǔ)法短語(yǔ)拼接成語(yǔ)句,壓入語(yǔ)法語(yǔ)句堆棧。
[0153]504、當(dāng)代碼樹的所有子節(jié)點(diǎn)全部轉(zhuǎn)化完成,且自然語(yǔ)言堆棧為空時(shí)結(jié)束。
[0154]505、與代碼樹所有子節(jié)點(diǎn)對(duì)應(yīng)的所有語(yǔ)法短語(yǔ)拼接成的語(yǔ)句組成代碼文件。
[0155]進(jìn)一步的,創(chuàng)建語(yǔ)法語(yǔ)句堆棧包括:
[0156]讀取子節(jié)點(diǎn);
[0157]若子節(jié)點(diǎn)是第一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化開始前壓入嵌套起始語(yǔ)法符號(hào);具體的,嵌套起始語(yǔ)法符號(hào)包括但不限于“ {”。
[0158]若子節(jié)點(diǎn)是最后一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化結(jié)束后壓入嵌套結(jié)束語(yǔ)法符號(hào);具體的,嵌套結(jié)束語(yǔ)法符號(hào)包括但不限于“} ”。
[0159]進(jìn)一步的,如圖6所示,該方法還包括:
[0160]601、在語(yǔ)法語(yǔ)句堆棧中,順序彈出語(yǔ)句。
[0161]具體的,按照語(yǔ)法語(yǔ)句堆棧后進(jìn)先出的順序,彈出語(yǔ)句。
[0162]602、在語(yǔ)句末尾增加與語(yǔ)句對(duì)應(yīng)的自然語(yǔ)義及與相應(yīng)的注釋符號(hào)。
[0163]具體的,注釋符號(hào)可以為【//】。
[0164]603、對(duì)代碼樹進(jìn)行編碼,并將編碼結(jié)果添加到注釋符號(hào)末尾。
[0165]具體的,編碼的方法與上述創(chuàng)建子節(jié)點(diǎn)時(shí)的編碼方法相類似,本實(shí)施例對(duì)此不做贅述。
[0166]604、若語(yǔ)法語(yǔ)句堆棧為空,則顯示整個(gè)代碼文件。
[0167]進(jìn)一步的,順序彈出語(yǔ)句,包括:
[0168]通過嵌套開始語(yǔ)法符號(hào)與嵌套結(jié)束語(yǔ)法符號(hào)的層數(shù),確定代碼的縮進(jìn)空格數(shù),并順序彈出語(yǔ)句。
[0169]具體的,縮進(jìn)空格數(shù)可由程序員自行設(shè)置,或者根據(jù)業(yè)內(nèi)的通用習(xí)慣和規(guī)則確定該空格數(shù);其中,最后形成的代碼文件每行由三部分組成:編譯后語(yǔ)法語(yǔ)句+自然語(yǔ)義自動(dòng)注釋+ANLVC節(jié)點(diǎn)編碼。
[0170]本實(shí)施例中,結(jié)合上述提供的ANLVC,如圖7所示,以預(yù)先編好的一個(gè)完整的代碼文件為例具體說明該ANLVC的使用方法:
[0171]701、在系統(tǒng)中安裝一個(gè)ANLVC。
[0172]具體的,該ANLVC可以安裝在其他開發(fā)平臺(tái)項(xiàng)目目錄下。
[0173]702、在ANLVC圖形界面中,從其他開發(fā)平臺(tái)導(dǎo)入一個(gè)已有的代碼文件。
[0174]703、接收程序員選擇ANLVC節(jié)點(diǎn)的命令,并打開與程序員的選擇對(duì)應(yīng)的ANLVC節(jié)點(diǎn)。
[0175]704、判斷是否接收到程序員輸入的創(chuàng)建新ANLVC節(jié)點(diǎn)的命令。
[0176]705、若是,創(chuàng)建一個(gè)新ANLVC節(jié)點(diǎn),在該新ANLVC節(jié)點(diǎn)中,顯示輸入/修改對(duì)話框。
[0177]706、若否,在ANLVC節(jié)點(diǎn)中,顯示輸入/修改對(duì)話框。
[0178]707、在輸入/修改對(duì)話框中,接收程序員輸入的輸入/修改語(yǔ)句。
[0179]708、判斷輸入/修改語(yǔ)句中是否需要增加自然語(yǔ)法定義。
[0180]709、若是,則顯示自然語(yǔ)法對(duì)照表,用以供程序員編輯。
[0181]具體的,程序員將輸入/修改的語(yǔ)句增加到自然語(yǔ)法對(duì)照表中,并保存。
[0182]710、若否,則當(dāng)檢查輸入/修改語(yǔ)句預(yù)編譯無誤時(shí),保存ANLVC節(jié)點(diǎn)。
[0183]具體的,對(duì)進(jìn)行自然語(yǔ)義預(yù)編譯,使所有的輸入語(yǔ)句都有對(duì)應(yīng)的開發(fā)語(yǔ)言池對(duì)應(yīng),并讓每一個(gè)ANLVC節(jié)點(diǎn)在編譯通過后自動(dòng)保存。
[0184]711、判斷是否接收到程序員更改ANLVC代碼的邏輯關(guān)系命令。
[0185]712、若是,則進(jìn)入ANLVC代碼的邏輯關(guān)系編輯模式;若否,則執(zhí)行717及后續(xù)步驟。
[0186]713、接收程序員拖動(dòng)節(jié)點(diǎn)框的命令,并變更ANLVC代碼的嵌套關(guān)系。
[0187]714、判斷是否接收到程序員輸入的生成NLVC代碼的復(fù)用關(guān)系命令。
[0188]715、若是,則當(dāng)接收程序員拖動(dòng)復(fù)用節(jié)點(diǎn)的命令后,自動(dòng)生成復(fù)用關(guān)系。
[0189]716、判斷是否接收到程序員輸入的所有ANLVC代碼關(guān)系編輯完成的命令。
[0190]717、若是,則將ANLVC節(jié)點(diǎn)進(jìn)行編譯,生成ANLVC代碼樹;若否,則繼續(xù)執(zhí)行步驟713。
[0191]718、同步ANLVC代碼樹與源代碼。
[0192]719、將ANLVC代碼樹提交回系統(tǒng),結(jié)束流程。
[0193]參考圖1所示方法的實(shí)現(xiàn),本實(shí)施例還提供了一種代碼轉(zhuǎn)換的裝置,用以實(shí)現(xiàn)圖1所示的方法。如圖8所示,所述裝置包括:讀取單元81、記錄單元82、倉(cāng)Il建單元83、壓入單元84、第一彈出單元85、分解單元86、存儲(chǔ)單元87、第二彈出單元88以及轉(zhuǎn)換單元89,其中,
[0194]讀取單元81,用于讀取待轉(zhuǎn)換代碼文件的所有代碼行;
[0195]記錄單元82,與讀取單元81連接,用于記錄讀取單元81讀取的待轉(zhuǎn)換代碼文件的所有代碼行總行數(shù);
[0196]創(chuàng)建單元83,與記錄單元82連接,用于根據(jù)記錄單元82記錄的總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧;
[0197]壓入單元84,與創(chuàng)建單元83連接,用于將所有代碼行逐行壓入創(chuàng)建單元83創(chuàng)建的代碼行原始堆棧中;
[0198]第一彈出單元85,與壓入單元84連接,用于在壓入單元84壓入的代碼行原始堆棧中,按照原始堆棧順序,逐行彈出代碼行;
[0199]分解單元86,與第一彈出單元85連接,用于將第一彈出單元85彈出的代碼行分解為待轉(zhuǎn)換短語(yǔ);
[0200]存儲(chǔ)單元88,與分解單元86連接,用于將分解單元86分解的待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到語(yǔ)法短語(yǔ)堆棧中;
[0201]第二彈出單元88,與存儲(chǔ)單元88連接,用于按照堆棧順序彈出存儲(chǔ)單元88存儲(chǔ)的待轉(zhuǎn)換短語(yǔ);[0202]轉(zhuǎn)換單元89,與第二彈出單元88連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與第二彈出單元88彈出的待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),將第二彈出單元88彈出的待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
[0203]本發(fā)明實(shí)施例提供的代碼轉(zhuǎn)換的裝置,與現(xiàn)有技術(shù)中的需要程序員手動(dòng)為代碼添加標(biāo)注和解釋,并構(gòu)建代碼之間邏輯關(guān)系的流程圖,操作過程繁瑣,大大增加了程序員的工作量的方案相比,其通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將其存儲(chǔ)到堆棧中并順序彈出,根據(jù)自然語(yǔ)義對(duì)照表自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
[0204]參考圖4所示方法的實(shí)現(xiàn),本實(shí)施例還提供了一種代碼轉(zhuǎn)換的裝置,用以實(shí)現(xiàn)圖4所示的方法。如圖9所示,所述裝置包括:第一獲取單元91、掃描單元92、記錄單元93、倉(cāng)Li建單元94、第二獲取單元95、分解單元96、存儲(chǔ)單元97以及轉(zhuǎn)換單元98,其中,
[0205]第一獲取單元91,用于獲取一個(gè)待編譯的代碼樹根節(jié)點(diǎn);
[0206]掃描單元92,與第一獲取單元91連接,用于掃描第一獲取單元91獲取的代碼樹根節(jié)點(diǎn)下的所有代碼樹子節(jié)點(diǎn);
[0207]記錄單元93,與掃描單元92連接,用于記錄掃描單元92掃描的子節(jié)點(diǎn)的總行數(shù);
[0208]創(chuàng)建單元94,與記錄單元93連接,用于根據(jù)記錄單元93記錄的總行數(shù),創(chuàng)建自然語(yǔ)目堆棧;
[0209]第二獲取單元95,與創(chuàng)建單元94連接,用于從創(chuàng)建單元94創(chuàng)建的自然語(yǔ)言堆棧中獲取自然語(yǔ)句值;
[0210]分解單元96,與第二獲取單元95連接,用于將第二獲取單元95獲取的自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ);
[0211 ] 存儲(chǔ)單元97,與分解單元96連接,用于將分解單元96分解得到的待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到自然語(yǔ)言堆棧中;
[0212]轉(zhuǎn)換單元98,與存儲(chǔ)單元97連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若對(duì)照表中存在與存儲(chǔ)單元97存儲(chǔ)的待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ),則將存儲(chǔ)單元97存儲(chǔ)的待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為對(duì)照表中與參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ)。
[0213]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0214]本發(fā)明實(shí)施例提供的代碼轉(zhuǎn)換的裝置,與現(xiàn)有技術(shù)中的需要程序員手動(dòng)為代碼添加標(biāo)注和解釋,并構(gòu)建代碼之間邏輯關(guān)系的流程圖,操作過程繁瑣,大大增加了程序員的工作量的方案相比,其通過讀取待轉(zhuǎn)化代碼文件中的代碼或者待轉(zhuǎn)換的代碼樹,將其存儲(chǔ)到堆棧中并順序彈出,根據(jù)自然語(yǔ)義對(duì)照表自動(dòng)實(shí)現(xiàn)代碼與自然語(yǔ)言之間的相互轉(zhuǎn)換,避免了程序員手動(dòng)為代碼添加標(biāo)注和解釋,大大減少了程序員工作量,并且能夠直觀的顯示代碼直接的邏輯關(guān)系,同時(shí),在不同的情況下,代碼可以選擇不同的表示形式,方便創(chuàng)建、查看及維護(hù)代碼。
[0215]具體的,現(xiàn)有代碼編輯器,都是對(duì)源代碼進(jìn)行直接操作,對(duì)代碼之間的關(guān)系,通過代碼本身的排版與符號(hào)進(jìn)行注明,比如通過大括號(hào)來注明代碼塊或者通過縮進(jìn)代碼位置來標(biāo)明代碼的包含與被包含關(guān)系,這些表示方式,都不直觀,同時(shí)易于出錯(cuò),尤其是當(dāng)循環(huán)關(guān)系、嵌套關(guān)系多了以后,就容易造成多個(gè)符號(hào)之間的歧義或難以閱讀;比如連續(xù)5個(gè)符號(hào),會(huì)導(dǎo)致代碼之間的關(guān)系很難閱讀理解,本發(fā)明實(shí)施例提供的ANLVC代碼編輯系統(tǒng)是通過代碼流程關(guān)系樹圖形化界面進(jìn)行創(chuàng)建、更新及維護(hù)操作,并且ANLVC代碼編輯系統(tǒng)直接將流程圖的邏輯性變成了代碼樹,在編寫、維護(hù)代碼時(shí)更有邏輯、更直觀。
[0216]現(xiàn)有代碼編輯器,只有一種呈現(xiàn)方法,就是代碼行源文件,沒有多種呈現(xiàn)閱讀方式,例如顯示成易于理解的流程圖形式,表示形式單一,而本實(shí)施例中提供的ANLVC代碼編輯系統(tǒng),可以用代碼行、流程圖、樹圖、網(wǎng)絡(luò)圖等多種形式表示代碼。在不同的情況下,可以選擇不同的表示形式,方便創(chuàng)建、查看、維護(hù)代碼。
[0217]現(xiàn)有代碼編輯器,在更新源代碼時(shí),只能通過源代碼文件去修改,即直接修改代碼文件,大大提高了修改錯(cuò)誤的風(fēng)險(xiǎn),并且由于代碼語(yǔ)句之間用很多嵌套符號(hào)表明關(guān)系,代碼的多復(fù)關(guān)系在表示上難以理清,故很多程序錯(cuò)誤隱藏得比較深,導(dǎo)致在修改時(shí)會(huì)留下其他難以察覺的BUG隱患,而本發(fā)明實(shí)施例提供的ANLVC代碼編輯系統(tǒng),通過代碼流程關(guān)系圖的創(chuàng)建及修改,直接形成了對(duì)代碼文件的修改,直接針對(duì)代碼流程圖的邏輯上的修改就可以準(zhǔn)確同步到對(duì)代碼的修改上,提高代碼編寫與維護(hù)的可靠性與準(zhǔn)確性,同時(shí),代碼的多重嵌套關(guān)系,在代碼流程關(guān)系圖等直觀圖形表示上,顯示簡(jiǎn)潔、清晰,在修改某處功能或邏輯上,不容易形成對(duì)其他代碼塊的誤操作,大大降低了留下其他BUG隱患的可能性。
[0218]現(xiàn)有的代碼編輯器,由于代碼的難以閱讀,往往除了親自編寫代碼的本人以外,其他程序要消化并修改其代碼非常困難。通常原創(chuàng)人員在編寫代碼時(shí),會(huì)編寫代碼流程圖和源代碼注釋,但代碼流程圖與源代碼及注釋幾者之間,僅僅是描述關(guān)系,而不是直接關(guān)系,代碼流程圖不能直接生成源代碼,源代碼也不能直接轉(zhuǎn)換成代碼流程圖,而注釋也僅僅是一種閱讀提示,修改注釋對(duì)修改代碼來說并沒有幫助,故一份源代碼寫時(shí),只有原創(chuàng)程序作者最清楚意圖,這種程序意圖無法通過注釋與描述性流程文件充分表達(dá)的,所以很難移交給別人去維護(hù)更新,也很難做到真正的他人共享與傳承,同時(shí),在協(xié)同分工的項(xiàng)目中,也存在歧義與不同步的諸多風(fēng)險(xiǎn),而本實(shí)施例提供的ANLVC代碼編輯器,可在流程圖、樹圖、網(wǎng)絡(luò)圖等圖形界面上直接完成代碼的編寫工作,這就大大提高了源代碼移交給他人進(jìn)行傳承的準(zhǔn)確性、可維護(hù)性。
[0219]使用傳統(tǒng)的代碼編輯器,對(duì)源代碼進(jìn)行嚴(yán)格的代碼流程圖、代碼注釋管理,要求所有的代碼都有相應(yīng)的代碼流程圖與代碼注釋,但是代碼流程圖與注釋、代碼之間本來沒有直接的自動(dòng)關(guān)聯(lián)關(guān)系,導(dǎo)致容易出現(xiàn)差異,比如代碼流程圖并沒有完全充分地表述源代碼的邏輯與細(xì)節(jié),而注釋也并沒有完全充分地表示源代碼的邏輯與細(xì)節(jié),故需要程序員還需要額外維護(hù)代碼圖與代碼注釋,不僅增加了程序的工作負(fù)擔(dān),也使代碼工作效率變得低下,而本發(fā)明實(shí)施例提供的ANLVC代碼編輯器,集成了代碼流程圖、源代碼與代碼注釋功能,任何一個(gè)操作,都會(huì)自動(dòng)形成代碼流程關(guān)系圖、源代碼與代碼注釋的同步更新,這就大大減輕了程序員的工作負(fù)擔(dān),也避免了人工更新出現(xiàn)差異的風(fēng)險(xiǎn)。[0220]現(xiàn)有代碼編寫技術(shù)中,程序員必須嚴(yán)格按編程語(yǔ)言的非自然語(yǔ)言進(jìn)行代碼編排,只能通過英文的保留字進(jìn)行變量、函數(shù)、方法、類等進(jìn)行結(jié)構(gòu)化定義,同時(shí)英文保留字中必須按規(guī)則插入各種數(shù)字、符號(hào)等。這些都不符合功能設(shè)計(jì)時(shí)的自然語(yǔ)言規(guī)則。程序功能在需求設(shè)計(jì)時(shí),大都是用接近自然語(yǔ)言的描述性語(yǔ)句進(jìn)行確立,但這些自然語(yǔ)言的描述都必須按嚴(yán)格的規(guī)則,被程序員分解成開發(fā)語(yǔ)言的規(guī)則元素進(jìn)行代碼編排,因?yàn)楣δ芘c代碼之間,有一道翻譯的鴻溝與不匹配的風(fēng)險(xiǎn),故程序員只能通過非自然語(yǔ)言的嚴(yán)格規(guī)則進(jìn)行編寫,源代碼文件相對(duì)于工作與生活語(yǔ)言來說,顯得生澀難懂,難予理解,而本發(fā)明實(shí)施例提供的ANLVC代碼編輯器,可以對(duì)開發(fā)語(yǔ)言中的保留字、語(yǔ)句進(jìn)行自然語(yǔ)言定義,定義后的語(yǔ)句,在輸入代碼編輯器中,會(huì)自動(dòng)轉(zhuǎn)換成符合開發(fā)語(yǔ)言元素與規(guī)則的語(yǔ)法。
[0221]例如if SCOre〈60{grade=D},可以定義為:“如果得分低于60,則等級(jí)為D”,則ANLVC將會(huì)識(shí)別這個(gè)自然語(yǔ)言并自動(dòng)轉(zhuǎn)換成語(yǔ)法代碼。這就是ANLVC可以通過近似自然語(yǔ)言的定義方法,改善開發(fā)語(yǔ)言的編寫習(xí)慣。
[0222]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種代碼轉(zhuǎn)換的方法,其特征在于,包括: 讀取待轉(zhuǎn)換代碼文件的所有代碼行,并記錄總行數(shù); 根據(jù)所述總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧,并將所有所述代碼行逐行壓入所述代碼行原始堆棧中; 在所述代碼行原始堆棧中,按照所述原始堆棧順序,逐行彈出代碼行; 將當(dāng)前彈出的所述代碼行分解為待轉(zhuǎn)換短語(yǔ); 將所述待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到所述語(yǔ)法短語(yǔ)堆棧中,并按照所述語(yǔ)法短語(yǔ)堆棧順序彈出所述待轉(zhuǎn)換短語(yǔ); 遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若所述對(duì)照表中存在與所述待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則將所述待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為所述對(duì)照表中與所述參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言; 所述語(yǔ)法短語(yǔ)堆棧為空時(shí),進(jìn)行下一代碼行的分解和轉(zhuǎn)換,直至所述代碼行原始堆棧和所述語(yǔ)法短語(yǔ)堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。`
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括: 若所述對(duì)照表中不存在與所述待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改所述待轉(zhuǎn)換短語(yǔ),接收到更改后的短語(yǔ)后,則將所述待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為所述更改后的短語(yǔ);或者,提示是否在所述對(duì)照表中增加所述待轉(zhuǎn)換短語(yǔ)對(duì)應(yīng)為參考短語(yǔ),若接收到增加所述待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)的指令,則在所述對(duì)照表中增加所述待轉(zhuǎn)換短語(yǔ)為參考短語(yǔ)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 每一次所述語(yǔ)法短語(yǔ)堆棧為空時(shí),創(chuàng)建一個(gè)與所述語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn); 將通過所述語(yǔ)法短語(yǔ)堆棧轉(zhuǎn)換后的所述代碼行存于所述節(jié)點(diǎn)中; 所述代碼行原始堆棧和所述語(yǔ)法短語(yǔ)堆棧均為空時(shí)結(jié)束; 所有所述節(jié)點(diǎn)形成代碼樹; 所述創(chuàng)建一個(gè)與所述語(yǔ)法短語(yǔ)堆棧內(nèi)存儲(chǔ)的待轉(zhuǎn)換短語(yǔ)所屬代碼行對(duì)應(yīng)的節(jié)點(diǎn),包括: 在所述讀取待轉(zhuǎn)換代碼文件的所有代碼行之前,倉(cāng)Il建初始化節(jié)點(diǎn); 若彈出的所述代碼行以起始嵌套符號(hào)為開始,則在所述初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義所述子節(jié)點(diǎn)名為N; 否則,在所述初始化節(jié)點(diǎn)中,創(chuàng)建一個(gè)子節(jié)點(diǎn),定義所述子節(jié)點(diǎn)名為N+1 ; 若彈出的所述代碼行以結(jié)束嵌套符號(hào)為結(jié)束,則尋找與所述代碼行子節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn),并記錄與所述子節(jié)點(diǎn)對(duì)應(yīng)的所述父節(jié)點(diǎn)的信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 遍歷所述代碼樹; 將所述初始化節(jié)點(diǎn)作為父節(jié)點(diǎn),獲取所述父節(jié)點(diǎn)的語(yǔ)句值,創(chuàng)建與所述父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句框,并在所述語(yǔ)句框中顯示所述父節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)句值; 若所述父節(jié)點(diǎn)存在子節(jié)點(diǎn),則獲取所述子節(jié)點(diǎn)中存儲(chǔ)的所述轉(zhuǎn)換后的代碼行的語(yǔ)句值; 根據(jù)子節(jié)點(diǎn)與父節(jié)點(diǎn)的預(yù)設(shè)的位置偏移量,創(chuàng)建與所述子節(jié)點(diǎn)的轉(zhuǎn)換后的代碼行的語(yǔ)句值對(duì)應(yīng)的語(yǔ)句框,并在所述語(yǔ)句框中顯示所述轉(zhuǎn)換后的代碼行的語(yǔ)句值; 連接所述父節(jié)點(diǎn)與所述子節(jié)點(diǎn),并顯示所述代碼樹。
5.一種代碼轉(zhuǎn)換的方法,其特征在于,包括: 獲取一個(gè)待編譯的代碼樹初始化節(jié)點(diǎn),并掃描所述代碼樹初始化節(jié)點(diǎn)下的所有子節(jié)占.記錄所述子節(jié)點(diǎn)的總行數(shù); 根據(jù)所述總行數(shù),創(chuàng)建自然語(yǔ)言堆棧; 預(yù)先在所述子節(jié)點(diǎn)中設(shè)置自然語(yǔ)句值,獲取所述自然語(yǔ)句值,并將所述自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ); 將所述待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到所述自然語(yǔ)言堆棧中,并按照所述自然語(yǔ)言堆棧順序彈出所述待轉(zhuǎn)換自然短語(yǔ); 遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若所述對(duì)照表中存在與所述待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ), 則將所述待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為所述對(duì)照表中與所述參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ); 所述自然語(yǔ)言堆棧為空時(shí),進(jìn)行下一子節(jié)點(diǎn)的分解和轉(zhuǎn)換,直至所述子節(jié)點(diǎn)和自然語(yǔ)言堆棧均為空時(shí),結(jié)束轉(zhuǎn)換。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,還包括: 若所述對(duì)照表中不存在與所述待轉(zhuǎn)換自然短語(yǔ)相同的參考短語(yǔ),則保留原待轉(zhuǎn)換自然短語(yǔ),不進(jìn)行轉(zhuǎn)換;或者,提示是否更改所述待轉(zhuǎn)換自然短語(yǔ),接收到更改后的自然短語(yǔ)后,則將所述待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為所述更改后的自然短語(yǔ);或者,提示是否在所述對(duì)照表中增加所述待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ),若接收到增加所述待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)的指令,則在所述對(duì)照表中增加所述待轉(zhuǎn)換自然短語(yǔ)為參考短語(yǔ)。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 創(chuàng)建語(yǔ)法短語(yǔ)堆棧,所述語(yǔ)法短語(yǔ)堆棧用于存儲(chǔ)轉(zhuǎn)化后的所述語(yǔ)法短語(yǔ); 每一次所述自然語(yǔ)言堆棧為空,且所述子節(jié)點(diǎn)無下一層子節(jié)點(diǎn),則創(chuàng)建語(yǔ)法語(yǔ)句堆棧; 彈出所述語(yǔ)法短語(yǔ)堆棧中存儲(chǔ)的轉(zhuǎn)化后的語(yǔ)法短語(yǔ),并將所述語(yǔ)法短語(yǔ)拼接成語(yǔ)句,壓入所述語(yǔ)法語(yǔ)句堆棧; 當(dāng)所述代碼樹的所有子節(jié)點(diǎn)全部轉(zhuǎn)化完成,且所述自然語(yǔ)言堆棧為空時(shí)結(jié)束; 與所述代碼樹所有子節(jié)點(diǎn)對(duì)應(yīng)的所有所述語(yǔ)法短語(yǔ)拼接成的語(yǔ)句組成代碼文件; 所述創(chuàng)建語(yǔ)法語(yǔ)句堆棧包括: 讀取所述子節(jié)點(diǎn); 若所述子節(jié)點(diǎn)是第一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化開始前壓入嵌套起始語(yǔ)法符號(hào); 若所述子節(jié)點(diǎn)是最后一個(gè)子節(jié)點(diǎn),在轉(zhuǎn)化結(jié)束后壓入嵌套結(jié)束語(yǔ)法符號(hào)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 在所述語(yǔ)法語(yǔ)句堆棧中,順序彈出所述語(yǔ)句;在所述語(yǔ)句末尾增加與所述語(yǔ)句對(duì)應(yīng)的自然語(yǔ)義及與相應(yīng)的注釋符號(hào); 對(duì)所述代碼樹進(jìn)行編碼,并將編碼結(jié)果添加到所述注釋符號(hào)末尾; 若所述語(yǔ)法語(yǔ)句堆棧為空,則顯示整個(gè)代碼文件; 所述順序彈出所述語(yǔ)句,包括: 通過嵌套開始語(yǔ)法符號(hào)與嵌套結(jié)束語(yǔ)法符號(hào)的層數(shù),確定代碼的縮進(jìn)空格數(shù),并順序彈出所述語(yǔ)句。
9.一種代碼轉(zhuǎn)換的裝置,其特征在于,包括: 讀取單元,用于讀取待轉(zhuǎn)換代碼文件的所有代碼行; 記錄單元,與所述讀取單元連接,用于記錄所述讀取單元讀取的所述待轉(zhuǎn)換代碼文件的所有代碼行總行數(shù); 創(chuàng)建單元,與所述記錄單元連接,用于根據(jù)所述記錄單元記錄的所述總行數(shù),創(chuàng)建代碼行原始堆棧和語(yǔ)法短語(yǔ)堆棧; 壓入單元,與所述創(chuàng)建單元連接,用于將所述所有代碼行逐行壓入所述創(chuàng)建單元?jiǎng)?chuàng)建的所述代碼行原始堆棧中;` 第一彈出單元,與所述壓入單元連接,用于在所述壓入單元壓入的所述代碼行原始堆棧中,按照所述原始堆棧順序,逐行彈出代碼行; 分解單元,與所述第一彈出單元連接,用于將所述第一彈出單元彈出的所述代碼行分解為待轉(zhuǎn)換短語(yǔ); 存儲(chǔ)單元,與所述分解單元連接,用于將所述分解單元分解的所述待轉(zhuǎn)換短語(yǔ)存儲(chǔ)到所述語(yǔ)法短語(yǔ)堆棧中; 第二彈出單元,與所述存儲(chǔ)單元連接,用于按照所述堆棧順序彈出所述存儲(chǔ)單元存儲(chǔ)的所述待轉(zhuǎn)換短語(yǔ); 轉(zhuǎn)換單元,與所述第二彈出單元連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若所述對(duì)照表中存在與所述第二彈出單元彈出的所述待轉(zhuǎn)換短語(yǔ)相同的參考短語(yǔ),將所述第二彈出單元彈出的所述待轉(zhuǎn)換短語(yǔ)轉(zhuǎn)換為所述對(duì)照表中與所述參考短語(yǔ)對(duì)應(yīng)的自然語(yǔ)言。
10.一種代碼轉(zhuǎn)換的裝置,其特征在于,包括: 第一獲取單元,用于獲取一個(gè)待編譯的代碼樹根節(jié)點(diǎn); 掃描單元,與所述第一獲取單元連接,用于掃描所述第一獲取單元獲取的所述代碼樹根節(jié)點(diǎn)下的所有代碼樹子節(jié)點(diǎn); 記錄單元,與所述掃描單元連接,用于記錄掃描單元掃描的所述子節(jié)點(diǎn)的總行數(shù); 創(chuàng)建單元,與所述記錄單元連接,用于根據(jù)所述記錄單元記錄的所述總行數(shù),創(chuàng)建自然語(yǔ)目堆棧; 第二獲取單元,與所述創(chuàng)建單元連接,用于從所述創(chuàng)建單元?jiǎng)?chuàng)建的所述自然語(yǔ)言堆棧中獲取所述自然語(yǔ)句值; 分解單元,與所述第二獲取單元連接,用于將所述第二獲取單元獲取的所述自然語(yǔ)句值分解為待轉(zhuǎn)換自然短語(yǔ); 存儲(chǔ)單元,與所述分解單元連接,用于將所述分解單元分解得到的所述待轉(zhuǎn)換自然短語(yǔ)存儲(chǔ)到所述自然語(yǔ)言堆棧中;轉(zhuǎn)換單元,與所述存儲(chǔ)單元連接,用于遍歷預(yù)設(shè)的參考短語(yǔ)與自然語(yǔ)言的對(duì)照表,若所述對(duì)照表中存在與所述存儲(chǔ)單元存儲(chǔ)的所述待轉(zhuǎn)自然換短語(yǔ)相同的參考短語(yǔ),則將所述存儲(chǔ)單元存儲(chǔ)的 待轉(zhuǎn)換自然短語(yǔ)轉(zhuǎn)換為所述對(duì)照表中與所述參考短語(yǔ)對(duì)應(yīng)的語(yǔ)法短語(yǔ)。
【文檔編號(hào)】G06F9/45GK103645931SQ201310728292
【公開日】2014年3月19日 申請(qǐng)日期:2013年12月25日 優(yōu)先權(quán)日:2013年12月25日
【發(fā)明者】盛杰 申請(qǐng)人:盛杰