亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種軟件源碼語言翻譯系統(tǒng)及方法

文檔序號:6622221閱讀:253來源:國知局
一種軟件源碼語言翻譯系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種軟件源碼語言翻譯系統(tǒng)及方法,所述系統(tǒng)包括:程序?qū)ο竽P凸芾砟K:用于管理作為翻譯中間產(chǎn)物的程序?qū)ο竽P?,對程序?qū)ο竽P偷墓芾戆P偷膭?chuàng)建、存儲、查詢和修改;轉(zhuǎn)換規(guī)則庫:用于管理源碼解析規(guī)則,模型轉(zhuǎn)換規(guī)則和代碼生成規(guī)則;源碼解析模塊:用于執(zhí)行源碼解析規(guī)則,將軟件源碼文本轉(zhuǎn)換為等價的結(jié)構(gòu)化的程序?qū)ο竽P?;程序?qū)ο竽P娃D(zhuǎn)換引擎:用于執(zhí)行模型轉(zhuǎn)換規(guī)則,對程序?qū)ο竽P蛯嵤┺D(zhuǎn)換;目標語言生成模塊,用于執(zhí)行代碼生成規(guī)則,生成目標語言源代碼。本發(fā)明通過引入可配置的規(guī)則,能夠重用源碼語言翻譯的通用功能,同時提供充分的可定制能力。
【專利說明】一種軟件源碼語言翻譯系統(tǒng)及方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機程序語言編譯領(lǐng)域,尤其涉及一種軟件源碼語言翻譯系統(tǒng)及方法。

【背景技術(shù)】
[0002]計算機軟件發(fā)展過程中,開發(fā)軟件所用的程序語言不斷更新?lián)Q代。迄今為止軟件領(lǐng)域積累了非常大量的,使用早期程序語言編寫的軟件程序。維護和擴展陳舊程序語言編寫的軟件效率低下,并且熟練使用這些程序語言的程序員也日益減少。為推進業(yè)務(wù)持續(xù)發(fā)展,需要將軟件程序從舊的程序語言翻譯為等價的新的程序語言的實現(xiàn)。
[0003]程序語言翻譯的過程繁瑣、內(nèi)容單調(diào)重復(fù)并且容易出錯,適合借助自動化翻譯工具實施。自動化翻譯工具的開發(fā)存在以下待解決的問題:首先,由于存在翻譯需求的源語言和目標語言種類繁多,為其中每種組合開發(fā)一套自動化翻譯工具必然存在功能重復(fù)開發(fā)的浪費。其次,即使需要翻譯的源語言相同,同樣風格的翻譯結(jié)果也不能滿足不同用戶的對目標語言程序的結(jié)構(gòu)和書寫風格的要求。
[0004]因此該領(lǐng)域需要解決如下的技術(shù)問題:如何在軟件源碼語言翻譯中支持靈活高效地定制所翻譯的源語言和目標語言的種類和代碼風格。


