本技術涉及編程語言轉換,尤其涉及一種代碼轉換方法、裝置及介質(zhì)。
背景技術:
1、現(xiàn)有技術中,不同編程語言之間的代碼轉換工具在進行代碼轉換時,由于復雜的語言結構,轉換結果往往不準確或不完整。例如,在將c語言轉換為java時,由于c語言和java語言在語法和與以上存在顯著差異,c語言允許低級操作,如指針操作和內(nèi)存管理,而java語言禁止直接的內(nèi)存操作,導致轉換過程中無法正確處理上述代碼轉換。此外,由于不同編程語言之間無法直接通信,因此轉換后的代碼也無法與其他語言的代碼進行通信。
技術實現(xiàn)思路
1、本技術實施例提供了一種代碼轉換方法、裝置及介質(zhì),用以解決代碼轉換不準確以及無法進行通信的問題。
2、第一方面,本技術實施例提供了一種代碼轉換方法,包括:
3、基于待轉換的第一語言代碼和預設的代碼映射關系,構建基于第二語言的抽象語法樹;所述代碼映射關系為:第一語言與第二語言之間針對設定代碼的映射關系;
4、基于第二語言的語法規(guī)則遍歷所述抽象語法樹,得到至少一個第二語言的代碼片段;
5、針對任意一個所述代碼片段,確定所述代碼片段中目標類型數(shù)據(jù)的屬性參數(shù)信息后,將基于所述屬性參數(shù)信息生成的屬性代碼,添加到所述代碼片段中,得到第二語言的代碼;所述屬性參數(shù)信息用于將所述目標類型數(shù)據(jù),轉換成可被第一語言或第二語言的代碼使用的數(shù)據(jù)形式。
6、基于上述方案,預先構建的第一語言與第二語言之間針對設定代碼間的映射關系,并基于映射關系與待轉換的第一語言代碼構建抽象語法樹,進而遍歷語法樹得到第二語言的代碼片段。進一步地,將目標類型數(shù)據(jù)參數(shù)信息對應的屬性代碼添加到代碼片段中,得到第二語言的代碼。本技術通過預設的代碼映射關系對設定代碼進行轉換,可以保證代碼轉換的準確性。進一步地,屬性參數(shù)信息用于將目標類型數(shù)據(jù)轉換成可被第一語言或第二語言的代碼使用的數(shù)據(jù)類型,進而使得轉換后的代碼能夠與其他語言的代碼進行通信。
7、在一種可能的實現(xiàn)方式中,所述基于待轉換的第一語言代碼和預設的代碼映射關系,構建基于第二語言的抽象語法樹,包括:
8、基于詞法識別規(guī)則對所述第一語言代碼進行識別,得到語法元素;
9、基于所述代碼映射關系和所述語法元素,構建基于第二語言的抽象語法樹。
10、基于上述方案,本技術通過詞法識別規(guī)則對第一語言的代碼進行詞法分析,進而能夠識別出基本的語言元素,以便于根據(jù)語法元素和代碼映射關系構建抽象語法樹,進而避免手動轉換的繁瑣操作。
11、在一種可能的實現(xiàn)方式中,所述基于所述代碼映射關系和所述語法元素,構建基于第二語言的抽象語法樹,包括:
12、基于所述代碼映射關系,對所述第一語言代碼中的設定代碼進行轉換,得到初始轉換代碼;
13、根據(jù)所述初始轉換代碼和所述語法元素,構建第二語言的抽象語法樹。
14、基于上述方案,基于代碼映射關系對設定代碼進行轉換,使得構建的抽象語法樹更為準確和完整。
15、在一種可能的實現(xiàn)方式中,所述基于第二語言的語法規(guī)則遍歷所述抽象語法樹,得到至少一個第二語言的代碼片段,包括:
16、針對所述第一語言代碼中的任意一個結構體,執(zhí)行以下操作:
17、確定所述抽象語法樹中,所述結構體對應的至少一個樹節(jié)點;
18、基于所述至少一個樹節(jié)點和所述第二語言的語法規(guī)則,確定所述結構體對應的第二語言的代碼片段。
19、通過上述方案,基于語法樹的轉換方法能夠準確捕捉第一語言的結構和語義,生成符合第二語言規(guī)范的代碼,可以減少人為轉換可能出現(xiàn)的錯誤,轉換準確性高。
20、在一種可能的實現(xiàn)方式中,所述屬性參數(shù)信息包括數(shù)據(jù)的存儲數(shù)據(jù)格式、序列化參數(shù)和反序列化參數(shù);
21、其中,所述序列化參數(shù)用于將所述目標類型數(shù)據(jù)轉換成可被第一語言的代碼使用的數(shù)據(jù)形式,所述反序列化參數(shù)用于將所述目標類型數(shù)據(jù)轉換成可被第二語言的代碼使用的數(shù)據(jù)形式。
22、基于上述方案,通過在代碼中添加數(shù)據(jù)的存儲數(shù)據(jù)格式、序列化參數(shù)和反序列化參數(shù),可以將目標類型數(shù)據(jù)轉換成可被第一語言或第二語言的代碼使用的數(shù)據(jù)形式,進而實現(xiàn)代碼間的通信和交互。
23、在一種可能的實現(xiàn)方式中,所述第一語言代碼是通過如下方式獲得的:
24、獲取待轉換的代碼文件;
25、確定所述待轉換的代碼文件中的頭文件,并基于編譯器將對所述頭文件識別,得到待轉換的第一語言代碼。
26、基于上述方案,基于編譯器將對文件進行識別展開后,得到的第一語言代碼更完整,進而使得轉換后的代碼更完整和準確。
27、在一種可能的實現(xiàn)方式中,所述方法還包括:
28、在構建基于第二語言的抽象語法樹之前,將第一語言代碼中每個結構體的名稱和存儲路徑,分別寫入所述第一語言代碼;
29、以及,針對任意一個第二語言的代碼片段,所述方法還包括:
30、確定所述代碼片段中的目標存儲路徑以及所述結構體對應的目標類名;
31、將所述代碼片段的文件名設置為目標類名,并將所述代碼片段的文件保存在所述目標存儲路徑。
32、基于上述方案,通過將生成的第二語言的代碼片段的文件保存在相應的目標存儲路徑,可以便于該代碼文件能夠被其他代碼直接訪問和使用。
33、第二方面,本技術實施例提供了一種代碼轉換裝置,包括:
34、第一處理模塊,用于基于待轉換的第一語言代碼和預設的代碼映射關系,構建基于第二語言的抽象語法樹;所述代碼映射關系為:第一語言與第二語言之間針對設定代碼的映射關系;
35、基于第二語言的語法規(guī)則遍歷所述抽象語法樹,得到至少一個第二語言的代碼片段;
36、第二處理模塊,用于針對任意一個所述代碼片段,確定所述代碼片段中目標類型數(shù)據(jù)的屬性參數(shù)信息后,將基于所述屬性參數(shù)信息生成的屬性代碼,添加到所述代碼片段中,得到第二語言的代碼;所述屬性參數(shù)信息用于將所述目標類型數(shù)據(jù),轉換成可被第一語言或第二語言的代碼使用的數(shù)據(jù)形式。
37、在一種可能的實現(xiàn)方式中,所述第一處理模塊,在基于待轉換的第一語言代碼和預設的代碼映射關系,構建基于第二語言的抽象語法樹時,具體用于:
38、基于詞法識別規(guī)則對所述第一語言代碼進行識別,得到語法元素;
39、基于所述代碼映射關系和所述語法元素,構建基于第二語言的抽象語法樹。
40、在一種可能的實現(xiàn)方式中,所述第一處理模塊,在基于所述代碼映射關系和所述語法元素,構建基于第二語言的抽象語法樹時,具體用于:
41、基于所述代碼映射關系,對所述第一語言代碼中的設定代碼進行轉換,得到初始轉換代碼;
42、根據(jù)所述初始轉換代碼和所述語法元素,構建第二語言的抽象語法樹。
43、在一種可能的實現(xiàn)方式中,所述第一處理模塊,在基于第二語言的語法規(guī)則遍歷所述抽象語法樹,得到至少一個第二語言的代碼片段時,具體用于:
44、針對所述第一語言代碼中的任意一個結構體,執(zhí)行以下操作:
45、確定所述抽象語法樹中,所述結構體對應的至少一個樹節(jié)點;
46、基于所述至少一個樹節(jié)點和所述第二語言的語法規(guī)則,確定所述結構體對應的第二語言的代碼片段。
47、在一種可能的實現(xiàn)方式中,所述屬性參數(shù)信息包括數(shù)據(jù)的存儲數(shù)據(jù)格式、序列化參數(shù)和反序列化參數(shù);
48、其中,所述序列化參數(shù)用于將所述目標類型數(shù)據(jù)轉換成可被第一語言的代碼使用的數(shù)據(jù)形式,所述反序列化參數(shù)用于將所述目標類型數(shù)據(jù)轉換成可被第二語言的代碼使用的數(shù)據(jù)形式。
49、在一種可能的實現(xiàn)方式中,所述第一處理模塊還用于:
50、通過如下方式獲得所述述第一語言代碼:
51、獲取待轉換的代碼文件;
52、確定所述待轉換的代碼文件中的頭文件,并基于編譯器將對所述頭文件識別,得到待轉換的第一語言代碼。
53、在一種可能的實現(xiàn)方式中,所述第二處理模塊,還用于:
54、在構建基于第二語言的抽象語法樹之前,將第一語言代碼中每個結構體的名稱和存儲路徑,分別寫入所述第一語言代碼;
55、以及,針對任意一個第二語言的代碼片段,所述第二處理模塊,還用于:
56、確定所述代碼片段中的目標存儲路徑以及所述結構體對應的目標類名;
57、將所述代碼片段的文件名設置為目標類名,并將所述代碼片段的文件保存在所述目標存儲路徑。
58、第三方面,本技術實施例提供了一種執(zhí)行設備,包括:
59、存儲器,用于存儲程序指令;
60、處理器,用于獲取所述存儲器中的程序指令,并按照獲得的程序指令執(zhí)行第一方面以及第一方面不同實現(xiàn)方式所述的方法。
61、第四方面,本技術實施例提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)包括計算機指令,當所述計算機指令被計算機執(zhí)行時,實現(xiàn)第一方面以及第一方面不同實現(xiàn)方式所述的方法。
62、另外,第二方面至第四方面中任一種實現(xiàn)方式所帶來的技術效果請參見第一方面以及第一方面不同實現(xiàn)方式所帶來的技術效果,此處不再贅述。