COMP7402-編譯器和解釋器
1.一般課程信息
UQ學(xué)生:請從Learn.UQ或mySI-net訪問個人資料,以訪問此個人資料中保存的所有課程參與者詳細(xì)信息。
1.1課程詳情
課程編號: COMP7402
課程名稱:編譯器和口譯員
協(xié)調(diào)單位:信息技術(shù)與電氣工程程學(xué)院
學(xué)期: 2020年第1學(xué)期
模式:內(nèi)部
級別:研究生課程
地點:圣盧西亞
臺數(shù): 2
每周聯(lián)系時間: 3L1T
前提條件: COMP7505
推薦的前提條件: CSSE7035或CSSE7201
不兼容: COMP3401或COMP4403或CS320或CS324

課程簡介:編譯器模塊;編程語言規(guī)范;詞法分析,解析-遞歸下降和表驅(qū)動;靜態(tài)語義-符號表和類型檢查;錯誤處理;代碼生成和優(yōu)化介紹;編譯器生成器;口譯員。
假設(shè)背景:
先決條件:COMP7505
編譯器是一個實質(zhì)性的程序,開發(fā)這種工具需要COMP7505中講授的軟件工程技術(shù)及其先決條件(特別是CSSE2002)。本課程中的作業(yè)涉及修改相當(dāng)大的復(fù)雜軟件,并且需要良好的編程技能。具備豐富的編程經(jīng)驗,尤其是Java經(jīng)驗。
需要了解數(shù)據(jù)結(jié)構(gòu)的知識,才能理解用于語言處理器中內(nèi)部結(jié)構(gòu)(例如符號表和抽象語法樹)的適當(dāng)數(shù)據(jù)結(jié)構(gòu)。從COMP7505先決條件中可以獲取一些有關(guān)如何在計算機級別實現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)(如數(shù)組和記錄)的知識。
推薦的:CSSE7035 或CSSE7201
必須具備機器語言和匯編語言編程的基本知識,才能理解編譯器的代碼生成階段。
1.2課程簡介
1950年代(高級)編程語言的發(fā)明是使軟件開發(fā)更易于訪問和更省時的最重要的進步之一-將機器或匯編語言的編寫程序與Java進行比較。實施編程語言是1960年代和1970年代所面臨的主要挑戰(zhàn),導(dǎo)致了現(xiàn)代編譯器以及我們在本課程中學(xué)習(xí)的理論和實踐的發(fā)展。使用編程語言而不是機器/匯編語言的一個顯著優(yōu)勢是機器獨立性。
為了確保編程語言在不同機器上的實現(xiàn)是一致的,需要一種與機器無關(guān)的語言定義。為此,我們首先定義語言的語法(即語言中的合法字符串是什么),然后定義其語義(或含義)。語言的語法是通過根據(jù)基本符號(例如關(guān)鍵字,標(biāo)識符和運算符)編寫的語法來定義的,這些符號被稱為詞匯標(biāo)記,而標(biāo)記則是根據(jù)字符串上的正則表達(dá)式定義的。并不是語法允許的所有字符串都是該語言中的有效程序,因為例如,不能在單個范圍內(nèi)對標(biāo)識符進行多重定義,并且表達(dá)式的上下文類型必須正確。我們使用一組類型檢查規(guī)則來定義格式正確的程序。
編程語言由編譯器或解釋器實現(xiàn)。它們本身都是(相當(dāng)復(fù)雜的)程序。甲編譯工具通過翻譯一個高級程序編程語言(例如,Java程序簡單地表示為一個文本文件(它本身表示為字符(其由位表示))的流)到一個機器級程序(以機器指令的序列表示(例如,x86機器指令(本身以位表示)))。[此外:在本課程中,您必須能夠處理很多嵌套。]
編譯器執(zhí)行的任務(wù)可以分為以下幾類。
識別輸入程序并通過檢測程序中的語法錯誤
詞法分析:識別語言的基本符號(或詞法標(biāo)記),以及
解析:識別由這些基本符號組成的程序的結(jié)構(gòu)。
從以下方面構(gòu)造程序的抽象內(nèi)部表示形式:
一個抽象語法樹,并
一個符號表。
根據(jù)程序的靜態(tài)語義檢查程序的格式,例如,檢查賦值語句是否類型正確。
生成代碼,可以包括將程序的表示形式更改為更適合代碼生成和代碼優(yōu)化的形式(源代碼級別的計算機獨立于目標(biāo)機器代碼級別的計算機)。然后可以在目標(biāo)機器上執(zhí)行生成的機器代碼。由于課程中的時間限制,我們沒有在代碼優(yōu)化上花費大量時間。
解釋器是實現(xiàn)編程語言的一種更簡單(通常效率較低)的方式。在早期階段,它的作用與編譯器相同,但是沒有代碼生成階段。相反,它直接解釋程序的內(nèi)部表示。解釋器相對于編譯器的主要優(yōu)點是,它們不依賴于目標(biāo)計算機,因此比編譯器更具移植性。解釋器用于簡單的語言,例如操作系統(tǒng)命令外殼,在這些語言中,生成機器代碼的開銷超過了解釋程序的較慢執(zhí)行時間,或者在非常高級的語言(例如,功能和邏輯編程語言)中使用解釋器它們的功能如此強大,以至于解釋比編譯的執(zhí)行時間成本并不是那么重要。
編譯器的語言識別階段對于涉及某種形式的語言的計算機的許多應(yīng)用程序是通用的。例如,網(wǎng)絡(luò)瀏覽器可以識別以超文本標(biāo)記語言(HTML)編寫的文檔,并通過在屏幕上生成文檔顯示來對其進行解釋。
COMP7402編譯器和解釋器研究生早期的編譯器是手工制作的程序,旨在為特定的計算機實現(xiàn)特定的語言。但是,在1960年代,人們認(rèn)識到編寫編譯器的許多方面都不依賴于要編譯的特定編程語言。特別是,識別程序并創(chuàng)建程序抽象表示的早期階段主要取決于語言的語法。結(jié)果是創(chuàng)建了編譯器生成器(實際上是詞法分析器和解析器生成器)。解析器生成器是另一個程序,它接受編程語言的描述(以該語言的語法形式)并生成一個程序,該程序是該語言的解析器?,F(xiàn)代編譯器生成器通常被實現(xiàn)為協(xié)作工具套件,可從一系列符號生成編譯器組件,每種符號指定一種語言的不同方面(及其實現(xiàn))。這些活動不僅包括詞法分析和解析,還包括錯誤檢查和代碼生成。
圖片歸版權(quán)方所有,頁面圖片僅供展示。如有侵權(quán),請聯(lián)系我們刪除。凡來源標(biāo)注“考而思”均為考而思原創(chuàng)文章,版權(quán)均屬考而思教育所以,任何媒體、網(wǎng)站或個人不得轉(zhuǎn)載,否則追究法律責(zé)任。
添加微信【kaoersi03】(備注官網(wǎng))申請試聽,享專屬套餐優(yōu)惠!
kaoersi03