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 編譯的分析綜合模型 編譯由兩部分組成,分析和綜合。分析部分將源程式切分成一些基本塊並形成源程式的中間表示,綜合部分把源程式的中間表示轉換成目標程式。分析期間 源程式的操作將被確定下來並表...