《編譯原理》復習提綱

1 概論

1.1 程序語言的分類

  • 命令式語言(Imperative Language)
    • 通過指明一系列可執行的運算及運算的次序來描述計算過程的語言
    • 程序的層次性和抽象性不高
  • 聲明式語言(Declarative Language)
    • 著重描述要處理什么,而非如何處理的非命令式語言
    • 函數(應用)式語言(Functional Language)
      • 基本運算單位是函數
    • 邏輯式(基于規則)語言(Logical Language)
      • 基本運算單位是謂詞
    • SQL
  • 面向對象語言(Object-Oriented Language)
    • 以對象為核心
    • 具有識認性(對象)、類別性(類)、多態性和繼承性

1.2 程序翻譯的方式有哪幾種?有何不同?

1.3 編譯程序包含有多少個階段,各階段的功能任務分別是什么?

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

2 詞法分析

2.1 DFA、NFA的基本概念

  • DFA、NFA是由哪幾部分構造的?
  • 構造一個正則表達式描述語言L={anbm|n>m},然后畫出DFA

2.2 正則表達式 → NFA → DFA → DFA最小化

  • 給出一個問題,用正則表達式寫出解,然后進行轉換。
  • e.g. 寫出以a開始,b結束,不包含aabb的正則表達式,然后轉化成DFA

2.3 詞法分析器的基本構造。

  • 要求會用偽代碼寫出簡單的詞法分析器(直接用條件語句實現DFA)。
  • e.g. 識別C語言中浮點數的詞法分析器片段。
  • 要求掌握DFA圖的存儲方式以及基于DFA圖實現詞法分析的算法。

3 上下文無關文法及分析

3.1 文法、語言?

  • e.g. 描述一個文法所定義的語言

3.2* 文法的分類是怎么樣的?它們之間有何關系?

喬姆斯基文法系統(Chomsky Grammar Sys-terns)

  • 0型文法 短語結構文法(Phrase Structure Grammar)
  • 1型文法 上下文有關文法(Context-Sensitive Grammar)
  • 2型文法 上下文無關文法(Context-Free Grammar)
  • 3型文法 正則文法(Ragular Grammar)

3.2 推導、規約、語法樹、文法的二義性?

3.3 如何畫語法樹?

  • e.g. 給出一個文法以及一個句子,畫出推導的語法樹

3.4* 文法二義性的消除方法有多少種?

4 自頂向下分析!!!

4.1 自頂向下分析法的問題分析

  • e.g. 給出某個文法(例如正則表達式,四則運算表達式,匹配注釋,匹配括號,二叉樹等)的描述,要求寫出對應的上下文無關文法。

4.2 遞歸下降語法分析方法

  • e.g. 給出一個上下文無關文法,寫出遞歸下降分解程序。

4.3 LL(1)分析方法

  • e.g. 描述各個步驟的算法,例如如何消除左遞歸,如何求First與follow集合。

4.4* First與Follow集合

5 自底向上分析

5.1 SLR(1), LR(1)中各個字母/數字的含義是什么?

5.2 如何畫出LR(0) DFA和LR(1) DFA圖?

  • e.g. 給出一個文法,要求畫出LR(0) DFA圖

5.3 LR(0)文法和SLR(1)文法的判斷

  • e.g. 給出一個文法,判斷該文法是否是LR(0),SLR(1)

6 語義分析&代碼生成

6.1 語法制導翻譯的應用

  • e.g. 實現常見的C語言控制語句的文法和翻譯的語義動作(if、while、switch)。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容