fanyi chengxu
翻譯程序
translator
把一種程序設計語言所寫的程序翻譯成與之等價的另一種程序設計語言所表示的程序的軟件。被翻譯的程序稱為源程序,書寫源程序所用的程序設計語言稱為源語言。相應地,翻譯程序翻譯出的程序稱為目標程序(或結果程序),用於構成目標程序所用的語言稱為目標語言(或結果語言)。
翻譯程序最初是為瞭解决計算機不能直接執行程序設計語言所描述的程序而研製的。至今,這仍是翻譯程序的主要用途。但是,隨着計算機應用範圍的不斷擴大,又相繼出現了各種類型的翻譯程序,有的用於研製和調試新的軟件,有的用於分析、移植和模擬已有的軟件。
典型的實現途徑 為了使計算機能執行程序設計語言所描述的程序,翻譯程序有兩種典型的實現途徑,一種稱為生成性途徑,另一種稱為解釋性途徑。生成性途徑(圖兩種典型的實現途徑中a)的基本思想,是先由翻譯程序把源程序靜態地翻譯為目標程序(通常是機器語言程序),然後再由計算機執行目標程序,並利用輸入數據産生所需的輸出結果。這種實現途徑劃分為兩個明顯的階段,前一階段稱為生成階段,後一階段稱為運行階段。為了支持目標程序在運行階段運行,通常要配置各種各樣的子程序(如內存動態分配子程序、數組元素地址計算子程序等)。這些子程序的全體稱為運行程序。解釋性實現途徑(圖兩種典型的實現途徑中 b)的基本思想,是按照源程序中語句的動態執行順序逐句翻譯,並立即予以執行。這種實現途徑是將源程序的翻譯和運行合併成一個解釋階段完成。兩種實現途徑相比,生成性途徑能多遍掃視和加工源程序,翻譯出運行效率較高的目標程序,但缺點是靈活性較差,且算法較繁,不易實現;相反,解釋性途徑易於實現,且能靈活地插入各種調試措施和動態修改源程序的功能,其缺點是重複執行的語句要多次重複翻譯,運行效率較差。生成性途徑適用於以加工和計算為主、要求高效運行的場合,通常用於實現面嚮過程的程序設計語言(如FORTRAN、ALGOL、COBOL、PL/1、PASCAL)的翻譯程序,一般在成批處理方式下工作。解釋性途徑適用於以研究、調試和修改程序為主的場合,通常用於實現各種交互會話式語言(如BASIC、APL)的翻譯程序。
具體實現翻譯程序時,其實現途徑可有多種變形:有的衹有生成階段,而無運行階段;有的要經歷多個生成階段,再轉入運行階段;還有一些是在生成階段後用解釋階段替代運行階段。
常用的翻譯程序 基於實現途徑,翻譯程序有生成性和解釋性之分。對於生成性翻譯程序,如果源語言是某一高級程序設計語言,目標語言是某一計算機(或計算機族)的匯編語言或機器語言,則這種翻譯程序特稱為編譯程序。如果源語言是某一計算機的匯編語言,目標語言是相應計算機的機器語言,則這種翻譯程序稱為匯編程序。當運行目標程序的計算機內存較小,難以支持翻譯程序運行(如單板機),或其程序研製環境較差不易研製係統軟件或應用軟件(如嚮量計算機)時,一種較為有效的辦法是在一臺研製環境較好的計算機上,配置一個能産生目標機的機器語言程序的編譯程序或匯編程序。這種在某臺計算機上運行,産生另一臺計算機的機器語言程序的編譯程序或匯編程序,稱之為交叉編譯程序(或交叉匯編程序)。與編譯程序和匯編程序的翻譯過程相反,如果源語言是某一計算機的匯編語言或機器語言,而目標語言是某種高級程序設計語言,則這種翻譯程序稱為相應高級程序設計語言的逆編譯程序(或反編譯程序)。如果源語言是某一計算機的機器語言,而目標語言是相應計算機的匯編語言,則這種翻譯程序稱為逆匯編程序(或反 |