編譯原理期末複習總結

2022-04-19 19:59:14 字數 3780 閱讀 6640

一、簡答題

1.什麼是編譯程式?

答:編譯程式是一種將高階語言程式(源程式)翻譯成低階語言(目標程式)的程式 。

將高階程式語言程式翻譯成邏輯上等價的低階語言(組合語言,機器語言)程式的翻譯程式。

2.請寫出文法的形式定義?

答:乙個文法g抽象地表示為四元組g=(vn,vt,p,s)

– 其中vn表示非終結符號

– vt表示終結符號,vn∪vt=v(字母表),vn∩vt=φ

– s是開始符號,

– p是產生式,形如:α→β(α∈v+且至少含有乙個非終結符號,β∈v*)

3.語法分析階段的功能是什麼?

答:在詞法分析的基礎上,根據語言的語法規則,將單詞符號串分解成各類語法短語(例:程式、語句、表示式)。確定整個輸入串是否構成語法上正確的程式。

4.區域性優化有哪些常用的技術?

答:優化技術1—刪除公共子表示式

優化技術2—複寫傳播

優化技術3—刪除無用**

優化技術4—對程式進行代數恒等變換(降低運算強度)

優化技術5—**外提

優化技術6—強度削弱

優化技術7—刪除歸納變數

優化技術簡介——對程式進行代數恒等變換(代數簡化)

優化技術簡介——對程式進行代數恒等變換(合併已知量)

5.編譯過程分哪幾個階段?

答:邏輯上分五個階段:詞法分析、語法分析、語義分析與中間**生成、**優化、目標**生成。每個階段把源程式從一種表示變換成另一種表示。

6. 什麼是文法?

答:文法是描述語言的語法結構的形式規則。是一種工具,它可用於嚴格定義句子的結構;用有窮的規則刻劃無窮的集合;文法是被用來精確而無歧義地描述語言的句子的構成方式;文法描述語言的時候不考慮語言的含義。

7. 語義分析階段的功能是什麼?

答:對語法分析所識別出的各類語法範疇分析其含義,進行初步的翻譯(翻譯成中間**);並對靜態語義進行審查。

8.**優化須遵循哪些原則?

答:等價原則:不改變執行結果

有效原則:優化後時間更短,占用空間更少

合算原則:應用較低的代價取得較好的優化效果

9.詞法分析階段的功能是什麼?

答:逐個讀入源程式字元並按照構詞規則切分成一系列單詞

任務: 讀入源程式,輸出單詞符號

— 濾掉空格,跳過注釋、換行符

— 追蹤換行標誌,指出源程式出錯的行列位置

— 巨集展開,……

10.什麼是符號表?

答:符號表在編譯程式工作的過程中需要不斷收集、記錄和使用源程式中一些語法符號的型別和特徵等相關資訊。這些資訊一般以**形式儲存於系統中。

如常數表、變數名錶、陣列名表、過程名錶、標號表等等,統稱為符號表。對於符號表組織、構造和管理方法的好壞會直接影響編譯系統的執行效率。

11.什麼是屬性文法?

答:是在上下文無關文法的基礎上,為每個文法符號(含終結符和非終結符)配備若干個屬性值,對文法的每個產生式都配備了一組屬性計算規則(稱為語義規則)。在語法分析過程中,完成語義規則所描述的動作,從而實現語義處理。

12.什麼是基本塊?

答:是指程式中一順序執行的語句序列,其中只有乙個入口語句和乙個出口語句,入口是其第乙個語句,出口是其最後乙個語句。

13.**優化階段的功能是什麼?

答:對已產生的中間**進行加工變換,使生成的目標**更為高效(時間和空間)。

14.文法分哪幾類?

答:文法有四種:設有g=(vn,vt,p,s),不同型別的文法只是對產生式的要求不同:

0型文法(短文文法): g的每個產生式α β滿足:α∈v+且α中至少含有乙個非終結符,β∈v*

1型文法(上下文有關文法):如果g的每個產生式α β均滿足|β|>=|α|,僅當s ε除外,但s不得出現在任何產生式的右部

2型文法(上下文無關文法):g的每個產生式為a β, a是一非終結符,β∈v*

3型文法(正規文法):g的每個產生式的形式都是:a αb或a α,其中a,b是非終結符,α是終結符串。(右線性文法)。

