解釋器檢視原始碼討論檢視歷史
解釋器 |
解釋器(英語:Interpreter),又譯為直譯器,是一種電腦程序,能夠把高級編程語言一行一行直接轉譯運行。解釋器不會一次把整個程序轉譯出來,只像一位「中間人」,每次運行程序時都要先轉成另一種語言再作運行,因此解釋器的程序運行速度比較緩慢。它每轉譯一行程序敘述就立刻運行,然後再轉譯下一行,再運行,如此不停地進行下去。
簡介
Python、TCL和各種Shell程序一般而言是使用解釋器執行的。微軟公司的Qbasic語言也是解釋方式,它不能生成可執行程序(但Quick Basic和Visual Basic可以);運用廣泛的網絡編程語言java則同時有解釋和編譯方式。在開始之前有必要再次強調:下面介紹的解釋器是一個源代碼解釋器。也就是說,解釋器在執行時,每次讀入一條語句,並且根據這條語句執行特定的操作;然後再讀入下一條語句,依次類推。這與偽代碼解釋器是有所區別的,例如早期的Java運行時系統。兩者的區別在於:源代碼解釋器直接對程序的源代碼解釋執行;而偽代碼解釋器先將程序的源代碼轉化為某種與機器無關的中間代碼,然後再執行中間代碼。相比之下,源代碼解釋器更易於創建,並且不需要一個獨立的編譯過程。
評價
Small BASIC解釋器包括兩個主要的子系統:一個是表達式解析器,負責處理數字表達式;另一個是解釋器,負責程序的實際執行。對於前者,可採用本書第二章所介紹的表達式解析器。但是在這裡做了某些改進,使得解析器能夠解析包含在程序語句中的數字表達式,而不是只能解析孤立的表達式。解釋器子系統和解析器子系統包含在同一個解釋器類中,該類名為SBasic。儘管從理論上講可以使用兩個獨立的類:一個包含解釋器,另一個包含表達式解析器;但是將兩者用同一個類來實現的代效率會更高,因為表達式解析器和解釋器的代碼是密不可分的。例如,兩個子系統都操作保存着程序代碼的同一個字符數組。如果將它們分別安排在兩個類中,將會增加可觀的額外開銷,並導致性能上的損失和功能上的重複。此外,由於程序解釋的任務繁重,而解析表達式只是其中的一部分,因此將整個解釋機制包含在單個類中是很有意義的。。[1]