武漢理工大學-編譯原理2019年期末複習提綱

編譯原理2019年期末複習提綱

製作:紀元 - 劉李明

本提綱遵循CC-BY-NC-SA協議

(署名-非商業性-相同方式共享)

參考PPT:中國大學MOOC-武漢理工大學-編譯原理(SPOC課程)

第一章

知識回顧

編譯程序與解釋程序

編譯程序會生成目標代碼,解釋程序不會生成目標代碼(邊解釋邊分析,解釋一句執行一句)

五個階段:(注重功能+輸入輸出)

  • 詞法分析
  • 語法分析
  • 語義分析+中間代碼生成
  • 代碼優化
  • 目標代碼生成

前三個階段屬於前段,不依賴目標機

後三個階段屬於後端,依賴目標機

重點學習中間代碼優化,一部分屬於前段,一部分屬於後端

第二章 - 文法與語言

知識回顧

文法的形式化定義

  • 第二章 知識點3 PPT24

遵循體系:喬姆斯基形式化定義體系

四元組:(vn-非終結符集,vt-終結符集,p-產生式集,s-文法開始符號

文法的分類

具體分類:0,1,2,3型文法

  • 2型文法:上下文無關文法,主要用於程序設計中的語法分析

  • 型文法:正規文法,主要用於單詞的分析(用於識別單詞)

文法等價

如果兩個文法定義、描述的語言相同,那麼認爲文法等價。

  • 給語言寫文法,得到的結果不一定唯一(角度不同結果不同)

  • 文法寫出的語言相同,那麼一定等價

建立在文法形式化上的推導

  • 第二章 知識點4 PPT2-3

主要用於語法分析階段,特別是自頂向下語法分析中,指用產生式右部替換右部。

最左推導,最右,一般

  • 第二章 知識點4 PPT5

最左推導:堅持在當前推導步驟中,替換最左邊那個非終結符。

最右推導:堅持在當前推導步驟中,替換最右邊那個非終結符。

一般推導:在推導過程中無特定要求

推導符號表示

直接推導:雙箭頭

一步或多步推導:箭頭上包括正閉包符號(加號)

零步或多步推導:箭頭上包括閉包符號(星號)

句型、句子、語言

  • 第二章 知識點4 PPT2-4,7

給定一個文法機,如果從文法開始符號s出發,經過0步或多步推導得到一個串a

  • 如果a屬於Vn、Vt的閉包,那麼這個a就是句型。
  • 如果a屬於Vt的閉包,那麼這個a就是句子。(句子是僅包含終結符的句型)
  • 給定一個文法機,其所描述的語言就是句子的集合。(語言是屬於句子的a的集合)

語法樹(推導樹)與二義性

  • 第二章 知識點4 PPT10、16

文法二義性:對於一個文法機,如果一個句子/型,能找到兩個不同的最左/右推導(推導樹),那麼就有二義性

沒有程序能判斷一個文法機的二義性

習題

  1. 文法-語言(給語言寫文法必考):P34:2,3,8,12,13,16
  2. 推導、語法樹、文法的二義性:P34:4,6,7,8,9,11
  3. 短語、直接短語:P34:10,11

第三章-詞法分析

知識回顧

詞法分析任務、單詞的輸出

  • 第三章 知識點5 PPT22、17

編譯的第一個階段,對源代碼程序進行掃描(自左向右自上而下)依據相應的規則識別出單詞,並把單詞轉化爲機內的統一形式token(二元組)

單詞的分類

  • 第三章 知識點5 PPT1 6

單詞的描述工具

  • 第三章 知識點5 PPT2 3-43
  1. 正規文法
  2. 正規式
  3. 有窮自動機
    • 確定有窮自動機(DFA)
    • 不確定有窮自動機(NFA)

NFA畫法

  • 第三章 知識點6 PPT1 3-6

初態:雙箭頭
終態:雙圈

詞法分析程序的構造過程

  • 第三章 知識點8 PPT 3-25

由正規式,正規文法轉化成NFA,然後確定化爲DFA,最後化簡DFA

習題

P64 1、2、3、4、7

正規文法轉化爲NFA

第四章-自頂向下語法分析

知識回顧

自頂向下語法分析思路

  • 第四章(1) 知識點10 PPT1 3

必須是LL(1)型文法)以文法開始符號爲樹根,採用自左推導的方法,自上而下爲待識別符號串構建一棵語法樹

LL(1)文法的定義及判別方法(FIRST、FOLLOW)

  • 第四章(1) 知識點10 PPT2 19,21-39

當且僅當同一終結符不同可選集兩兩不相交。

確定的自頂向下分析方法

  • 第四章(2) 知識點12 PPT 3-12 知識點13 PPT 1-18

遞歸下降法

預測分析法

預測分析表(LL(1)分析表)的構造

  • 第四章(2) 知識點13 PPT 2-4

對文法G的每個產生式A->a執行如下:

  1. 對每個a屬於Select(A->a),將A->a加入M[A,a]
  2. 把所有無定義的M[A,a]標上“出錯標誌"

第五章-自底向上分析法

知識回顧

自底向上語法的基本思想

  • 第五章(1) 知識點15 PPT 2

實現自底向上分析最常用的技術是:移進-歸約(shift-reduce)分析技術。

  1. 從所要分析的輸入串開始進行分析
  2. 從左向右掃描輸入串,一邊將輸入符移進分析棧內,一邊檢查位於棧頂的一串符號是否與某個產生式的右部相同,若發現相同,就替換爲相應產生式的左部的非終結符(歸約);若不相同,則繼續移進輸入符。
  3. 重複上一步驟,直到歸約至文法開始符號。

其關鍵性問題是:如何識別句柄。

第六章語法制導翻譯與中間代碼的生成

知識回顧

屬性文法

  • 第六章(1) 知識點26 屬性文法PPT 2-4

在上下文無關文法基礎上對文法增加了屬性和規則,形成了屬性文法。

語法制導翻譯技術

在語法制導的同時進行翻譯。

中間代碼形式

  • 第六章(2) 知識點28 中間代碼形式的PPT 4-12

常用:三地址碼(TAC)、四元式、逆波蘭式、數代法(?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章