解釋器風格
1.首先要理解什么是解釋器
對於初學者的我來說,當聽到解釋器這一名詞時,我首先彈出的概念是它可以把某種語言轉換或者翻譯成及其所能理解並能正確執行的語言。也就是說解釋器在程序語言執行的過程中承擔了為機器"翻譯"的這一步工作,但是對其中的原理就一無所知了。我經過查閱相關的信息發現,理解的還是稍有些偏差,但大體沒有跑偏。
那么解釋器的定義是:解釋器是一個用來執行起塔程序的程序。解釋器針對不同平台形成了一個虛擬機,眾所周知,每一種操作系統與本身用的程序語言都存在着語義上的差異,有的明顯、有點基本相同。但是無論是否大相徑庭,只要在語義上存在着某種不可化解的偏差,都會導致操作系統無法正常執行程序語言想要實現的功能。
那么解釋器的實用之處就在於此,將高抽象層次的程序翻譯為低抽象層次所能理解的指令,以消除程序語言與硬件之間存在的差異。這樣官方的說法十分的准確,我們可以清楚的了解到解釋器在機器中實現的重要功能,即將程序語言(源代碼)翻譯為系統(操作系統和硬件)可以理解的執行代碼。用一張圖清楚的表示就再合適不過了:
解釋器通常用來在程序語言定義的計算和有效硬件操作確定的計算之間建立對應和聯系。根據結構划分可以將解釋器分為簡單和復雜兩種,簡單和小規模的解釋器只能完成信息的識別和轉換;而復雜的解釋器需要從詞法到句法,語法的復雜識別和處理。這跟我目前學的編譯原理有相似之處,我想解釋器本身就與編譯器有着一定的共同點吧。
解釋器的組成與程序當前執行的狀態密不可分,程序當前執行狀態通過解釋器引擎可以輸出到宿主系統中,從而做到轉換的效果。
最后總結一下解釋器風格所包含的基本構件,解釋器風格由解釋器引擎、存儲區、被解釋的源代碼、解釋器當前內部運行狀態和需要執行的指令以及程序當前的運行狀態組成,其中包含相應的Data access連接器。