本發(fā)明涉及芯片設計,特別涉及一種代碼自動生成方法、裝置、設備、程序產(chǎn)品及介質(zhì)。
背景技術:
1、代碼編寫過程中,對于不可以使用語言本身自帶的循環(huán)的場景,需要手動編寫大量的重復性較高的代碼,一般來說會編寫一套腳本,根據(jù)循環(huán)次數(shù),自動生成這套代碼。如圖1所示,對于c++語言來說:左側的代碼可由c++語言本身支持的循環(huán)簡化為右側的代碼;然而,如圖2所示,代碼無法通過語言自身的循環(huán)實現(xiàn)簡化。此時,如圖3所示,可以通過編寫腳本來實現(xiàn)代碼自動展開。此時腳本可以讀取注釋內(nèi)的控制邏輯,x從0到3循環(huán),然后自動生成需要的代碼。通過腳本自動生成代碼,可以大大的減少重復性較高的編碼工作。
2、然而,針對較為復雜的循環(huán)場景,例如如果需要生成圖4所示的代碼,現(xiàn)有的腳本需要分開生成,如圖5所示。可見,由于代碼上下兩部分重復性較高,現(xiàn)有常用的腳本需要編寫兩段,生成邏輯明顯效率不高。因此,如何提供一種解決上述技術問題的方案是本領域技術人員目前需要解決的問題。
技術實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種代碼自動生成方法、裝置、設備、程序產(chǎn)品及介質(zhì),能夠提高代碼生成效率,降低重復的工作量。其具體方案如下:
2、第一方面,本技術公開了一種代碼自動生成方法,包括:
3、獲取需要生成代碼的循環(huán)語句;
4、確定所述循環(huán)語句中的字符串變量以及整形變量;
5、針對所述循環(huán)語句,分別將所述字符串變量以及所述整形變量作為控制變量編寫相應的注釋腳本配置模板;
6、利用對所述注釋腳本配置模板預先設置的模板控制邏輯,從所述注釋腳本配置模板中獲取目標循環(huán)控制信息表,以便基于所述目標循環(huán)控制信息表生成與所述循環(huán)語句對應的目標代碼。
7、可選的,所述利用對所述注釋腳本配置模板預先設置的模板控制邏輯,從所述注釋腳本配置模板中獲取目標循環(huán)控制信息表,包括:
8、確定所述注釋腳本配置模板中的第一關鍵字和第二關鍵字;
9、獲取所述第一關鍵字定義的字符串變量,并根據(jù)所述字符串變量之間的預設符號標識符確定相應的字符串變量列表,然后為所述字符串變量添加相應的第一索引信息、第一類型信息、第一起始結束條件信息和第一當前值,以便基于所述字符串變量、所述字符串變量列表、所述第一索引信息、所述第一類型信息、所述第一起始結束條件信息和所述第一當前值確定第一循環(huán)控制信息;
10、獲取所述第二關鍵字定義的整形變量,并為所述整形變量添加相應的第二索引信息、第二類型信息、第二起始結束條件信息和第二當前值,以便基于所述整形變量、所述第二索引信息、所述第二類型信息、所述第二起始結束條件信息和所述第二當前值確定第二循環(huán)控制信息;
11、基于所述第一循環(huán)控制信息和所述第二循環(huán)控制信息生成所述目標循環(huán)控制信息表。
12、可選的,所述第一起始結束條件信息中的起始值與所述第一當前值相等,所述第二起始結束條件信息中的起始值與所述第二當前值相等。
13、可選的,所述利用對所述注釋腳本配置模板預先設置的模板控制邏輯,從所述注釋腳本配置模板中獲取目標循環(huán)控制信息表之后,還包括:
14、對所述目標循環(huán)控制信息表中的循環(huán)控制信息進行翻轉,以將最后獲取到的循環(huán)控制信息翻轉作為首個循環(huán)控制信息;
15、基于所述首個循環(huán)控制信息迭代生成第一代碼,并在所述首個循環(huán)控制信息滿足下一級迭代條件時,對所述首個循環(huán)控制信息的下一級循環(huán)控制信息進行迭代以生成第二代碼;
16、當所有的循環(huán)控制信息迭代完成后,基于所述第一代碼與所述第二代碼確定與所述循環(huán)語句對應的目標代碼。
17、可選的,所述基于所述首個循環(huán)控制信息迭代生成第一代碼,包括:
18、基于所述首個循環(huán)控制信息確定第三當前值,并基于所述第三當前值確定對應的第一循環(huán)控制信息表;
19、根據(jù)所述第一循環(huán)控制信息表生成第三代碼,然后將所述第三當前值加一以得到下一當前值;
20、將所述第三當前值的下一當前值作為所述第三當前值,然后觸發(fā)所述基于所述第三當前值確定對應的第一循環(huán)控制信息表的步驟,直到所述首個循環(huán)控制信息滿足下一級迭代條件,通過所述第三代碼生成所述第一代碼。
21、可選的,在所述首個循環(huán)控制信息滿足下一級迭代條件時,對所述首個循環(huán)控制信息的下一級循環(huán)控制信息進行迭代以生成第二代碼,包括:
22、當所述首個循環(huán)控制信息中所述第三當前值大于起始結束條件信息中的結束值時,基于所述下一級循環(huán)控制信息確定第四當前值;
23、將所述第四當前值加一以得到下一當前值,并將所述首個循環(huán)控制信息中所述起始結束條件信息中的起始值作為所述第三當前值,然后基于所述第三當前值和所述第四當前值加一得到的下一當前值確定對應的第二循環(huán)控制信息表;
24、根據(jù)所述第二循環(huán)控制信息表生成第四代碼,然后將所述第三當前值加一以得到下一當前值;
25、將所述第三當前值的下一當前值作為所述第三當前值,然后觸發(fā)所述基于所述第三當前值和所述第四當前值加一得到的下一當前值確定對應的第二循環(huán)控制信息表的步驟;
26、當所述首個循環(huán)控制信息重新滿足所述下一級迭代條件時,跳轉至所述基于所述下一級循環(huán)控制信息確定第四當前值的步驟,當最后一個循環(huán)控制信息中所述第四當前值大于起始結束條件信息中的結束值時,通過所述第四代碼生成所述第二代碼。
27、第二方面,本技術公開了一種代碼自動生成裝置,包括:
28、循環(huán)語句獲取模塊,用于獲取需要生成代碼的循環(huán)語句;
29、變量確定模塊,用于確定所述循環(huán)語句中的字符串變量以及整形變量;
30、模板編寫模塊,用于針對所述循環(huán)語句,分別將所述字符串變量以及所述整形變量作為控制變量編寫相應的注釋腳本配置模板;
31、代碼生成模塊,用于利用對所述注釋腳本配置模板預先設置的模板控制邏輯,從所述注釋腳本配置模板中獲取目標循環(huán)控制信息表,以便基于所述目標循環(huán)控制信息表生成與所述循環(huán)語句對應的代碼。
32、第三方面,本技術公開了一種電子設備,所述電子設備包括處理器和存儲器;其中,所述存儲器用于存儲計算機程序,所述計算機程序由所述處理器加載并執(zhí)行以實現(xiàn)如前所述的代碼自動生成方法。
33、第四方面,本技術公開了一種計算機程序產(chǎn)品,包括計算機程序/指令,所述計算機程序/指令被處理器執(zhí)行時實現(xiàn)前述的代碼自動生成方法的步驟。
34、第五方面,本技術公開了一種計算機可讀存儲介質(zhì),用于存儲計算機程序;其中所述計算機程序被處理器執(zhí)行時實現(xiàn)如前所述的代碼自動生成方法。
35、本技術提供了一種代碼自動生成方法,包括:獲取需要生成代碼的循環(huán)語句;確定所述循環(huán)語句中的字符串變量以及整形變量;針對所述循環(huán)語句,分別將所述字符串變量以及所述整形變量作為控制變量編寫相應的注釋腳本配置模板;利用對所述注釋腳本配置模板預先設置的模板控制邏輯,從所述注釋腳本配置模板中獲取目標循環(huán)控制信息表,以便基于所述目標循環(huán)控制信息表生成與所述循環(huán)語句對應的目標代碼。
36、本技術的有益技術效果為:針對需要生成代碼的循環(huán)語句,通過修改腳本支持列表和整形數(shù)據(jù)的混合循環(huán),將循環(huán)語句中的字符串變量以及整形變量作為控制變量,編寫相應的注釋腳本配置模板。然后基于為注釋腳本配置模板預先設置的模板控制邏輯,從注釋腳本配置模板中獲取循環(huán)控制信息,以自動生成代碼。如此一來,減少了模板的配置,支持整形和字符串變量混合的無限循環(huán)。不僅增強了腳本的實用性,簡化了模板控制邏輯,降低了重復的工作量,同時還可以適用于多種編程語言。
37、此外,本技術提供的一種代碼自動生成裝置、設備、程序產(chǎn)品及介質(zhì),與上述代碼自動生成方法對應,效果同上。