前端:該階段的編譯工作主要依賴源程式,與目標機無關。
【語法分析】
在詞法分析基礎上,將單詞序列分解成各類語法短語(也稱語法單位,如:「程式」「語句」「表示式」)。可表示成語法樹(推導樹)。
通過語法分析,確定乙個輸入串是否構成乙個語法上正確的程式。
即:經語法分析可以得到乙個分析樹。
問:如何根據單詞序列構造語法分析樹?經過怎樣的語法分析?
【語義分析】
審查源程式是否含有語義錯誤,即是否符合語言規範,為**生成階段收集型別資訊。
如,判斷每個算符的運算物件型別是否符合語言規範:
在語法分析樹上增加語義處理結點,進行一些型別轉換。
問:依據語法分析樹中的算符型別,判斷該算符的運算物件型別是否符合該算符的語言規範?
【中間**生成】
中間**:一種結構簡單、含義明確的記號系統。(有些編譯程式不需要該過程)
如,類似「三位址指令」的「四元式」中間**:
(算符,運算物件1,運算物件2,結果)
問:是否是對符合語言規範的語法分析樹,進行一定規則的處理計算,得到對應處理結果,並記錄?
後端:依賴於目標機,而不依賴源語言。
【目標**生成】
目標**:由中間**變換成的,特定機器上的絕對指令**、可重定位的指令**、彙編指令**。
問:按照何種規則,將中間**(或者符合語言規範的語法分析樹)轉換成指令?
貫穿整個編譯過程:
【**管理】
編譯過程中源程式的各種資訊被保留在種種不同的**裡;
【出錯處理】
源程式中的錯誤出現,記錄錯誤性質和錯誤地點,縮小出錯影響,甚至自動糾正錯誤。
文法:
將擁有有窮或無窮語句的語言,通過制定有限規則有窮表示出來,嚴格定義句子的結構。
即:以有窮集合刻畫無窮集合的乙個工具。
匹配規則左端的符號,替換成規則右邊的符號串。(規則,也稱重寫規則、產生式或生成式,用於形式化表示句子)
文法描述的語言是該文法下一切句子的集合(句子只包含終結符,句型可包含非終結符)。
#文法的描述
【語法圖】
即語法描述圖,用來直觀易讀地描述語法規則。
【ebnf】巴科斯-瑙爾正規化
【語義處理】
編譯中的語義處理,用於:
檢查語法結構合法的程式是否真正有意義(審查每個語法結構的靜態語義——靜態語義分析或靜態審查);
翻譯成中間**,或者直接翻譯成目標**(翻譯)。
【屬性文法】
#屬性
編譯程式使用的語法樹的結點,可以用「型別」「值」「儲存位置」等來描述它。
每個屬性與文法中的 某個非終結符或終結符相關聯;
每個斷言與文法中的 某個產生式相關聯。
語義規則與產生式相關聯。
問:產生式與語義規則有何種聯絡?在乙個文法中的作用是?
問:如何判斷某個句子是否屬於該文法描述的語言?
答:針對某一輸入串(句子)而言,屬性文法中所有斷言對該輸入串的語法樹結點的屬性全為真,那麼,這個句子就是在該語言中的。
【語法制導翻譯】
基於屬性文法的處理過程,即語法制導翻譯:
對單詞符號串進行語法分析,構造語法分析樹,根據需要構造屬性依賴圖,
遍歷語法樹,並在語法樹各結點處,按語義規則進行計算。
(在語法制導的定義中,一條語義規則完成乙個計算屬性值的動作。對於乙個終結符,只使用綜合屬性,且其屬性值由詞法分析器提供,通常不計算其屬性值)
tip:關於綜合屬性和繼承屬性的理解
繼承屬性是 從上而下傳遞資訊。綜合屬性自下而上傳遞資訊。
終結符只有綜合屬性,非終結符既有綜合屬性也可有繼承屬性。
綜合屬性可以在分析輸入符號串的同時自下而上的計算。
問:什麼是屬性依賴圖?如何構造屬性依賴圖?
答:屬性依賴圖是乙個有向圖,用於描述語法分析樹中,各屬性和屬性間的相互依賴關係。
具體如何構造參看屬性依賴圖的構造演算法。
為分析樹中的每個結點的文法符號的每個屬性,建立乙個結點(為文法符號的各屬性建立結點);
依據分析樹中每個結點所用產生式對應的每乙個語義規則,
將該產生式文法符號的屬性結點,用一條有向邊連線起來(根據產生式對應語法規則,構造各屬性間的有向邊)。
問:屬性依賴圖的作用是什麼?
答:根據屬性依賴圖的拓撲排序,可以得到計算語義規則的順序。
按照這個拓撲排序得到的語義規則計算順序進行計算,就可以得到輸入串的翻譯。
問:如何進行屬性計算?
樹遍歷:採用某種遍歷方法遍歷語法樹,直至計算出各個屬性(最常用的是深度優先遍歷,從左到右遍歷的方法)。
一遍掃瞄:在語法分析的同時計算屬性值(不是先構建語法分析樹,再進行屬性計算)。
編譯原理 學習記錄4
直接遞迴 呈現出u x uy u rightarrow xuy u xu y形式的文法產生式 間接遞迴 具有u xu yu mathop rightarrow limits xuy u xuy 形式的推導 產生式呈u u yu rightarrow uy u uy 形式如果是經過多步推導得到,則稱之...
編譯原理 學習記錄11
上回,為了解決移進 規約時的幾個問題,引入了幾個定義 短語 設有文法g z w xuy是它的乙個句型,如果有 z xu yz mathop rightarrow limits xuy z xuy 並且u uu mathop rightarrow limits u u u 則稱句型xuy中子串u為句型...
編譯原理 學習記錄6
正規集 字母表 sigma 上的正規表示式e,所描述的語言集合l e 從e到l e 的變換有如下規則 el e epsilon empty a e 1e 1 e1 l e 1e 1 e1 e 1e 2e 1e 2 e1 e2 l e 1e 1 e1 l e 2e 2 e2 e 1e 1 e1 e 2...