期末考試:編譯原理複習基礎題——選擇填空

一、 基本框架

1. 程序編譯的6步

詞法分析 —— 單詞
語法分析 —— 語法
語義分析 —— 語義
中間代碼生成 —— 文章初稿
代碼優化 —— 文章修改
目標代碼生成 —— 文章完成

2.編譯程序的過程

  1. 首先要讀取源程序的每一個( 字符 )識別出( 單詞 ) —— 詞法分析
    然後再識別出( 句子 ) —— 語法分析
    再分析每個句子的( 語義 )—— 語義分析
    並翻譯成中間代碼。 —— 中間代碼生成

  2. 編譯程序的工作過程一般可以劃分爲
    詞法分析、語法分析、語義分析、代碼優化等幾個基本階段,
    同時還會伴有 表格處理 和 出錯處理 。

  3. 中間代碼生成時所依據的是 語義規則

  4. 編譯程序分兩階段工作,前階段完成的工作是 。
    C.詞法分析、語法分析、語義分析和中間代碼生成

3.編譯與解釋

1.區別:編譯方式與解釋方式的根本區別在於 是否生成機器代碼
2.計算機執行用高級語言編寫的程序主要有兩種途徑:編譯解釋
3.解釋程序編譯程序 是兩類高級程序語言處理程序。
4.與編譯系統相比,解釋系統_____。
D. 比較簡單 , 可移植性好 , 執行速度慢


二、文法

1.句型和句子的區別:是否只有終結符的句型

1.設 G 是一個給定的文法,S 是文法的開始符號,如果 S→α( 其中 α∈(VN1+VT)), 則稱 α是該文 法的一個 句型
2.設 G 是一個給定的文法,S 是文法的開始符號,如果 S→α( 其中 α∈V1
), 則稱 α是文 法的一個句子

4.設 G 是一個給定的文法,S 是文法的開始符號,如果 S->x( 其中 x∈V*), 則稱 x 是 文法 G 的一個 句型

S→α

  1. α∈(VN +VT)* —— 句型
  2. α∈VT* —— 句子

句型包含句子,只有終結符的句型爲句子

2.四種文法

0型 —— 短語文法
1型 —— 上下文有關文法
2型 —— 上下文無關文法
3型 —— 正則文法

對應包含關係
在這裏插入圖片描述

3. 句柄

1. 基本概念
短語:非葉子節點——葉子節點形成語句 (深度爲n)
直接短語:深度爲1的短語
句柄:最左的直接短語

2.考題

  1. 句柄是一棵給定語法樹的最左直接短語
  2. 在規範歸約中,用句柄 來刻畫可歸約串。
  3. 對於文法G,僅含終結符號的句型稱爲 句子

4.其它(低頻考點可跳過)

  1. 一個上下文無關文法 G 包括四個組成部分,
    它們是:一組非終結符號,一組終結符號, 一個開始符號,以及一組 產生式

  2. 文法G1 和 G2 等價是指_____。 G1 和 G2 所識別的(VT)*相等

  3. 文法 G 產生的_____的全體是該文法描述的語言。D.句子


三、詞法分析

  1. 詞法分析基於 正則文法 進行的,即識別的單詞是該類文法的句子。
  2. 詞法分析的任務是 識別單詞
  3. 詞法分析器的輸出結果是 單詞的種別編碼和自身值
  4. 掃描器是( 詞法 )分析器,它接受輸入的( 源程序 ),對源程序進行( 詞法分析)並識別出一個個單詞符號,其輸出結果是單詞符號,供語法分析器使用。
  5. 自動機所完成的任務是從字符串形式的源程序中識別出一個個具有獨立含義的最小語法單位即是 B.單詞
  6. 詞法分析器接受輸入的源程序,對 源程序 進行逐個字符識讀並識別出一個個單詞符號,其輸出結果是單詞符號,以一個 整數 的形式表示。

四 、語法分析

1. 語法分析的類型

  1. .自底向上語法分析
    分析的關鍵:尋找句柄
    對應操作:移進 、歸約、錯誤處理、接受

  2. .自頂向下語法分析
    禁止:不允許任一非終結符有間接 左遞歸的產生式。

2. 其它知識點

  1. 在語法分析處理中, FIRST集合、 FOLLOW集合、 SELECT集合均是 終結符集
  2. 語法分析的數學模型是語法樹
  3. 語法分析器調用詞法分析器,並接受詞法分析器返回的一個個單詞,
    單詞 進行逐個逐個類型識別, 檢查這些單詞能否構成一個 句子

五 、代碼優化

  1. 優化目的:節省時間和空間
  2. 優化分類
    循環優化 —— 強度削弱 、刪除歸納變量、代碼外提
    局部優化(基本塊內的優化) —— 刪除多餘運算,刪除無用賦值
    全局優化

六、目標代碼生成

  1. 對編譯程序而言,
    輸入數據是 —— 源程序
    輸出結果是 —— 目標程序

  2. 若源程序是用高級語言編寫的
    目標程序 是機器語言程序或彙編程序,
    則其翻譯程序稱爲 編譯程序

  3. 編寫一個計算機高級語言的源程序後 , 到正式上機運行之前,一般要經過編輯 、編譯、連接

  4. 代碼生成階段的主要任務是_____。
    C.把中間代碼變換成依賴具體機器的目標代碼

  5. 解釋程序處理語言時,大多數採用的是_____ 方法。
    B.先將源程序轉化爲中間代碼,再解釋執行。

七 其它常考題型

1. 存儲分配

程序設計語言存儲管理方案,主要分爲兩大類,即( 靜態存儲分配 )方案和( 動態存儲分配)方案。
常用的兩種動態存貯分配辦法是 棧式 動態分配 和 堆式 動態分配

2.零散知識點(低頻考點可跳過)

1.編譯程序使用____區別標識符的作用域。 B.說明標識符的過程或函數的靜態層次

2.四元式之間的聯繫是通過____ 實現的。 B.臨時變量

3.正規式 M 1 和 M 2 等價是指_____。C. M1和M2所識別的語言集相等

4.四元式之間的聯繫是通過 臨時變量 實現的。

5.構造編譯程序應掌握 編譯方法

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