15.迴圈優化常用的技術有哪些?

答:**外提;強度削弱;刪除歸納變數。

16.什麼是算符優先文法?

答:算符文法g的任何終結符a,b之間要麼沒有優先關係,若有優先關係,至多有中的一種成立,則g為一算符優先文法。

二、計算題

(一)推導、最左推導、最右推導和語法樹,複習表示式文法及相關例題。

1. 表示式的推導

例: g = (, , , {ip , e)

p: e e + e | e * e | ( e ) | i

答:句子 ( i * i + i)的語法樹:

(1) e (e) (e + e) (e * e + e) (i * e + e) (i *i + i)

(二)給定語言求文法

(三)逆波蘭式

(四)將for語句和if語句翻譯成相應的四元式序列

(五) 短語、素短語、最左素短語,firstvt集和lastvt集的求解方法

(複習第四章算符優先文法相關內容)

1. 短語、素短語、最左素短語

集和lastvt集的求解方法

例:設文法為:

e' →#e#;t→f;e→e+t;f→p↑f | p; e→t ;p→(e);t→t*f;p→i;

3. 算符優先文法

優先關係的定義:

算符優先文法的定義:

三、綜合題

的確定化和最小化(參看課件第三章62頁:例5)

2.自頂向下分析(參看課件第四章(1)67頁:綜合練習)

例:求對應於下述文法的**分析表: e te'

e' +te' |ε

t ft'

t' *ft' |ε

f (e) |i

答:1) 首先求first集:

2) 由於ε first(e'), ε first(t'), 求e'和t'的follow集:

3) 根據集合的值填表,得到:

例:設文法g(s):s→(l) | as | a

l→l,s | s

(1) 消除左遞迴和回溯;

(2) 計算每個非終結符的first和follow集;

(3) 構造**分析表。

答:(1) 消除左遞迴和回溯:

(2)(3)構造**分析表:

分析方法(參看課件第四章(3)28頁及30頁)

(附)1.短語、直接短語、控制代碼

例:考慮如下文法: e =>t | e+t

t =>f | t*f

f =>i | (e)

求句型 i1 * i2 + i3的短語、直接短語和控制代碼

答:e => f * i2 + i3 e => i1 * f + i3e => i1 * i2 + f

e => t + i3(t =>t*f =>i1 * i2) f=>i

e => i1 * i2 + i3

因此: 短語有:i1, i2, i3, i1*i2, i1*i2+i3

直接短語有:i1, i2 , i3

控制代碼是: i1

i2 + i3 不是短語,因為e => i1 * e (e =>i2 +i3)

2. 什麼是語法制導翻譯

語法制導翻譯:定義翻譯所必須的語義屬性和語義規則,一般不涉及計算順序。

語法制導翻譯(syntax-directed translations):

– 乙個句子的語義翻譯過程與語法分析過程同時進行。

在文法中,文法符號有明確的意義,文法符號之間有確定的語義關係。屬性描述語義資訊,語義規則描述屬性間的的關係,將語義規則與語法規則相結合,在語法分析的過程中計算語義屬性值。

編譯原理期末總結

第一章編譯概述 程式的翻譯 源程式 用組合語言或高階語言編寫的程式。目標程式 用目標語言所表示的程式。目標語言 可以是介於源語言和機器語言之間的中間語言,可以是某種機器的機器語言,也可以是某機器的組合語言 翻譯程式 將源程式轉換為目標程式的程式稱為翻譯程式。它是指各種語言的翻譯器,包括匯程式設計序和...

編譯原理期末複習題

第八節習題 一 單項選擇題 1 將編譯程式分成若干個 遍 是為了 a 提高程式的執行效率 b 使程式的結構更加清晰 c 利用有限的機器記憶體並提高機器的執行效率 d 利用有限的機器記憶體但降低了機器的執行效率 2 構造編譯程式應掌握 a 源程式b 目標語言 c 編譯方法d 以上三項都是 3 變數應當...

編譯原理試卷A 複習卷

編譯原理 課程 a 試卷考試形式閉卷考試用時120分鐘,本試卷共2頁,另 答題紙0張,草稿紙2張一 10分 簡述pl 0編譯程式的基本結構。二 10分 文法g s 為 s ac ab a ab b bc 寫出l g s 的全部元素。三 15分 令文法g e 為 e e t e t t t f t f...