重點筆記 編譯原理

2021-08-21 08:42:58 字數 2288 閱讀 4591

1、用組合語言或高階語言編寫的程式,必須先送入計算機,經過轉換成用機器語言表示的目標程式(這個過程叫做編譯),才能由計算機執行。執行轉換過程的程式叫做編譯程式。匯程式設計序是指沒有編譯過的組合語言原始檔。編譯程式轉換過的叫做目標程式,也就是機器語言。

2、編譯程式是一種翻譯程式

3、通常乙個編譯程式中,不僅包含詞法分析、語法分析、中間**生成、**優化、目標**生成等五個部分,還應包括**處理和出錯處理,其中中間**生成和**優化不是每個編譯程式都必須的。

4、產生式是用於定義語法成分的一種書寫規則。

5、四種型別的文法的主要特點:

6、解釋程式和編譯程式的區別在於是否生成目標程式。

7、中間**有:逆波蘭記號、樹形表示、三元式、四元式等形式

8、語法制導翻譯即可用來產生中間**,也可以用來產生目標指令,甚至可用來對輸入串進行解釋執行。

3.1 確定的有限自動機dfa m是乙個五元組m =(s,∑,δ ,s0 ,f )

(1) s 是乙個非空有限集,它的每個元素稱為乙個狀態

(2)∑是乙個有窮字母表,它的每個元素稱為乙個輸入符號,所以也稱為輸入符號字母表

(3)δ是狀態轉換函式,是在s×å→s上的單值對映

(4) s0  s0∈s,是唯一的乙個初態

(5) f  f含於s,可空,是乙個終態集,終態也稱可接受狀態或結束狀態

3.2 乙個nfa m是五元式 m=(s,s,δ,s0,f)

(1)s  有窮非空狀態集合

(2)∑ 有窮的輸入字母表集合

(3)δ 從s´∑*到s的子集的對映

(4)s0í 是s的非空子集,稱為初始狀態集合

(5)f í 是s的子集(可空),稱為終止狀態集合

3.3 dfa與nfa特點比較

dfa特點:

1. 初態唯一

2. 輸入字元不包括空符號串

3. 有向邊上只有乙個字元

4. 乙個狀態對某個字元最多只有一條出邊

nfa特點:

1. 初態不唯一

2. 輸入字元包括空符號串

3. 有向邊上可以為字串

4. 乙個狀態對某個字元可能有多條輸出邊,即狀態的後繼不唯一

3.4 詞法分析是基於正則文法進行,即識別的單詞是該文法的句子;語法分析基於上下文無關文法進行,即識別的是該類文法的句子。語法分析的有效工具是語法樹。

4.1 自上而下分析法:從文法的開始符號出發,反覆使用文法的產生式,尋找與輸入符號串匹配的推導,又分為:遞迴下降分析、**分析(ll),又稱為帶有回溯的自頂向下分析法。

4.2 自下而上分析法:從輸入符號串開始,逐步進行歸約,直至歸約到文法的開始符號。又分為算符優先分析、lr分析。

4.3 回溯:分析任務要部分或全部的退回去重做叫做回溯。回溯條件:文法中,對於某個非終結符號的規則其右部有多個選擇,並根據所面臨的輸入符號不能準確的確定所要選擇時,就可能出現回溯。

4.4 左遞迴:乙個文法是含有左遞迴的,

5.1利用語法樹虛招句型的短語、控制代碼等

尋找方法

句型的語法樹有:

n個內部節點——n棵子樹(包括根節點)

n棵子樹——n個短語

每棵子樹的葉節點從左至右排列組成乙個短語

m棵直接子樹——m個直接短語(只有父子兩代)

最左直接子樹——控制代碼

素短語:

(1)是乙個短語

(2)至少包含乙個終結符

(3)且除自身外不再包含其他素短語

5.2分析句型時,應用算符優先分析技術時,每步被直接歸約的是最左素短語,而應用lr分析技術時,每步被直接歸約的是控制代碼。

5.3 規範歸約(最左歸約):最有推導的逆過程;規範推導:最右推導

如果乙個文法g無二義性,則規範歸約的逆過程必定是規範推導

編譯原理 筆記

第一講 編譯過過程概述 主要介紹了 1 什麼是編譯是編譯程式?2 編譯程式的作用 3 編譯過程 4 編譯程式的組成及各部分的作用。第二講 上下文無關文法和語言 主要介紹了 1 語法 語義等概念,2 回顧了關於程式語言定義,初等資料型別,資料結構,高階高階語言的一般特性,程式結構,語句與控制結構等內容...

編譯原理筆記

機器無關的優化 基於target 的優化 生成 由於tvm中新增自定義硬體加速器的最後一步,需要llvm編譯器支援自定義pass,所以就大概看了下編譯原理,下面mark一下。編譯可大概歸納為 前端 中間 後端,下面引用教程上的一張圖 剝去源程式中的注釋和空白符。對程式開頭的巨集定義和檔案包含進行處理...

編譯原理筆記 一

編譯原理 1.1編譯器就是個程式,讀入某種語言編寫的程式,翻譯成另一種語言的程式。並能告知源程式的錯誤。1.11 編譯的分析綜合模型 編譯由兩部分組成,分析和綜合。分析部分將源程式切分成一些基本塊並形成源程式的中間表示,綜合部分把源程式的中間表示轉換成目標程式。分析期間 源程式的操作將被確定下來並表...