源語言、目標語言、翻譯器、編譯器、直譯器

白色風車發表於2019-05-07

能夠完成從一種語言到另一種語言的保語義變換的軟體稱為翻譯器,這兩種語言分別稱為該翻譯器的源語言和目標語言。編譯器是一種翻譯器,它的特點是目標語言比源語言低階。

直譯器是不同於編譯器的另一類語言處理器。直譯器不像編譯器那樣通過翻譯來生成目標程式,而是直接執行源程式所指定的運算。直譯器也有和編譯器類似的地方,它也需要對源程式進行詞法分析、語法分析和語義分析等,這樣它才有可能知道源程式指定了一些什麼運算。

解釋執行的效率比編譯器生成的機器程式碼的執行效率低。對於編譯方式來說,對源程式的詞法分析、語法分析和語義分析只要進行一次。而對於解釋執行來說,每次執行到源程式的某個語句,都要對它進行一次詞法分析、語法分析和語義分析,確定了這個語句的含義後,才能執行它指定的運算。顯然,反覆分析迴圈體降低了解釋執行的效率,所以解釋執行要尋找一種適合於解釋的中間語言,以縮短反覆分析源程式需要的時間。

在 20 世紀 80 年代的 BASIC 語言階段,直譯器的功能是這樣介紹的:它將高階語言的源程式翻譯成一種中間語言程式,然後對中間語言程式進行解釋執行。在那個年代,直譯器的兩個功能(編譯和解釋)是合在一個程式中的,因此這個程式被統稱為直譯器。進入 Java 語言年代,直譯器的上述兩個功能分離在兩個程式中,前一個程式稱編譯器,它把 Java 語言的程式翻譯成一種中間語言程式,這種中間語言叫做位元組碼;後一個程式稱直譯器,它對位元組碼程式進行解釋執行。

相關文章