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