【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種軟件源碼語言翻譯系統(tǒng)及方法。
[0006]本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:一種軟件源碼語言翻譯系統(tǒng),包括:程序?qū)ο竽P凸芾砟K:用于管理作為翻譯中間產(chǎn)物的程序?qū)ο竽P?,對程序?qū)ο竽P偷墓芾戆P偷膭?chuàng)建、存儲、查詢和修改;其中,所述程序?qū)ο竽P桶ㄕZ法樹和符號信息表;對語法樹的管理包括創(chuàng)建語法樹節(jié)點,設(shè)置語法樹節(jié)點屬性,讀取語法樹節(jié)點屬性,設(shè)置語法樹節(jié)點間父子關(guān)系,根據(jù)語法樹節(jié)點間父子關(guān)系遍歷語法樹節(jié)點;對符號信息表的管理包括創(chuàng)建基本符號信息表,創(chuàng)建符號對象,刪除符號對象,設(shè)置符號對象屬性,按符號名稱查詢基本符號信息表,設(shè)置基本符號信息表級聯(lián)關(guān)系,按符號名稱查詢級聯(lián)的符號信息表,設(shè)置符號對象與語法樹節(jié)點的定義關(guān)聯(lián)和引用關(guān)聯(lián);
轉(zhuǎn)換規(guī)則庫:用于管理源碼解析規(guī)則,模型轉(zhuǎn)換規(guī)則和代碼生成規(guī)則;其中源碼解析規(guī)則,包括程序語法規(guī)則和符號定義規(guī)則;所述程序語法規(guī)則以EBNF范式的形式描述程序語言中合法的語法單元和層次關(guān)系;所述符號定義規(guī)則描述語法樹節(jié)點與符號對象的對應(yīng)關(guān)系;模型轉(zhuǎn)換規(guī)則為〈模式部,條件部,動作部 > 三元組形式;其中模式部描述該規(guī)則所能轉(zhuǎn)換的語法樹節(jié)點類型和子樹結(jié)構(gòu);條件部描述滿足模式的語法樹子樹中各節(jié)點屬性需要進一步滿足的條件;動作部描述模式及條件均滿足時,相應(yīng)生成的新語法樹子樹,以及對應(yīng)填入符號信息表中的符號對象;代碼生成規(guī)則為〈模式部,目標模板部 > 的二元組形式;其中模式部用于描述指定結(jié)構(gòu)的語法子樹,當模式匹配時提取模式中指定位置的變量;目標模板部描述相應(yīng)生成的文本的目標代碼模板,在模式部匹配語法子樹時提取的變量用于填充模板中的占位符;轉(zhuǎn)換規(guī)則庫模塊對規(guī)則的管理包括規(guī)則的創(chuàng)建、刪除、查看、編輯、導(dǎo)入和導(dǎo)出;
源碼解析模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的源碼解析規(guī)則并予以執(zhí)行,逐個解析程序源碼,通過調(diào)用程序?qū)ο竽P凸芾砟K創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P停凰鼋馕龀绦蛟创a,包括使用詞法解析程序?qū)⒃创a切分為詞法單元,使用語法解析程序分析詞法單元序列表達的語法結(jié)構(gòu),組織反映語法結(jié)構(gòu)的語法樹,以及遍歷語法樹,從中提取其中的符號定義和引用信息;
程序?qū)ο竽P娃D(zhuǎn)換引擎:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的模型轉(zhuǎn)換規(guī)則并予以執(zhí)行,對程序?qū)ο竽P蛯嵤┺D(zhuǎn)換;所述程序?qū)ο竽P偷霓D(zhuǎn)換包括語法樹的轉(zhuǎn)換和符號信息表的轉(zhuǎn)換;所述語法樹的轉(zhuǎn)換是指改變語法樹的結(jié)構(gòu)和屬性的操作,包括修改語法樹節(jié)點屬性,修改語法樹節(jié)點間父子關(guān)系,創(chuàng)建和插入新的語法樹節(jié)點,刪除語法樹節(jié)點;所述符號信息表的轉(zhuǎn)換是指改變符號信息表所記錄的符號信息的操作,包括修改符號對象屬性,創(chuàng)建和插入新的符號對象,刪除符號對象,修改符號信息表級聯(lián)關(guān)系;
目標語言生成模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,從轉(zhuǎn)換規(guī)則庫取得定制的代碼生成規(guī)則并予以執(zhí)行,生成目標語言源代碼;該模塊包含目標代碼模板引擎和源代碼-目標代碼關(guān)聯(lián)模塊;其中,所述目標代碼模板引擎根據(jù)代碼生成規(guī)則,從程序?qū)ο竽P偷恼Z法樹節(jié)點中提取屬性信息,包括讀取語法樹節(jié)點本身屬性,以及查詢語法樹節(jié)點相關(guān)聯(lián)的符號對象屬性;所提取屬性信息用于填充指定的代碼模板,生成該語法樹節(jié)點對應(yīng)的目標代碼;在執(zhí)行代碼生成規(guī)則的同時,源代碼-目標代碼關(guān)聯(lián)模塊記錄語法樹節(jié)點對應(yīng)的源代碼以及生成的目標代碼,用于對比查看翻譯前后的代碼,使用戶可以審查源碼翻譯的有效性。
[0007]進一步地,所述程序?qū)ο竽P凸芾砟K還包括對語法樹和符號信息表的持久存儲功能,其中,語法樹存儲為文本文件,符號信息表存儲為關(guān)系數(shù)據(jù)庫表。
[0008]應(yīng)用上述軟件源碼語言翻譯系統(tǒng)的軟件源碼語言翻譯方法,包括以下步驟:
(1)通過轉(zhuǎn)換規(guī)則庫,用戶定制源碼解析模塊所需的源碼解析規(guī)則、程序?qū)ο竽P娃D(zhuǎn)換引擎所需的模型轉(zhuǎn)換規(guī)則和目標語言生成模塊所需的代碼生成規(guī)則;
(2)通過程序?qū)ο竽P凸芾砟K對程序?qū)ο竽P蛯嵤┏跏蓟?,并建立翻譯過程中必要的目標系統(tǒng)的符號信息表;
(3)通過源碼解析模塊,執(zhí)行從步驟I獲得的源碼解析規(guī)則,逐個解析程序源碼,為每份程序源碼在程序?qū)ο竽P凸芾砟K中創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P?;具體包括根據(jù)程序語法規(guī)則,組織生成語法樹,以及根據(jù)符號定義規(guī)則,填充符號信息表;
(4)通過程序?qū)ο竽P凸芾砟K對步驟3得到的語法樹和符號信息表進行存儲和索弓I ;
(5)通過程序?qū)ο竽P娃D(zhuǎn)換引擎,執(zhí)行步驟I得到的模型轉(zhuǎn)換規(guī)則,對程序模型實施轉(zhuǎn)換;在每一份程序源碼的程序?qū)ο竽P蜕?,程序?qū)ο竽P娃D(zhuǎn)換引擎從其中的語法樹根節(jié)點開始執(zhí)行模型轉(zhuǎn)換規(guī)則,選擇符合根節(jié)點類型的規(guī)則對該節(jié)點實施轉(zhuǎn)換,并觸發(fā)對子節(jié)點的轉(zhuǎn)換;對子節(jié)點的轉(zhuǎn)換過程與根節(jié)點相同,依次遞歸,完成整個語法樹全部節(jié)點的遍歷和轉(zhuǎn)換;當轉(zhuǎn)換一個語法樹節(jié)點時,同時取得與語法樹節(jié)點關(guān)聯(lián)的符號對象,實施相關(guān)聯(lián)的符號信息轉(zhuǎn)換;最終得到轉(zhuǎn)換后的程序?qū)ο竽P?,包括更新的語法樹和符號信息表;
(6)通過程序?qū)ο竽P凸芾砟K對步驟5得到的更新的語法樹和符號信息表進行存儲和索引;
(7)通過目標語言生成模塊,執(zhí)行步驟I得到的代碼生成規(guī)則,按照自底向上的次序,將語法樹中子節(jié)點所生成的目標代碼用于填充父節(jié)點的代碼模板,處理至語法樹根節(jié)點時,生成一份完整的目標語言源代碼,保存于指定的代碼文件;
(8)用戶利用目標語言生成模塊記錄的源代碼-目標代碼關(guān)聯(lián)信息,對比查看翻譯前后的程序代碼,當發(fā)現(xiàn)使用的規(guī)則存在問題,則轉(zhuǎn)到步驟1,修改轉(zhuǎn)換規(guī)則庫中的相關(guān)規(guī)則,重新執(zhí)行轉(zhuǎn)換過程,直至不再需要修改規(guī)則。
[0009]本發(fā)明的有益效果是:本發(fā)明提供了在軟件源碼語言翻譯中支持靈活高效地定制所翻譯的源語言和目標語言的種類和代碼風格的系統(tǒng)及方法,通過引入可配置的規(guī)則,能夠重用源碼語言翻譯的通用功能,同時提供充分的可定制能力。

