翻譯程序
[拼音]:fanyi chengxu
[外文]:translator
把一種程序設(shè)計(jì)語(yǔ)言所寫的程序翻譯成與之等價(jià)的另一種程序設(shè)計(jì)語(yǔ)言所表示的程序的軟件。被翻譯的程序稱為源程序,書寫源程序所用的程序設(shè)計(jì)語(yǔ)言稱為源語(yǔ)言。相應(yīng)地,翻譯程序翻譯出的程序稱為目標(biāo)程序(或結(jié)果程序),用于構(gòu)成目標(biāo)程序所用的語(yǔ)言稱為目標(biāo)語(yǔ)言(或結(jié)果語(yǔ)言)。
翻譯程序最初是為了解決計(jì)算機(jī)不能直接執(zhí)行程序設(shè)計(jì)語(yǔ)言所描述的程序而研制的。至今,這仍是翻譯程序的主要用途。但是,隨著計(jì)算機(jī)應(yīng)用范圍的不斷擴(kuò)大,又相繼出現(xiàn)了各種類型的翻譯程序,有的用于研制和調(diào)試新的軟件,有的用于分析、移植和模擬已有的軟件。
典型的實(shí)現(xiàn)途徑
為了使計(jì)算機(jī)能執(zhí)行程序設(shè)計(jì)語(yǔ)言所描述的程序,翻譯程序有兩種典型的實(shí)現(xiàn)途徑,一種稱為生成性途徑,另一種稱為解釋性途徑。生成性途徑(圖中a)的基本思想,是先由翻譯程序把源程序靜態(tài)地翻譯為目標(biāo)程序(通常是機(jī)器語(yǔ)言程序),然后再由計(jì)算機(jī)執(zhí)行目標(biāo)程序,并利用輸入數(shù)據(jù)產(chǎn)生所需的輸出結(jié)果。這種實(shí)現(xiàn)途徑劃分為兩個(gè)明顯的階段,前一階段稱為生成階段,后一階段稱為運(yùn)行階段。為了支持目標(biāo)程序在運(yùn)行階段運(yùn)行,通常要配置各種各樣的子程序(如內(nèi)存動(dòng)態(tài)分配子程序、數(shù)組元素地址計(jì)算子程序等)。這些子程序的全體稱為運(yùn)行程序。解釋性實(shí)現(xiàn)途徑(圖中 b)的基本思想,是按照源程序中語(yǔ)句的動(dòng)態(tài)執(zhí)行順序逐句翻譯,并立即予以執(zhí)行。這種實(shí)現(xiàn)途徑是將源程序的翻譯和運(yùn)行合并成一個(gè)解釋階段完成。兩種實(shí)現(xiàn)途徑相比,生成性途徑能多遍掃視和加工源程序,翻譯出運(yùn)行效率較高的目標(biāo)程序,但缺點(diǎn)是靈活性較差,且算法較繁,不易實(shí)現(xiàn);相反,解釋性途徑易于實(shí)現(xiàn),且能靈活地插入各種調(diào)試措施和動(dòng)態(tài)修改源程序的功能,其缺點(diǎn)是重復(fù)執(zhí)行的語(yǔ)句要多次重復(fù)翻譯,運(yùn)行效率較差。生成性途徑適用于以加工和計(jì)算為主、要求高效運(yùn)行的場(chǎng)合,通常用于實(shí)現(xiàn)面向過程的程序設(shè)計(jì)語(yǔ)言(如FORTRAN、ALGOL、COBOL、PL/1、PASCAL)的翻譯程序,一般在成批處理方式下工作。解釋性途徑適用于以研究、調(diào)試和修改程序?yàn)橹鞯膱?chǎng)合,通常用于實(shí)現(xiàn)各種交互會(huì)話式語(yǔ)言(如BASIC、APL)的翻譯程序。
具體實(shí)現(xiàn)翻譯程序時(shí),其實(shí)現(xiàn)途徑可有多種變形:有的只有生成階段,而無運(yùn)行階段;有的要經(jīng)歷多個(gè)生成階段,再轉(zhuǎn)入運(yùn)行階段;還有一些是在生成階段后用解釋階段替代運(yùn)行階段。
常用的翻譯程序
基于實(shí)現(xiàn)途徑,翻譯程序有生成性和解釋性之分。對(duì)于生成性翻譯程序,如果源語(yǔ)言是某一高級(jí)程序設(shè)計(jì)語(yǔ)言,目標(biāo)語(yǔ)言是某一計(jì)算機(jī)(或計(jì)算機(jī)族)的匯編語(yǔ)言或機(jī)器語(yǔ)言,則這種翻譯程序特稱為編譯程序。如果源語(yǔ)言是某一計(jì)算機(jī)的匯編語(yǔ)言,目標(biāo)語(yǔ)言是相應(yīng)計(jì)算機(jī)的機(jī)器語(yǔ)言,則這種翻譯程序稱為匯編程序。當(dāng)運(yùn)行目標(biāo)程序的計(jì)算機(jī)內(nèi)存較小,難以支持翻譯程序運(yùn)行(如單板機(jī)),或其程序研制環(huán)境較差不易研制系統(tǒng)軟件或應(yīng)用軟件(如向量計(jì)算機(jī))時(shí),一種較為有效的辦法是在一臺(tái)研制環(huán)境較好的計(jì)算機(jī)上,配置一個(gè)能產(chǎn)生目標(biāo)機(jī)的機(jī)器語(yǔ)言程序的編譯程序或匯編程序。這種在某臺(tái)計(jì)算機(jī)上運(yùn)行,產(chǎn)生另一臺(tái)計(jì)算機(jī)的機(jī)器語(yǔ)言程序的編譯程序或匯編程序,稱之為交叉編譯程序(或交叉匯編程序)。與編譯程序和匯編程序的翻譯過程相反,如果源語(yǔ)言是某一計(jì)算機(jī)的匯編語(yǔ)言或機(jī)器語(yǔ)言,而目標(biāo)語(yǔ)言是某種高級(jí)程序設(shè)計(jì)語(yǔ)言,則這種翻譯程序稱為相應(yīng)高級(jí)程序設(shè)計(jì)語(yǔ)言的逆編譯程序(或反編譯程序)。如果源語(yǔ)言是某一計(jì)算機(jī)的機(jī)器語(yǔ)言,而目標(biāo)語(yǔ)言是相應(yīng)計(jì)算機(jī)的匯編語(yǔ)言,則這種翻譯程序稱為逆匯編程序(或反匯編程序)。逆編譯程序或逆匯編程序通常在剖析只有目標(biāo)程序的軟件的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)算法時(shí),或是在調(diào)試目標(biāo)程序需要給出源程序一級(jí)上的調(diào)試信息時(shí)使用。對(duì)于解釋性途徑,一般將解釋性翻譯程序簡(jiǎn)稱為解釋程序。
翻譯程序編寫系統(tǒng) (TWS)
凡有助于減輕編寫翻譯程序(包括編譯程序、解釋程序、匯編程序)工作的任何軟件系統(tǒng)或一組軟件系統(tǒng),統(tǒng)稱為翻譯程序編寫系統(tǒng),如產(chǎn)生式語(yǔ)言的編譯程序和自動(dòng)分析語(yǔ)法的構(gòu)造程序等。設(shè)計(jì)這種系統(tǒng)的目的,在于簡(jiǎn)化翻譯程序的實(shí)現(xiàn)。這種系統(tǒng)包含很多翻譯程序所必須執(zhí)行的各種基本操作,如建立、查找符號(hào)表操作,生成目標(biāo)代碼操作等。
翻譯程序編寫系統(tǒng)可歸納為三類:
(1)自動(dòng)產(chǎn)生編譯程序的“編譯程序的編譯程序”。只要給出某一高級(jí)程序設(shè)計(jì)語(yǔ)言的語(yǔ)法規(guī)則和語(yǔ)義描述,這些程序即能自動(dòng)地產(chǎn)生相應(yīng)語(yǔ)言的編譯程序。
(2)面向語(yǔ)法的符號(hào)加工程序。這些程序比較通用,可用于表達(dá)式的符號(hào)化簡(jiǎn)、數(shù)據(jù)格式的轉(zhuǎn)換、把一種高級(jí)語(yǔ)言翻譯為另一種高級(jí)語(yǔ)言等。
(3)由可擴(kuò)充語(yǔ)言組成的集合,允許程序員利用已有的數(shù)據(jù)類型和語(yǔ)句去定義新的數(shù)據(jù)類型和語(yǔ)句。
如果沒有可供使用的翻譯程序編寫系統(tǒng)時(shí),可采用自展法實(shí)現(xiàn)語(yǔ)言的編譯程序。自展法的基本思想,是先對(duì)語(yǔ)言選擇一小子集語(yǔ)言并用匯編語(yǔ)言或機(jī)器語(yǔ)言寫出其編譯程序;然后,利用這個(gè)小子集語(yǔ)言及其編譯程序,編寫并產(chǎn)生更大子集語(yǔ)言的編譯程序;如此重復(fù),經(jīng)過一系列的擴(kuò)充步驟,最后產(chǎn)生出最初語(yǔ)言的編譯程序。
- 參考書目
-
- D. Gries, Compiler Construction for Digital Computers, Wiley, New York,1971.
建筑資質(zhì)代辦咨詢熱線:13198516101
標(biāo)簽:翻譯程序
版權(quán)聲明:本文采用知識(shí)共享 署名4.0國(guó)際許可協(xié)議 [BY-NC-SA] 進(jìn)行授權(quán)
文章名稱:《翻譯程序》
文章鏈接:http://m.fjemb.com/13443.html
該作品系作者結(jié)合建筑標(biāo)準(zhǔn)規(guī)范、政府官網(wǎng)及互聯(lián)網(wǎng)相關(guān)知識(shí)整合。如若侵權(quán)請(qǐng)通過投訴通道提交信息,我們將按照規(guī)定及時(shí)處理。