2.3 解釋程序:
所謂解釋程序是高級語言翻譯程序的一種,它將源語言(如BASIC)書寫的源程序作為輸入,解釋一句后就提交計算機執行一句,并不形成目標程序。就像外語翻譯中的“口譯”一樣,說一句翻一句,不產生全文的翻譯文本。這種工作方式非常適合于人通過終端設備與計算機會話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令并提交硬件立即執行且將執行結果反映到終端,從終端把命令打入后,就能立即得到計算結果。這的確是很方便的,很適合于一些小型機的計算問題。但解釋程序執行速度很慢,例如源程序中出現循環,則解釋程序也重復地解釋并提交執行這一組語句,這就造成很大浪費。
對源程序邊解釋翻譯成機器代碼邊執行的高級語言程序。由于它的方便性和交互性較好,早期一些高級語言采用這種方式,如BASIC、dBASE。但它的弱點是運行效率低,程序的運行依賴于開發環境,不能直接在操作系統下運行。
解釋程序是一種語言處理程序,它直接執行源程序或源程序的內部形式。它并不產生目標程序,這是它和編譯程序的主要區別。
高級語言實現語言處理有4種方案:
◆ 源程序被直接解釋執行。
◆ 先將源程序翻譯成高級中間代碼,然后再掃描和解釋執行高級中間代碼。
◆ 先將源程序轉化成和機器代碼十分接近的低級中間代碼,再解釋執行這種中間代碼。
◆ 源程序被最終翻譯成機器語言表示的目標程序。這類系統的目標程序執行效率最高。
翻譯系統與解釋系統比較:
◆ 翻譯系統在執行速度上都優于建立在解釋執行基礎上的系統;
◆ 翻譯系統的缺點是其復雜性高,這使得它的開發和維護費用都大;
◆ 解釋系統比較簡單,可移植性較好,適合于以交互方式執行程序;
◆ 解釋系統缺點是執行速度慢;
純粹的解釋和純粹的編譯都是極端,因此一般是兩種技術的結合,先將源程序編譯形成中間代碼,然后由解釋器解釋執行。
解釋系統的結構可分成兩個部分。
1.包括通常的詞法分析程序以及語法和語義分析程序,它的作用仍是把源程序翻譯成中間代碼,中間代碼的設計常采用逆波蘭(后綴)表示形式(符號在后面)。
2.解釋部分,用來對第一部分所產生的中間代碼進行解釋執行,完成真正的解釋。
工作過程
解釋程序由一個總控程序和若干個執行子程序組成。解釋程序的工作過程如下:首先,由總控程序執行初始準備工作,置工作初態;然后,從源程序中取一個語句S,并進行語法檢查。如果語法有錯,則輸出錯誤信息;否則,根據所確定的語句類型轉去執行相應的執行子程序。返回后檢查解釋工作是否完成,如果未完成,則繼續解釋下一語句;否則,進行必要的善后處理工作。
適用范圍
解釋程序的突出優點是可簡單地實現,且易于在解釋執行過程中靈活、方便地插入修改和調試措施,但最大缺點是執行效率很低。例如,需要多次重復執行的語句,采用編譯程序時只需要翻譯一次;但在解釋程序中卻需要重復翻譯,重復執行。根據這些特點,解釋程序適用于如下場合:
①有些語言中的大多數語句,如字符串加工語言中的字符串查找語句和加工語句,其執行時間比翻譯時間長得多。對于這種語言,采用生成性方案,效果甚微,而采用解釋性方案則易于實現。
②為了便于用戶調試和修改程序,又能保證程序高效運行,很多程序設計語言配置兩個加工系統,一個用于調試,一個用于有效地運行。調試用的系統一般用解釋程序實現,以便及時監視運行情況、動態地輸出調試信息和靈活地修改錯誤。
③交互式會話語言(如BASIC,APL),要為用戶提供并行、交錯編寫、執行、調試和修改源程序的功能。采用解釋程序易于實現這些功能。
隨著超大規模集成電路的迅速發展,不少人提出用微程序設計方法實現高級程序設計語言解釋程序的想法,隨之出現了如 “FORTRAN機”之類的高級語言機器的概念。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |