編譯器和轉(zhuǎn)譯器的區(qū)別
編譯器(compiler)是一種將高級語言轉(zhuǎn)換為低級匯編語言的軟件,我們都非常熟悉它的名稱和工作原理。轉(zhuǎn)譯器(transfiler)是另一種軟件,有時被稱為源碼到源碼編譯器,它將一種高級語言轉(zhuǎn)換為另一種高級語文。
?需要一個轉(zhuǎn)譯器的原因是,將一個大型程序用另一種語言重新編碼是非常耗時的。因此,最好編寫一個能完成這項工作的從一種語言到另一種語言的轉(zhuǎn)譯器。如果要閱讀每一篇外國研究論文,我們必須理解外語,那么這將需要付出很多努力。沒有翻譯的生活很艱難,沒有轉(zhuǎn)移器的生活也很艱難。
編譯器:編譯器是指以某種語言編寫的源代碼作為輸入,并將其轉(zhuǎn)換為其他語言的輸出代碼的任何程序,通常具有較低的抽象級別。在實踐中,編譯器將用高級編程語言編寫的代碼轉(zhuǎn)換為匯編語言,高級編程語言對機器的抽象程度更高,但對人類的可讀性更強。匯編語言在機器級抽象程度較低,很容易轉(zhuǎn)換為二進(jìn)制機器代碼,但對人的理解能力很低。在編譯器中,源代碼被掃描、解析、轉(zhuǎn)換為語義分析的抽象語法樹,然后轉(zhuǎn)換為中間代碼,最后轉(zhuǎn)換為匯編語言。
轉(zhuǎn)譯器:轉(zhuǎn)譯器還將用某種語言編寫的輸入源代碼轉(zhuǎn)換為另一種語言的輸出代碼,與源代碼相比,該語言具有類似的抽象級別。轉(zhuǎn)譯器將代碼從一種高級語言(如fortran)轉(zhuǎn)換為另一種具有類似抽象級別的高級語言(例如C++)。這個輸出對硬件來說仍然是抽象的,需要編譯器轉(zhuǎn)換成匯編語言才能在機器上運行。在轉(zhuǎn)譯器中,源代碼被解析,并轉(zhuǎn)換為抽象語法樹,然后轉(zhuǎn)換為中間模型。然后將其轉(zhuǎn)換為目標(biāo)語言的抽象語法樹,并生成代碼。