【專利附圖】

【附圖說明】
[0010]圖1為本發(fā)明軟件源碼語言翻譯系統(tǒng)結(jié)構(gòu)框圖;
圖2為本發(fā)明軟件源碼語言翻譯方法流程圖。

【具體實施方式】
[0011]下面結(jié)合附圖對本發(fā)明作進一步詳細說明。
[0012]如圖1所示,本發(fā)明一種軟件源碼語言翻譯系統(tǒng),包括:
程序?qū)ο竽P凸芾砟K:用于管理作為翻譯中間產(chǎn)物的程序?qū)ο竽P?,對程序?qū)ο竽P偷墓芾戆P偷膭?chuàng)建、存儲、查詢和修改;其中,所述程序?qū)ο竽P桶ㄕZ法樹和符號信息表;對語法樹的管理包括創(chuàng)建語法樹節(jié)點,設(shè)置語法樹節(jié)點屬性,讀取語法樹節(jié)點屬性,設(shè)置語法樹節(jié)點間父子關(guān)系,根據(jù)語法樹節(jié)點間父子關(guān)系遍歷語法樹節(jié)點;對符號信息表的管理包括創(chuàng)建基本符號信息表,創(chuàng)建符號對象,刪除符號對象,設(shè)置符號對象屬性,按符號名稱查詢基本符號信息表,設(shè)置基本符號信息表級聯(lián)關(guān)系,按符號名稱查詢級聯(lián)的符號信息表,設(shè)置符號對象與語法樹節(jié)點的定義關(guān)聯(lián)和引用關(guān)聯(lián);程序?qū)ο竽P凸芾砟K還包括對語法樹和符號信息表的持久存儲功能,其中,語法樹存儲為文本文件,符號信息表存儲為關(guān)系數(shù)據(jù)庫表。
[0013]轉(zhuǎn)換規(guī)則庫:用于管理源碼解析規(guī)則,模型轉(zhuǎn)換規(guī)則和代碼生成規(guī)則;其中源碼解析規(guī)則,包括程序語法規(guī)則和符號定義規(guī)則;所述程序語法規(guī)則以EBNF范式的形式描述程序語言中合法的語法單元和層次關(guān)系;所述符號定義規(guī)則描述語法樹節(jié)點與符號對象的對應(yīng)關(guān)系;模型轉(zhuǎn)換規(guī)則為〈模式部,條件部,動作部 > 三元組形式;其中模式部描述該規(guī)則所能轉(zhuǎn)換的語法樹節(jié)點類型和子樹結(jié)構(gòu);條件部描述滿足模式的語法樹子樹中各節(jié)點屬性需要進一步滿足的條件;動作部描述模式及條件均滿足時,相應(yīng)生成的新語法樹子樹,以及對應(yīng)填入符號信息表中的符號對象;代碼生成規(guī)則為〈模式部,目標模板部〉的二元組形式;其中模式部用于描述指定結(jié)構(gòu)的語法子樹,當模式匹配時提取模式中指定位置的變量;目標模板部描述相應(yīng)生成的文本的目標代碼模板,在模式部匹配語法子樹時提取的變量用于填充模板中的占位符;轉(zhuǎn)換規(guī)則庫模塊對規(guī)則的管理包括規(guī)則的創(chuàng)建、刪除、查看、編輯、導(dǎo)入和導(dǎo)出;通過引入可配置的規(guī)則,能夠重用源碼語言翻譯的通用功能,同時提供充分的可定制能力。
[0014]源碼解析模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的源碼解析規(guī)則并予以執(zhí)行,逐個解析程序源碼,通過調(diào)用程序?qū)ο竽P凸芾砟K創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P停凰鼋馕龀绦蛟创a,包括使用詞法解析程序?qū)⒃创a切分為詞法單元,使用語法解析程序分析詞法單元序列表達的語法結(jié)構(gòu),組織反映語法結(jié)構(gòu)的語法樹,以及遍歷語法樹,從中提取其中的符號定義和引用信息;
程序?qū)ο竽P娃D(zhuǎn)換引擎:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的模型轉(zhuǎn)換規(guī)則并予以執(zhí)行,對程序?qū)ο竽P蛯嵤┺D(zhuǎn)換;所述程序?qū)ο竽P偷霓D(zhuǎn)換包括語法樹的轉(zhuǎn)換和符號信息表的轉(zhuǎn)換;所述語法樹的轉(zhuǎn)換是指改變語法樹的結(jié)構(gòu)和屬性的操作,包括修改語法樹節(jié)點屬性,修改語法樹節(jié)點間父子關(guān)系,創(chuàng)建和插入新的語法樹節(jié)點,刪除語法樹節(jié)點;所述符號信息表的轉(zhuǎn)換是指改變符號信息表所記錄的符號信息的操作,包括修改符號對象屬性,創(chuàng)建和插入新的符號對象,刪除符號對象,修改符號信息表級聯(lián)關(guān)系;
目標語言生成模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,從轉(zhuǎn)換規(guī)則庫取得定制的代碼生成規(guī)則并予以執(zhí)行,生成目標語言源代碼;該模塊包含目標代碼模板引擎和源代碼-目標代碼關(guān)聯(lián)模塊;其中,所述目標代碼模板引擎根據(jù)代碼生成規(guī)則,從程序?qū)ο竽P偷恼Z法樹節(jié)點中提取屬性信息,包括讀取語法樹節(jié)點本身屬性,以及查詢語法樹節(jié)點相關(guān)聯(lián)的符號對象屬性;所提取屬性信息用于填充指定的代碼模板,生成該語法樹節(jié)點對應(yīng)的目標代碼;在執(zhí)行代碼生成規(guī)則的同時,源代碼-目標代碼關(guān)聯(lián)模塊記錄語法樹節(jié)點對應(yīng)的源代碼以及生成的目標代碼,用于對比查看翻譯前后的代碼,使用戶可以審查源碼翻譯的有效性。
[0015]如圖2所示,本發(fā)明一種軟件源碼語言翻譯方法,包括以下步驟:
(1)通過轉(zhuǎn)換規(guī)則庫,用戶定制源碼解析模塊所需的源碼解析規(guī)則、程序?qū)ο竽P娃D(zhuǎn)換引擎所需的模型轉(zhuǎn)換規(guī)則和目標語言生成模塊所需的代碼生成規(guī)則;
(2)通過程序?qū)ο竽P凸芾砟K對程序?qū)ο竽P蛯嵤┏跏蓟?,并建立翻譯過程中必要的目標系統(tǒng)的符號信息表;
(3)通過源碼解析模塊,執(zhí)行從步驟I獲得的源碼解析規(guī)則,逐個解析程序源碼,為每份程序源碼在程序?qū)ο竽P凸芾砟K中創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P?;具體包括根據(jù)程序語法規(guī)則,組織生成語法樹,以及根據(jù)符號定義規(guī)則,填充符號信息表;
(4)通過程序?qū)ο竽P凸芾砟K對步驟3得到的語法樹和符號信息表進行存儲和索弓I ;
(5)通過程序?qū)ο竽P娃D(zhuǎn)換引擎,執(zhí)行步驟I得到的模型轉(zhuǎn)換規(guī)則,對程序模型實施轉(zhuǎn)換;在每一份程序源碼的程序?qū)ο竽P蜕希绦驅(qū)ο竽P娃D(zhuǎn)換引擎從其中的語法樹根節(jié)點開始執(zhí)行模型轉(zhuǎn)換規(guī)則,選擇符合根節(jié)點類型的規(guī)則對該節(jié)點實施轉(zhuǎn)換,并觸發(fā)對子節(jié)點的轉(zhuǎn)換;對子節(jié)點的轉(zhuǎn)換過程與根節(jié)點相同,依次遞歸,完成整個語法樹全部節(jié)點的遍歷和轉(zhuǎn)換;當轉(zhuǎn)換一個語法樹節(jié)點時,同時取得與語法樹節(jié)點關(guān)聯(lián)的符號對象,實施相關(guān)聯(lián)的符號信息轉(zhuǎn)換;最終得到轉(zhuǎn)換后的程序?qū)ο竽P停ǜ碌恼Z法樹和符號信息表; (6)通過程序?qū)ο竽P凸芾砟K對步驟5得到的更新的語法樹和符號信息表進行存儲和索引;
(7)通過目標語言生成模塊,執(zhí)行步驟I得到的代碼生成規(guī)則,按照自底向上的次序,將語法樹中子節(jié)點所生成的目標代碼用于填充父節(jié)點的代碼模板,處理至語法樹根節(jié)點時,生成一份完整的目標語言源代碼,保存于指定的代碼文件;
(8)用戶利用目標語言生成模塊記錄的源代碼-目標代碼關(guān)聯(lián)信息,對比查看翻譯前后的程序代碼,當發(fā)現(xiàn)使用的規(guī)則存在問題,則轉(zhuǎn)到步驟1,修改轉(zhuǎn)換規(guī)則庫中的相關(guān)規(guī)則,重新執(zhí)行轉(zhuǎn)換過程,直至不再需要修改規(guī)則;最終實現(xiàn)靈活高效地定制所翻譯的源語言和目標語言的種類和代碼風格。
【權(quán)利要求】
1.一種軟件源碼語言翻譯系統(tǒng),其特征在于,包括: 程序?qū)ο竽P凸芾砟K:用于管理作為翻譯中間產(chǎn)物的程序?qū)ο竽P?,對程序?qū)ο竽P偷墓芾戆P偷膭?chuàng)建、存儲、查詢和修改;其中,所述程序?qū)ο竽P桶ㄕZ法樹和符號信息表;對語法樹的管理包括創(chuàng)建語法樹節(jié)點,設(shè)置語法樹節(jié)點屬性,讀取語法樹節(jié)點屬性,設(shè)置語法樹節(jié)點間父子關(guān)系,根據(jù)語法樹節(jié)點間父子關(guān)系遍歷語法樹節(jié)點;對符號信息表的管理包括創(chuàng)建基本符號信息表,創(chuàng)建符號對象,刪除符號對象,設(shè)置符號對象屬性,按符號名稱查詢基本符號信息表,設(shè)置基本符號信息表級聯(lián)關(guān)系,按符號名稱查詢級聯(lián)的符號信息表,設(shè)置符號對象與語法樹節(jié)點的定義關(guān)聯(lián)和引用關(guān)聯(lián); 轉(zhuǎn)換規(guī)則庫:用于管理源碼解析規(guī)則,模型轉(zhuǎn)換規(guī)則和代碼生成規(guī)則;其中源碼解析規(guī)則,包括程序語法規(guī)則和符號定義規(guī)則;所述程序語法規(guī)則以EBNF范式的形式描述程序語言中合法的語法單元和層次關(guān)系;所述符號定義規(guī)則描述語法樹節(jié)點與符號對象的對應(yīng)關(guān)系;模型轉(zhuǎn)換規(guī)則為〈模式部,條件部,動作部〉三元組形式;其中模式部描述該規(guī)則所能轉(zhuǎn)換的語法樹節(jié)點類型和子樹結(jié)構(gòu);條件部描述滿足模式的語法樹子樹中各節(jié)點屬性需要進一步滿足的條件;動作部描述模式及條件均滿足時,相應(yīng)生成的新語法樹子樹,以及對應(yīng)填入符號信息表中的符號對象;代碼生成規(guī)則為〈模式部,目標模板部 > 的二元組形式;其中模式部用于描述指定結(jié)構(gòu)的語法子樹,當模式匹配時提取模式中指定位置的變量;目標模板部描述相應(yīng)生成的文本的目標代碼模板,在模式部匹配語法子樹時提取的變量用于填充模板中的占位符;轉(zhuǎn)換規(guī)則庫模塊對規(guī)則的管理包括規(guī)則的創(chuàng)建、刪除、查看、編輯、導(dǎo)入和導(dǎo)出; 源碼解析模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的源碼解析規(guī)則并予以執(zhí)行,逐個解析程序源碼,通過調(diào)用程序?qū)ο竽P凸芾砟K創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P停凰鼋馕龀绦蛟创a,包括使用詞法解析程序?qū)⒃创a切分為詞法單元,使用語法解析程序分析詞法單元序列表達的語法結(jié)構(gòu),組織反映語法結(jié)構(gòu)的語法樹,以及遍歷語法樹,從中提取其中的符號定義和引用信息; 程序?qū)ο竽P娃D(zhuǎn)換引擎:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,用于從轉(zhuǎn)換規(guī)則庫取得定制的模型轉(zhuǎn)換規(guī)則并予以執(zhí)行,對程序?qū)ο竽P蛯嵤┺D(zhuǎn)換;所述程序?qū)ο竽P偷霓D(zhuǎn)換包括語法樹的轉(zhuǎn)換和符號信息表的轉(zhuǎn)換;所述語法樹的轉(zhuǎn)換是指改變語法樹的結(jié)構(gòu)和屬性的操作,包括修改語法樹節(jié)點屬性,修改語法樹節(jié)點間父子關(guān)系,創(chuàng)建和插入新的語法樹節(jié)點,刪除語法樹節(jié)點;所述符號信息表的轉(zhuǎn)換是指改變符號信息表所記錄的符號信息的操作,包括修改符號對象屬性,創(chuàng)建和插入新的符號對象,刪除符號對象,修改符號信息表級聯(lián)關(guān)系; 目標語言生成模塊:分別與轉(zhuǎn)換規(guī)則庫和程序?qū)ο竽P凸芾砟K相連,從轉(zhuǎn)換規(guī)則庫取得定制的代碼生成規(guī)則并予以執(zhí)行,生成目標語言源代碼;該模塊包含目標代碼模板引擎和源代碼-目標代碼關(guān)聯(lián)模塊;其中,所述目標代碼模板引擎根據(jù)代碼生成規(guī)則,從程序?qū)ο竽P偷恼Z法樹節(jié)點中提取屬性信息,包括讀取語法樹節(jié)點本身屬性,以及查詢語法樹節(jié)點相關(guān)聯(lián)的符號對象屬性;所提取屬性信息用于填充指定的代碼模板,生成該語法樹節(jié)點對應(yīng)的目標代碼;在執(zhí)行代碼生成規(guī)則的同時,源代碼-目標代碼關(guān)聯(lián)模塊記錄語法樹節(jié)點對應(yīng)的源代碼以及生成的目標代碼,用于對比查看翻譯前后的代碼,使用戶可以審查源碼翻譯的有效性。
2.根據(jù)權(quán)利要求1所述一種軟件源碼語言翻譯系統(tǒng),其特征在于,所述程序?qū)ο竽P凸芾砟K還包括對語法樹和符號信息表的持久存儲功能,其中,語法樹存儲為文本文件,符號信息表存儲為關(guān)系數(shù)據(jù)庫表。
3.應(yīng)用權(quán)利要求1所述軟件源碼語言翻譯系統(tǒng)的軟件源碼語言翻譯方法,其特征在于,包括以下步驟: (1)通過轉(zhuǎn)換規(guī)則庫,用戶定制源碼解析模塊所需的源碼解析規(guī)則、程序?qū)ο竽P娃D(zhuǎn)換引擎所需的模型轉(zhuǎn)換規(guī)則和目標語言生成模塊所需的代碼生成規(guī)則; (2)通過程序?qū)ο竽P凸芾砟K對程序?qū)ο竽P蛯嵤┏跏蓟⒔⒎g過程中必要的目標系統(tǒng)的符號信息表; (3)通過源碼解析模塊,執(zhí)行從步驟1獲得的源碼解析規(guī)則,逐個解析程序源碼,為每份程序源碼在程序?qū)ο竽P凸芾砟K中創(chuàng)建和保存等價的結(jié)構(gòu)化的程序?qū)ο竽P停痪唧w包括根據(jù)程序語法規(guī)則,組織生成語法樹,以及根據(jù)符號定義規(guī)則,填充符號信息表; (4)通過程序?qū)ο竽P凸芾砟K對步驟3得到的語法樹和符號信息表進行存儲和索弓I ; (5)通過程序?qū)ο竽P娃D(zhuǎn)換引擎,執(zhí)行步驟1得到的模型轉(zhuǎn)換規(guī)則,對程序模型實施轉(zhuǎn)換;在每一份程序源碼的程序?qū)ο竽P蜕?,程序?qū)ο竽P娃D(zhuǎn)換引擎從其中的語法樹根節(jié)點開始執(zhí)行模型轉(zhuǎn)換規(guī)則,選擇符合根節(jié)點類型的規(guī)則對該節(jié)點實施轉(zhuǎn)換,并觸發(fā)對子節(jié)點的轉(zhuǎn)換;對子節(jié)點的轉(zhuǎn)換過程與根節(jié)點相同,依次遞歸,完成整個語法樹全部節(jié)點的遍歷和轉(zhuǎn)換;當轉(zhuǎn)換一個語法樹節(jié)點時,同時取得與語法樹節(jié)點關(guān)聯(lián)的符號對象,實施相關(guān)聯(lián)的符號信息轉(zhuǎn)換;最終得到轉(zhuǎn)換后的程序?qū)ο竽P停ǜ碌恼Z法樹和符號信息表; (6)通過程序?qū)ο竽P凸芾砟K對步驟5得到的更新的語法樹和符號信息表進行存儲和索引; (7)通過目標語言生成模塊,執(zhí)行步驟1得到的代碼生成規(guī)則,按照自底向上的次序,將語法樹中子節(jié)點所生成的目標代碼用于填充父節(jié)點的代碼模板,處理至語法樹根節(jié)點時,生成一份完整的目標語言源代碼,保存于指定的代碼文件; (8)用戶利用目標語言生成模塊記錄的源代碼-目標代碼關(guān)聯(lián)信息,對比查看翻譯前后的程序代碼,當發(fā)現(xiàn)使用的規(guī)則存在問題,則轉(zhuǎn)到步驟1,修改轉(zhuǎn)換規(guī)則庫中的相關(guān)規(guī)則,重新執(zhí)行轉(zhuǎn)換過程,直至不再需要修改規(guī)則。
【文檔編號】G06F9/44GK104391730SQ201410376235
【公開日】2015年3月4日 申請日期:2014年8月3日 優(yōu)先權(quán)日:2014年8月3日
【發(fā)明者】楊朝暉, 馬滿材, 李洋, 鄭建東, 周波, 李善平, 鄭馳宇, 孫建伶, 丁彭云 申請人:浙江網(wǎng)新恒天軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1