專利名稱::一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法及轉(zhuǎn)換器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法及轉(zhuǎn)換器。
背景技術(shù):
:工業(yè)控制算法組態(tài)軟件都涉及到一個(gè)問題把IEC61131-3中的五種標(biāo)準(zhǔn)語言(以下簡稱IEC語言)轉(zhuǎn)換成處理器可以識(shí)別的機(jī)器指令,這一過程稱為編譯,完成這一個(gè)過程的模塊稱為編譯器。IEC61131-3規(guī)定了五種語言,每一種語言都需要一個(gè)特定的編譯器完成這一過程;一般來說,每一種處理器都有不同的體系結(jié)構(gòu)和指令集,因此還需要編譯器要有不同的后端,以便生成不同處理器的指令序列。因此,要實(shí)現(xiàn)IEC五種語言的編譯器是一個(gè)復(fù)雜過程,而且這一過程本身是高風(fēng)險(xiǎn)的;如果能夠找到一種方法可以減少其中的工作量和降低風(fēng)險(xiǎn)是令人欣喜的;一種可行的方案是,首先把IEC語言轉(zhuǎn)換成C語言,然后調(diào)用通用的C編譯器轉(zhuǎn)換成處理器指令,因?yàn)镃語言是一種通用的語言,目前已知的各種體系結(jié)構(gòu)的處理器都對其進(jìn)行了支持,可以很方便地獲得對應(yīng)的C編譯器。正C61131-3失見定了五種語言,分別為兩種文本語言ST、IL,三種圖形語言LD、SFC、FBD;每種語言各有不同特點(diǎn)和用途,不同的用戶會(huì)有不同的偏好。把正C語言轉(zhuǎn)換成C語言,完成這一過程的模塊稱為轉(zhuǎn)換器。ST語言(structuraltextlanguage,結(jié)構(gòu)化文本語言)是一種類PASCAL的高級(jí)語言,在正C五種語言中具有代表性。轉(zhuǎn)換器完成IEC語言到C語言的轉(zhuǎn)換的一種做法是默認(rèn)源語言是正確的,一旦發(fā)現(xiàn)錯(cuò)誤,轉(zhuǎn)換就會(huì)停止;產(chǎn)生的目標(biāo)語言描述直接通過C編譯器處理,不具有可讀性和可維護(hù)性。該做法的缺陷在于由于用戶希望盡可能多報(bào)告出編寫的源語言的錯(cuò)誤,怎么修改,如果每次只能報(bào)告一個(gè)錯(cuò)誤,用戶會(huì)很容易不耐煩;另夕卜,源語言和目標(biāo)語言具有不同的屬性,特別是細(xì)節(jié)方面,如果生成的目標(biāo)語言不具有可讀性和可維護(hù)性,則會(huì)難以找到細(xì)節(jié)上的不同之處,并解決問題。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法及轉(zhuǎn)換器,能夠轉(zhuǎn)換成規(guī)范的、格式化的,具有可讀性和可維護(hù)性的目標(biāo)語言描述。為了解決上述問題,本發(fā)明提供了一種高級(jí)語言的轉(zhuǎn)換器,包括詞法分析裝置,用于接收源語言編輯器輸出的ASCII碼序列,并輸出帶有屬性的ASCII序列組合;語法分析裝置,用于接收所述詞法分析裝置輸出的帶有屬性的ASCII序列組合,根據(jù)源語言語法結(jié)構(gòu),生成語法分析樹并輸出;語義分析裝置,用于驗(yàn)證所述語法分析裝置輸出的語法分析樹的有效性,輸出驗(yàn)證合格的語法分析樹;目標(biāo)語言生成裝置,用于保存源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,以及各類型節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片段中,各條目標(biāo)語言描述之間的層次關(guān)系;所述目標(biāo)語言生成裝置當(dāng)接收所述語義分析裝置輸出的驗(yàn)證合格的語法分析樹后,對該語法分析樹進(jìn)行后序遍歷,根據(jù)所述對應(yīng)關(guān)系生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所述層次關(guān)系確定各條目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字付。進(jìn)一步地,所述的轉(zhuǎn)換器還包括錯(cuò)誤處理裝置;所述語法分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;所述語義分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;錯(cuò)誤處理裝置,用于當(dāng)收到所述語法分析裝置或所述語義分析裝置才艮告的錯(cuò)誤后,根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)。進(jìn)一步地,所述語法分析裝置,或者所述語義分析裝置將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置是指將所發(fā)現(xiàn)錯(cuò)誤的錯(cuò)誤狀態(tài)傳遞給所述錯(cuò)誤處理裝置;所述錯(cuò)誤狀態(tài)指示錯(cuò)誤發(fā)生部分所在節(jié)點(diǎn)的類型;所述錯(cuò)誤處理裝置根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)具體是指所述錯(cuò)誤處理裝置根據(jù)預(yù)存的錯(cuò)誤狀態(tài)與跳出標(biāo)志的對應(yīng)關(guān)系,確定所述錯(cuò)誤狀態(tài)對應(yīng)的跳出標(biāo)志,然后將所找到的跳出標(biāo)志告知報(bào)告錯(cuò)誤的裝置。進(jìn)一步地,所述語法分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指所述語法分析裝置在待處理的ASCII序列組合中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)處理該跳出標(biāo)志之后的ASCII序列組合;所述語義分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指所述語義分析裝置在待驗(yàn)證的語法分析樹中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)-驗(yàn)i正該;兆出標(biāo)志之后的語法分析樹。進(jìn)一步地,所述語法分析裝置,或者所述語義分析裝置將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置是指將所發(fā)現(xiàn)錯(cuò)誤的錯(cuò)誤內(nèi)容傳遞給所述錯(cuò)誤處理裝置;所述錯(cuò)誤內(nèi)容包括錯(cuò)誤描述和錯(cuò)誤位置;所述錯(cuò)誤處理裝置還用于根據(jù)預(yù)存的錯(cuò)誤描述與修改方法的對應(yīng)關(guān)系,確定相應(yīng)的修改方法,以及才艮告所述錯(cuò)誤內(nèi)容及修改方法。進(jìn)一步地,目標(biāo)語言生成裝置所保存的各條目標(biāo)語言描述之間的層次關(guān)系為對于一個(gè)節(jié)點(diǎn)中包含的各個(gè)處理子節(jié)點(diǎn),其對應(yīng)的目標(biāo)語言描述的層次相同,并且比該節(jié)點(diǎn)高;對于不是任何節(jié)點(diǎn)的處理子節(jié)點(diǎn)的節(jié)點(diǎn)而言,所對應(yīng)的目標(biāo)語言描述處于最低層;一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)是指從屬于該節(jié)點(diǎn)的、作為該節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn)。本發(fā)明還提供了一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法,包括以下步驟A、根據(jù)源語言編輯器輸出的ASCII碼序列,生成帶有屬性的ASCII序列組合,進(jìn)4亍步驟B;B、根據(jù)源語言語法結(jié)構(gòu),由所述帶有屬性的ASCII序列組合生成語法分析樹,進(jìn)行步驟C;C、驗(yàn)證所述語法分析樹的有效性,驗(yàn)證合格后進(jìn)行步驟D;D、對驗(yàn)證合格的語法分析樹進(jìn)行后序遍歷,根據(jù)預(yù)存的源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;根據(jù)預(yù)存的各條目標(biāo)語言描述之間的層次關(guān)系,確定各條目標(biāo)語言描述的層次;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所生成的目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符;結(jié)束。進(jìn)一步地,所述的方法還包括步驟E;所述方法中,步驟B和/或步驟C還進(jìn)一步包括當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí),確定該錯(cuò)誤的錯(cuò)誤狀態(tài),暫停處理,執(zhí)行步驟E;E、根據(jù)預(yù)存的錯(cuò)誤狀態(tài)和跳出標(biāo)志之間的對應(yīng)關(guān)系,找到所發(fā)現(xiàn)的錯(cuò)誤狀態(tài)的跳出標(biāo)志;根據(jù)該跳出標(biāo)志跳過錯(cuò)誤,然后從該跳出標(biāo)志之后開始,返回處于暫停處理的步驟繼續(xù)處理。進(jìn)一步地,步驟B和/或步驟C還包括當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí),確定該錯(cuò)誤的錯(cuò)誤內(nèi)容;所述錯(cuò)誤內(nèi)容包括錯(cuò)誤描述和錯(cuò)誤位置;所述步驟E還包括根據(jù)預(yù)存的錯(cuò)誤描述與修改方法的對應(yīng)關(guān)系,確定相應(yīng)的修改方法,以及報(bào)告所述錯(cuò)誤內(nèi)容及修改方法。進(jìn)一步地,所述各條目標(biāo)語言描述之間的層次關(guān)系為對于一個(gè)節(jié)點(diǎn)中包含的各個(gè)處理子節(jié)點(diǎn),其對應(yīng)的目標(biāo)語言描述的層次相同,并且比該節(jié)點(diǎn)高;對于不是任何節(jié)點(diǎn)的處理子節(jié)點(diǎn)的節(jié)點(diǎn)而言,所對應(yīng)的目標(biāo)語言描述處于最低層;一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)是指從屬于該節(jié)點(diǎn)的、作為該節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn)。本發(fā)明的技術(shù)方案實(shí)現(xiàn)了兩種程序高級(jí)設(shè)計(jì)語言的轉(zhuǎn)換,生成的目標(biāo)語言描述格式清楚,是規(guī)范的、格式化的,具有可讀性和可維護(hù)性。本發(fā)明的一個(gè)優(yōu)化方案能夠在發(fā)現(xiàn)錯(cuò)誤后,自動(dòng)調(diào)整,以發(fā)現(xiàn)更多的錯(cuò)誤,同時(shí)報(bào)告出錯(cuò)誤的位置和修改方法,從而盡可能多地準(zhǔn)確地報(bào)告出源語言的錯(cuò)誤位置及修改方法;經(jīng)實(shí)際測試,可以有效地、準(zhǔn)確地發(fā)現(xiàn)足夠多的錯(cuò)-誤,大大方便了用戶的使用。圖1是本發(fā)明實(shí)施例一中轉(zhuǎn)換器所在系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖2是本發(fā)明實(shí)施例一中轉(zhuǎn)換器的功能結(jié)構(gòu)圖3是本發(fā)明實(shí)施例一中轉(zhuǎn)換器的目標(biāo)語言生成裝置的處理流程圖4是本發(fā)明實(shí)施例一中轉(zhuǎn)換器的錯(cuò)誤處理裝置的處理流程圖5是本發(fā)明實(shí)施例一中轉(zhuǎn)換的方法的處理流程圖6是一種發(fā)現(xiàn)一個(gè)源語言錯(cuò)誤后就停止處理的高級(jí)語言轉(zhuǎn)換方法的處理流程圖。具體實(shí)施例方式下面將結(jié)合附圖及實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。本發(fā)明的重點(diǎn)是構(gòu)造一個(gè)這樣的轉(zhuǎn)換器和轉(zhuǎn)換的方法產(chǎn)生的目標(biāo)語言10描述是格式化的,具有可讀性和可維護(hù)性的;進(jìn)一步的,如果發(fā)現(xiàn)源語言錯(cuò)誤,會(huì)報(bào)告出錯(cuò)誤,同時(shí)還能夠繼續(xù)處理以便發(fā)現(xiàn)更多的錯(cuò)誤;實(shí)施例一,一種高級(jí)語言的轉(zhuǎn)換器,其在整個(gè)系統(tǒng)中的位置如圖1所示;用于將源語言轉(zhuǎn)換為目標(biāo)語言描述。本實(shí)施例中,源語言ST是IEC61131-3規(guī)定的一種用于工業(yè)控制的結(jié)構(gòu)化編程語言,類似于PASCAL語言,該語言目前是國際通用的工業(yè)控制編程標(biāo)準(zhǔn)語言之一;目標(biāo)語言是眾所周知的C語言,該語言得到處理器業(yè)界廣泛的支持,可以容易地獲得各種平臺(tái)的C編譯器。實(shí)際應(yīng)用中用于轉(zhuǎn)換的源語言和目標(biāo)語言不以本實(shí)施例為限。所述高級(jí)語言的轉(zhuǎn)換器如圖2所示,包括詞法分析裝置、語法分析裝置、語義分析裝置和目標(biāo)語言生成裝置。詞法分析裝置,用于接收源語言編輯器輸出的ASCII碼序列,并輸出一個(gè)個(gè)帶有屬性的ASCII序列組合;語法分析裝置,用于接收所述詞法分析裝置輸出的帶有屬性的ASCII序列組合,根據(jù)源語言語法結(jié)構(gòu),得到LR(1)分析表,生成語法分析樹并輸出;語義分析裝置,用于驗(yàn)證所述語法分析裝置輸出的語法分析樹的有效性,輸出驗(yàn)證合格的語法分析樹;目標(biāo)語言生成裝置,用于接收所述語義分析裝置輸出的驗(yàn)證合格的語法分析樹,對該語法分析樹進(jìn)行后序遍歷,生成等價(jià)的具有可讀性和可維護(hù)性的目標(biāo)語言描述。所述目標(biāo)語言生成裝置的處理流程如圖3所示對語法分析樹進(jìn)行后序遍歷;因?yàn)镾T和C都是結(jié)構(gòu)化的語言,具有類似的語法結(jié)構(gòu),僅僅表述方式不同,所述目標(biāo)語言生成裝置中保存了源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,根據(jù)該對應(yīng)關(guān)系生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述。如果要求所述目標(biāo)語言生成裝置生成的目標(biāo)語言描述具有可讀性和可維護(hù)性,就需要目標(biāo)語言描述按照一定格式進(jìn)行格式化。格式化的主要的要求是目標(biāo)語言描述本身是具有層次的,舉例如下(已格式化)voidmain0intajintbjfloatc-3.1415926;a=10+b.,if(sin(c)>0)b=10;b=20;for(a=1;a<10;a++)c=c+1;如例中所示,main為0層,變量聲明部分為l層,賦值語句a二10+b為1層;if語句的條件部分和else為1層,b=10和b=20為2層,for語句的條件部分為l層,。=。+1為2層;N層表示該行左邊Tab字符的個(gè)數(shù)為N。為了使生成的目標(biāo)語言格式化,目標(biāo)語言生成裝置當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所生成的目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符,本實(shí)施例中為Tab字符;比如一條目標(biāo)語言描述的層次為3時(shí),在該條目標(biāo)語言描述左邊添加3個(gè)Tab字符。實(shí)際應(yīng)用時(shí),也不排除用其它特定字符,比如空格來代替Tab字符。12所述目標(biāo)語言生成裝置中保存各類型節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片段中,各條目標(biāo)語言描述之間的層次關(guān)系;所述目標(biāo)語言生成裝置根據(jù)該層次關(guān)系確定各條目標(biāo)語言描述的層次。本實(shí)施例中,一種各條目標(biāo)語言描述之間的層次關(guān)系如下對于一個(gè)節(jié)點(diǎn)中包含的各個(gè)處理子節(jié)點(diǎn),其對應(yīng)的目標(biāo)語言描述的層次相同,并且比該節(jié)點(diǎn)高;對于不是任何節(jié)點(diǎn)的處理子節(jié)點(diǎn)的節(jié)點(diǎn)而言,比如main節(jié)點(diǎn),所對應(yīng)的目標(biāo)語言描述處于最低層,比如可以是0層。實(shí)際應(yīng)用中,可以根據(jù)需要自行規(guī)定各條目標(biāo)語言描述之間的層次關(guān)系。本實(shí)施例中,一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)是指從屬于該節(jié)點(diǎn)的、作為該節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn),比如上例里,main節(jié)點(diǎn)中的賦值節(jié)點(diǎn)、for節(jié)點(diǎn)、if節(jié)點(diǎn)均為main節(jié)點(diǎn)的處理子節(jié)點(diǎn);而for節(jié)點(diǎn)和if節(jié)點(diǎn)中的賦值節(jié)點(diǎn)則分別為for節(jié)點(diǎn)和if節(jié)點(diǎn)的處理子節(jié)點(diǎn);假設(shè)if節(jié)點(diǎn)中還嵌套了另一個(gè)if節(jié)點(diǎn),則該內(nèi)層的if節(jié)點(diǎn)也是外層if節(jié)點(diǎn)的處理子節(jié)點(diǎn),其它情況可以類推。對于C語言來說,可以將一個(gè)節(jié)點(diǎn)后"{}"中的節(jié)點(diǎn)認(rèn)為是該節(jié)點(diǎn)的處理子節(jié)點(diǎn)。另外,對于if節(jié)點(diǎn)、for節(jié)點(diǎn)等具有條件部分的節(jié)點(diǎn)而言,其對應(yīng)的目標(biāo)語言描述中,條件部分,比如if(a〉b),再比如for(a^1;a<=20;a+=2)就是該節(jié)點(diǎn)本身所對應(yīng)的目標(biāo)語言描述,描述判斷后所進(jìn)行的行為的語句才是處理子節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述;特別是對于if節(jié)點(diǎn),"if,對應(yīng)的"else"和"end—if'語句都是該節(jié)點(diǎn)本身所對應(yīng)的目標(biāo)語言描述。本實(shí)施例中,采用變量nTab來表示目標(biāo)語言描述所處的層次,這樣就可以很方便地用nTab的遞增遞減關(guān)系來表示一節(jié)點(diǎn)與該節(jié)點(diǎn)中的內(nèi)容所對應(yīng)的目標(biāo)語言描述的層次關(guān)系。所述目標(biāo)語言生成裝置當(dāng)生成目標(biāo)語言描述時(shí),根據(jù)所生成的目標(biāo)語言描述的nTab,在該條目標(biāo)語言描述的左邊添加nTab個(gè)Tab字符。本實(shí)施例中,一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab,為該節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab力。1;相應(yīng)的,一個(gè)節(jié)點(diǎn)對應(yīng)的目標(biāo)i吾言描述的nTab,為該節(jié)點(diǎn)的處理子節(jié)點(diǎn)對應(yīng)的目標(biāo)_浯言描述的nTab減1;實(shí)際應(yīng)用時(shí),可以用其它正整數(shù)代替l。比如main節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab=0,main中各處理子節(jié)點(diǎn)只于13應(yīng)的目標(biāo)語言描述的nTab為0+1=1;所述目標(biāo)語言生成裝置生成目標(biāo)語言描述片段時(shí),main對應(yīng)的目標(biāo)語言描述左邊無Tab字符,而main中的各處理子節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述中,左邊都各有1個(gè)Tab字符。再比如IF節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab為1,則IF節(jié)點(diǎn)中的處理子節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab為1+1=2;如果該IF節(jié)點(diǎn)是main節(jié)點(diǎn)的處理子節(jié)點(diǎn),則main節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab=l-O二O,而該main節(jié)點(diǎn)中另一處理子節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab也為1;如果IF節(jié)點(diǎn)中嵌套了另一個(gè)IF節(jié)點(diǎn),則處于內(nèi)層的IF節(jié)點(diǎn)相當(dāng)于外層IF節(jié)點(diǎn)的處理子節(jié)點(diǎn),因此內(nèi)層IF節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述的nTab也為1+1=2;如果該IF節(jié)點(diǎn)對應(yīng)有ELSE,則目標(biāo)語言描述中的else語句的nTab也為1,而else語句后的"{}"里的賦值語句的nTab則為1+1=2;當(dāng)所述目標(biāo)語言生成裝置生成目標(biāo)語言描述片段時(shí),IF條件語句左邊有1個(gè)Tab字符,而IF中賦值語句左邊有2個(gè)Tab字符。下面用幾類常用節(jié)點(diǎn)加以說明。比如源語言ST代碼為PROGRAMtestPRGVARa:INT:=10;b:INT:=20;END—VARFORa:=1to20by2DOb:=b+a;END—FOR以其中的FOR節(jié)點(diǎn)生成目標(biāo)語言片段為例,假設(shè)FOR節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述的層次為nTab,,所述目標(biāo)語言生成裝置生成FOR節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片段的處理過程如下對于FOR節(jié)點(diǎn)的條件部分14生成"nTab!個(gè)Tab符+對應(yīng)目標(biāo)語言的FOR條件"格式的目標(biāo)語言描述;對于FOR節(jié)點(diǎn)的處理子節(jié)點(diǎn)將nTab!+l得到nTab2;生成"nTab2個(gè)Tab符+對應(yīng)目標(biāo)語言的FOR節(jié)點(diǎn)處理子節(jié)點(diǎn)部分"格式的目標(biāo)語言描述;對于和FOR節(jié)點(diǎn)從屬于同一節(jié)點(diǎn)的其它節(jié)點(diǎn),或END—FOR語句等將nTab2-1得到nTab3;生成"nTab3個(gè)Tab符+對應(yīng)目標(biāo)語言的部分"格式的目標(biāo)語言描述。假設(shè)當(dāng)所述目標(biāo)語言生成裝置處理到例子ST中FOR節(jié)點(diǎn)時(shí),nTab-l;按照模式生成的目標(biāo)語言描述片段如下所示for(a=1;a<=20;a+=2)b=b+a;再比如,假設(shè)IF節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述的層次為nTab,所述目標(biāo)語言生成裝置生成IF節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片段的處理過程如下對于IF節(jié)點(diǎn)的條件部分生成"nTab個(gè)Tab符+對應(yīng)目標(biāo)語言的條件內(nèi)容"格式的目標(biāo)語言描述;對于IF節(jié)點(diǎn)的處理子節(jié)點(diǎn),或if對應(yīng)的else中的處J里子節(jié)點(diǎn)將nTabi+1得到nTab2;生成"nTab2個(gè)Tab符+對應(yīng)目標(biāo)語言的IF節(jié)點(diǎn)處理子節(jié)點(diǎn)部分"格式的目標(biāo)i吾言描述;對于和IF節(jié)點(diǎn)從屬于同一節(jié)點(diǎn)的其它節(jié)點(diǎn),或else、END—IF語句等將nTab2-1得到nTab3;生成"nTab3個(gè)Tab符+對應(yīng)目標(biāo)語言的部分"格式的目標(biāo)語言描述。再比如,假設(shè)賦值節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述的層次為nTab,所述目標(biāo)語言生成裝置生成賦值節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片^a的處理過程如下生成"nTab個(gè)Tab符+對應(yīng)目標(biāo)語言的描述"格式的目標(biāo)語言描述。本實(shí)施例中,所述高級(jí)語言的轉(zhuǎn)換器還可以進(jìn)一步包括錯(cuò)誤處理裝置;本實(shí)施例中,源語言依順序經(jīng)詞法分析裝置、語法分析裝置、語義分析裝置,以及目標(biāo)語言生成裝置處理,便轉(zhuǎn)換成為等價(jià)的另外一種高級(jí)語言描述;在以上各個(gè)裝置(目標(biāo)語言生成裝置和詞法分析裝置除外)中都可能發(fā)現(xiàn)錯(cuò)誤,如果發(fā)現(xiàn)了錯(cuò)誤,報(bào)告錯(cuò)誤給錯(cuò)誤處理裝置處理,以便繼續(xù)發(fā)現(xiàn)更多錯(cuò)誤。所述語法分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;所述語義分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤^^艮告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;錯(cuò)誤處理裝置,用于當(dāng)收到所述語法分析裝置或所述語義分析裝置"R告的錯(cuò)誤后,根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài);主要目的是為了讓所述目標(biāo)語言生成裝置以外的其它裝置發(fā)現(xiàn)更多的錯(cuò)誤。本實(shí)施例中,所述語法分析裝置,或者所述語義分析裝置發(fā)現(xiàn)一個(gè)錯(cuò)誤后,可以發(fā)現(xiàn)該錯(cuò)誤的錯(cuò)誤內(nèi)容和錯(cuò)誤狀態(tài);所述語法分析裝置,或者所述語義分析裝置將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置可以但不限于是指將所發(fā)現(xiàn)錯(cuò)誤的錯(cuò)誤內(nèi)容和錯(cuò)誤狀態(tài)傳遞給所述錯(cuò)誤處理裝置。所述錯(cuò)誤內(nèi)容包括錯(cuò)誤描述和錯(cuò)誤位置,可以但不限于用一個(gè)結(jié)構(gòu)體來表示,在本實(shí)施例中所述錯(cuò)誤內(nèi)容包含的主要內(nèi)容有structcharstrError[];16intiRow,iCol;其中,strError為字符串,存儲(chǔ)了錯(cuò)誤描述;iRow和iCol表示錯(cuò)誤位置,比如發(fā)生錯(cuò)誤在源語言中行和列。在實(shí)際應(yīng)用時(shí),也不排除用別的方式表示錯(cuò)誤內(nèi)容,比如用其它方式指示錯(cuò)誤位置或存儲(chǔ)錯(cuò)誤描述。所述錯(cuò)誤狀態(tài)可以但不限于用一個(gè)整型數(shù)值來表示,指示錯(cuò)誤發(fā)生部分所在節(jié)點(diǎn)的類型,所述語法分析裝置、所述語義分析裝置和所述^"誤處理裝置中保存各整型數(shù)值與節(jié)點(diǎn)類型的對應(yīng)關(guān)系;節(jié)點(diǎn)的類型主要包括以下幾種類型中的一種或幾種IF節(jié)點(diǎn),賦值節(jié)點(diǎn)、WHILE節(jié)點(diǎn)、DO-WHILE節(jié)點(diǎn)、FOR節(jié)點(diǎn)、調(diào)用節(jié)點(diǎn)、CASE節(jié)點(diǎn)等。在實(shí)際應(yīng)用時(shí),也不排除用別的方式指示錯(cuò)誤狀態(tài),比如用字符串表示錯(cuò)誤狀態(tài)或直接發(fā)送錯(cuò)誤狀態(tài)。本實(shí)施例中,所述錯(cuò)誤處理的流程如圖4所示;錯(cuò)誤處理裝置可以首先把相應(yīng)的錯(cuò)誤內(nèi)容報(bào)告給用戶;還可以進(jìn)一步在錯(cuò)誤處理裝置中保存各種錯(cuò)誤描述對應(yīng)的修改方法,在報(bào)告錯(cuò)誤內(nèi)容時(shí)也報(bào)告相應(yīng)的修改方法;然后再根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)。本實(shí)施例中,所述錯(cuò)誤處理裝置根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)具體是指所述錯(cuò)誤處理裝置根據(jù)錯(cuò)誤狀態(tài)確定錯(cuò)誤處理目標(biāo),該錯(cuò)誤處理目標(biāo)的實(shí)現(xiàn)依據(jù)就是該錯(cuò)誤狀態(tài)對應(yīng)的跳出標(biāo)志;找到該錯(cuò)誤狀態(tài)的跳出標(biāo)志,然后將所找到的跳出標(biāo)志告知報(bào)告錯(cuò)誤的裝置;可以是返回一個(gè)消息通知報(bào)告錯(cuò)誤的裝置所述跳出標(biāo)志,也可以是觸發(fā)或指示報(bào)告錯(cuò)誤的裝置讀取該跳出標(biāo)志o本實(shí)施例中,所述語法分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指所述語法分析裝置在待處理的ASCII序列組合中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)處理該跳出標(biāo)志之后的ASCII序列組合。本實(shí)施例中,所述語義分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指17所述語義分析裝置在待驗(yàn)證的語法分析樹中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)驗(yàn)證該跳出標(biāo)志之后的語法分析樹。比如對于錯(cuò)誤狀態(tài)為錯(cuò)誤在IF節(jié)點(diǎn)中,錯(cuò)誤處理目標(biāo)是跳出IF節(jié)點(diǎn),跳出IF節(jié)點(diǎn)的實(shí)現(xiàn)依據(jù)是找到END一IF序列;錯(cuò)誤處理目標(biāo)不僅僅是跳出出錯(cuò)的節(jié)點(diǎn),還包括調(diào)整語法分析狀態(tài)。舉例說明<table>tableseeoriginaldocumentpage18</column></row><table>例子中語法分析裝置進(jìn)行語法分析時(shí),當(dāng)處理到(a十THEN時(shí),便發(fā)現(xiàn)了錯(cuò)誤,因?yàn)檫@種用法已經(jīng)破壞了ST語法;語法分析裝置可以發(fā)現(xiàn)錯(cuò)誤的原因是"+"后面需要的是一個(gè)變量而不是"THEN",另外錯(cuò)誤狀態(tài)為IF節(jié)點(diǎn)。語法分析裝置把這些信息傳遞給錯(cuò)誤處理裝置;錯(cuò)誤處理裝置首先4巴錯(cuò)誤內(nèi)容報(bào)告出來,如"第3行+后需要變量或者THEN前需要變量",然后因?yàn)殄e(cuò)誤狀態(tài)為IF節(jié)點(diǎn),找到該錯(cuò)誤狀態(tài)對應(yīng)的跳出標(biāo)志END—IF序歹'J,然后繼續(xù)后面的處理。所述錯(cuò)誤處理裝置可以保存錯(cuò)誤狀態(tài)與跳出標(biāo)志的對應(yīng)關(guān)系,而無需確定錯(cuò)誤處理目標(biāo);可以但不限于將錯(cuò)誤狀態(tài)與跳出標(biāo)志的對應(yīng)關(guān)系保存為表格形式,如下表所示。表l、4普誤狀態(tài)和跳出標(biāo)志的對應(yīng)關(guān)系表<table>tableseeoriginaldocumentpage18</column></row><table><table>tableseeoriginaldocumentpage19</column></row><table>本實(shí)施例的處理流程如圖5所示(圖中只給出了從錯(cuò)誤處理裝置返回語法分析裝置的情況,本實(shí)施例中還包括從錯(cuò)誤處理裝置返回語義分析裝置),源語言順序經(jīng)詞法分析裝置、語法分析裝置、語義分析裝置處理后,沒有發(fā)現(xiàn)錯(cuò)誤,就會(huì)生成經(jīng)驗(yàn)證合格的語法分析樹,輸入給目標(biāo)語言生成裝置;當(dāng)發(fā)現(xiàn)錯(cuò)誤后只是暫停處理,跳轉(zhuǎn)到錯(cuò)誤處理步驟,當(dāng)根據(jù)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行處理,進(jìn)入另一個(gè)合法的狀態(tài)后,將返回原先暫停處理的步驟繼續(xù)處理,而發(fā)現(xiàn)一個(gè)源語言錯(cuò)誤后就停止處理的高級(jí)語言轉(zhuǎn)換方法的處理流程圖如圖6所示,與圖5相比可以看出,本實(shí)施例中因此可以讓所述目標(biāo)語言生成裝置和詞法分析裝置以外的其它裝置發(fā)現(xiàn)更多的錯(cuò)誤。實(shí)施例二、一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法,所述方法包括以下步驟A、根據(jù)源語言編輯器輸出的ASCII碼序列,生成一個(gè)個(gè)帶有屬性的ASCII序列組合,進(jìn)行步驟B;B、根據(jù)源語言語法結(jié)構(gòu),由所述帶有屬性的ASCII序列組合得到LR(l)分析表,生成語法分析樹,進(jìn)行步驟C;C、驗(yàn)證所述語法分析樹的有效性,驗(yàn)證合格后進(jìn)行步驟D;D、根據(jù)驗(yàn)證合格的語法分析樹生成等價(jià)的具有可讀性和可維護(hù)性的目標(biāo)語言描述;結(jié)束。本實(shí)施例中,步驟D具體包括對驗(yàn)證合格的語法分析樹進(jìn)行后序遍歷,根據(jù)預(yù)存的源語言語法分析初t中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;根據(jù)預(yù)存的各條目標(biāo)語言描述之間的層次關(guān)系,確定各條目標(biāo)語言描述的層次;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所生成的目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符,本實(shí)施例中為Tab字符。關(guān)于各類型節(jié)點(diǎn)中的層次關(guān)系細(xì)節(jié)可以同上一實(shí)施例所述,比如可以用一變量nTab來表示目標(biāo)語言描述所處的層次,當(dāng)生成目標(biāo)語言描述片段時(shí),在所生成的目標(biāo)語言描述左邊添加nTab個(gè)的Tab字符。所述方法中,所述方法還可以進(jìn)一步包括步驟E;步驟B和/或步驟C還可以進(jìn)一步包括當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,執(zhí)行步驟E;步驟B和/或步驟C中,當(dāng)發(fā)現(xiàn)一個(gè)錯(cuò)誤時(shí),可以發(fā)現(xiàn)該錯(cuò)誤的錯(cuò)誤內(nèi)容和錯(cuò)誤狀態(tài)。E、根據(jù)預(yù)存的錯(cuò)誤狀態(tài)和跳出標(biāo)志之間的對應(yīng)關(guān)系,找到所發(fā)現(xiàn)的錯(cuò)誤狀態(tài)的跳出標(biāo)志;根據(jù)該跳出標(biāo)志跳過錯(cuò)誤,然后從該跳出標(biāo)志之后開始,返回處于暫4f處理的步驟繼續(xù)處理,即返回步驟B或C繼續(xù)處理。本實(shí)施例中,步驟E中還可以包括報(bào)告錯(cuò)誤內(nèi)容;進(jìn)一步還可以包括根據(jù)預(yù)存的錯(cuò)誤描述和修改方法的對應(yīng)關(guān)系,報(bào)告錯(cuò)誤內(nèi)容時(shí)報(bào)告對應(yīng)的修改內(nèi)容。本實(shí)施例中,步驟E中根據(jù)跳出標(biāo)志跳過錯(cuò)誤,然后從該跳出標(biāo)志之后開始,返回處于暫停處理的步驟繼續(xù)處理具體是指如果是在步驟B中發(fā)現(xiàn)錯(cuò)誤,則在待處理的ASCII序列組合中,順序查找第一個(gè)跳出標(biāo)志,找到后從該跳出標(biāo)志之后的ASCII序列組合開始,返回步驟B繼續(xù)處理;如果是在步驟C中發(fā)現(xiàn)錯(cuò)誤,則在待驗(yàn)證的語法分析樹中,順序查找第一個(gè)跳出標(biāo)志,找到后從該該跳出標(biāo)志之后的語法分析樹開始,返回步驟C繼續(xù)處理。其它實(shí)現(xiàn)細(xì)節(jié)可以同上一實(shí)施例。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。權(quán)利要求1、一種高級(jí)語言的轉(zhuǎn)換器,其特征在于,包括詞法分析裝置,用于接收源語言編輯器輸出的ASCII碼序列,并輸出帶有屬性的ASCII序列組合;語法分析裝置,用于接收所述詞法分析裝置輸出的帶有屬性的ASCII序列組合,根據(jù)源語言語法結(jié)構(gòu),生成語法分析樹并輸出;語義分析裝置,用于驗(yàn)證所述語法分析裝置輸出的語法分析樹的有效性,輸出驗(yàn)證合格的語法分析樹;目標(biāo)語言生成裝置,用于保存源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,以及各類型節(jié)點(diǎn)對應(yīng)的目標(biāo)語言描述片段中,各條目標(biāo)語言描述之間的層次關(guān)系;所述目標(biāo)語言生成裝置當(dāng)接收所述語義分析裝置輸出的驗(yàn)證合格的語法分析樹后,對該語法分析樹進(jìn)行后序遍歷,根據(jù)所述對應(yīng)關(guān)系生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所述層次關(guān)系確定各條目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符。2、如權(quán)利要求1所述的轉(zhuǎn)換器,其特征在于,還包括錯(cuò)誤處理裝置;所述語法分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;所述語義分析裝置還用于當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí)暫停處理,將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置;根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理;錯(cuò)誤處理裝置,用于當(dāng)收到所述語法分析裝置或所述語義分析裝置報(bào)告的錯(cuò)誤后,根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)。3、如權(quán)利要求2所述的轉(zhuǎn)換器,其特征在于,所述語法分析裝置,或者所述語義分析裝置將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置是指將所發(fā)現(xiàn)錯(cuò)誤的錯(cuò)誤狀態(tài)傳遞給所述錯(cuò)誤處理裝置;所述錯(cuò)誤狀態(tài)指示錯(cuò)誤發(fā)生部分所在節(jié)點(diǎn)的類型;所述錯(cuò)誤處理裝置根據(jù)所報(bào)告的錯(cuò)誤指示報(bào)告錯(cuò)誤的裝置調(diào)整內(nèi)部狀態(tài)具體是指所述錯(cuò)誤處理裝置根據(jù)預(yù)存的錯(cuò)誤狀態(tài)與跳出標(biāo)志的對應(yīng)關(guān)系,確定所述錯(cuò)誤狀態(tài)對應(yīng)的跳出標(biāo)志,然后將所找到的跳出標(biāo)志告知報(bào)告錯(cuò)誤的裝置。4、如權(quán)利要求3所述的轉(zhuǎn)換器,其特征在于,所述語法分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指所述語法分析裝置在待處理的ASCII序列組合中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)處理該跳出標(biāo)志之后的ASCII序列組合;所述語義分析裝置根據(jù)錯(cuò)誤處理裝置的指示調(diào)整本裝置的內(nèi)部狀態(tài)后繼續(xù)處理具體是指所述語義分析裝置在待驗(yàn)證的語法分析樹中,順序查找第一個(gè)跳出標(biāo)志,找到后繼續(xù)驗(yàn)證該跳出標(biāo)志之后的語法分析樹。5、如權(quán)利要求2到4中任一項(xiàng)所述的轉(zhuǎn)換器,其特征在于,所述語法分析裝置,或者所述語義分析裝置將發(fā)現(xiàn)的錯(cuò)誤報(bào)告給錯(cuò)誤處理裝置是指將所發(fā)現(xiàn)錯(cuò)誤的錯(cuò)誤內(nèi)容傳遞給所述錯(cuò)誤處理裝置;所述錯(cuò)誤內(nèi)容包括錯(cuò)誤描述和錯(cuò)誤位置;所述錯(cuò)誤處理裝置還用于根據(jù)預(yù)存的錯(cuò)誤描述與修改方法的對應(yīng)關(guān)系,確定相應(yīng)的修改方法,以及報(bào)告所述錯(cuò)誤內(nèi)容及修改方法。6、如權(quán)利要求l、2到4中任一項(xiàng)所述的轉(zhuǎn)換器,其特征在于,目標(biāo)語言生成裝置所保存的各條目標(biāo)語言描述之間的層次關(guān)系為對于一個(gè)節(jié)點(diǎn)中包含的各個(gè)處理子節(jié)點(diǎn),其對應(yīng)的目標(biāo)語言描述的層次相同,并且比該節(jié)點(diǎn)高;對于不是任何節(jié)點(diǎn)的處理子節(jié)點(diǎn)的節(jié)點(diǎn)而言,所對應(yīng)的目標(biāo)語言描述處于最低層;一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)是指從屬于該節(jié)點(diǎn)的、作為該節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn)。7、一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法,包括以下步驟A、根據(jù)源語言編輯器輸出的ASCII碼序列,生成帶有屬性的ASCII序列組合,進(jìn)行步驟B;B、根據(jù)源語言語法結(jié)構(gòu),由所述帶有屬性的ASCII序列組合生成語法分析樹,進(jìn)行步驟C;C、驗(yàn)證所述語法分析樹的有效性,驗(yàn)證合格后進(jìn)行步驟D;D、對驗(yàn)證合格的語法分析樹進(jìn)行后序遍歷,根據(jù)預(yù)存的源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;根據(jù)預(yù)存的各條目標(biāo)語言描述之間的層次關(guān)系,確定各條目標(biāo)語言描述的層次;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所生成的目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符;結(jié)束。8、如權(quán)利要求7所述的方法,其特征在于,還包括步驟E;所述方法中,步驟B和/或步驟C還進(jìn)一步包括當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí),確定該錯(cuò)誤的錯(cuò)誤狀態(tài),暫停處理,執(zhí)行步驟E;E、根據(jù)預(yù)存的錯(cuò)誤狀態(tài)和跳出標(biāo)志之間的對應(yīng)關(guān)系,找到所發(fā)現(xiàn)的錯(cuò)誤狀態(tài)的跳出標(biāo)志;根據(jù)該跳出標(biāo)志跳過錯(cuò)誤,然后從該跳出標(biāo)志之后開始,返回處于暫停處理的步驟繼續(xù)處理。9、如權(quán)利要求8所述的方法,其特征在于,步驟B和/或步驟C還進(jìn)一步包括當(dāng)在處理中發(fā)現(xiàn)錯(cuò)誤時(shí),確定該錯(cuò)誤的錯(cuò)誤內(nèi)容;所述錯(cuò)誤內(nèi)容包括錯(cuò)誤描述和錯(cuò)誤位置;所述步驟E還包括根據(jù)預(yù)存的錯(cuò)誤描述與修改方法的對應(yīng)關(guān)系,確定相應(yīng)的修改方法,以及報(bào)告所述錯(cuò)誤內(nèi)容及修改方法。10、如權(quán)利要求7到9中任一項(xiàng)所述的方法,其特征在于,所述各條目標(biāo)語言描述之間的層次關(guān)系為對于一個(gè)節(jié)點(diǎn)中包含的各個(gè)處理子節(jié)點(diǎn),其對應(yīng)的目標(biāo)語言描述的層次相同,并且比該節(jié)點(diǎn)高;對于不是任何節(jié)點(diǎn)的處理子節(jié)點(diǎn)的節(jié)點(diǎn)而言,所對應(yīng)的目標(biāo)語言描述處于最低層;一個(gè)節(jié)點(diǎn)的處理子節(jié)點(diǎn)是指從屬于該節(jié)點(diǎn)的、作為該節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn)。全文摘要本發(fā)明公開了一種高級(jí)語言轉(zhuǎn)換成其它高級(jí)語言的方法及轉(zhuǎn)換器;轉(zhuǎn)換器包括詞法分析裝置,語法分析裝置,語義分析裝置,目標(biāo)語言生成裝置;目標(biāo)語言生成裝置該語法分析樹進(jìn)行后序遍歷,根據(jù)所保存的源語言語法分析樹中不同類型的節(jié)點(diǎn)和目標(biāo)語言描述片段之間的對應(yīng)關(guān)系,生成語法分析樹中每一個(gè)節(jié)點(diǎn)所對應(yīng)的目標(biāo)語言描述片段,所生成的目標(biāo)語言描述片段共同構(gòu)成目標(biāo)語言描述;當(dāng)生成目標(biāo)語言描述片段時(shí),根據(jù)所保存的各條目標(biāo)語言描述之間的層次關(guān)系確定各條目標(biāo)語言描述的層次,在該目標(biāo)語言描述左邊添加相應(yīng)數(shù)目的特定字符。本發(fā)明能夠轉(zhuǎn)換成規(guī)范的、格式化的,具有可讀性和可維護(hù)性的目標(biāo)語言描述。文檔編號(hào)G06F9/45GK101499015SQ20091008031公開日2009年8月5日申請日期2009年3月18日優(yōu)先權(quán)日2009年3月18日發(fā)明者劉金龍,波施,王沿海,趙雅囡申請人:北京和利時(shí)系統(tǒng)工程有限公司