第一講 編譯過過程概述
主要介紹了:
(1)什麼是編譯是編譯程式?
(2)編譯程式的作用;
(3)編譯過程;
(4)編譯程式的組成及各部分的作用。
第二講 上下文無關文法和語言
主要介紹了:
(1)語法、語義等概念,
(2)回顧了關於程式語言定義,初等資料型別,資料結構,高階高階語言的一般特性,程式結構,語句與控制結構等內容;
(3)重點介紹了程式語言的描述工具-文法,包括文法的定義,文法的種類等內容,
(4)重點介紹用於描述程式語言的上下文無關文法,上下文無關文法的推導,上下文無關文法與語言,語法分析樹的構造,文法的二義性等;
(5)符號串(語言)的各種運算及其性質;
(6)對於給定的乙個文法,對於其某句型的推導、句型的推導過程、句子、所形成的語言等,以及推導所形成的語法樹。
(7)最左推導,最右推導、規範推導等有關的概念及其產生過程;
(8)什麼是句型分析,什麼是短語、直接短語,控制代碼,如何求解?
第三講 詞法分析器
主要介紹了:
(1)詞法分析器的組成、作用及工作原理,
(2)介紹詞法分析器的構造原理,
(3)狀態轉換圖
(4)正規集、正規表示式及其求法
(5)介紹確定有限自動機、不確定有限自動機等工具;
(6)nfa到dfa的轉化、dfa的化簡、從正規式構造自動機等內容。
第四講 自上而下的語法分析
主要介紹了:
(1)語法分析器的功能,
(2)自上而下語法分析方法以及自上而下分析所面臨的問題:
(3)左遞迴及左遞迴的消除,回溯及回溯的避免;
(4) ll(1)文法的特點及其如何確定乙個文法是否是ll(1)文法;
(5)遞迴下降分析法和**分析程式,
(6)**分析器的工作過程,如何構造**分析表。
第五講 自下而上的語法分析方法
主要介紹了:
1、算符優先分析法。
(1)對算符優先分析方法,
(2)介紹算符文法、
(3)算符優先文法的定義
(4)講述算符優先分析的過程
(5)介紹算符優先分析法的核心——算符優先分析表的構造方法。
2、lr分析法
(1)專案、專案分類、專案集
(2)lr(0)專案構造方法
(3)lr(0)專案集的構造
(4)lr(0)識別活字首的自動機構造
(5)lr(0)分析表的構造
(6)lr(0)文法,及其語句的分析過程
(7)slr(1)分析表的構造
(8)slr(1)文法及其語句的分析過程
第六講 語義分析與中間**生成
1、 中間**的型別與各自的定義
2、 常用語句的翻譯與中間**的生成
典型的知識點:
1) 簡述文法的作用
2) 文法有哪幾部分組成?各部分的作用是什麼?
3) 對給定的文法以及某個句子,如何確定該句子能否有給定的文法構造?
4) 對於給定的語言集合,如何構造產生該語言的文法。
5) 由文法給出該文法所產生的語言;
6) 簡述詞法規則的描述方法
7) 掌握正規式、正規文法、自動機的構造方法及三種工具之間的轉換方法
8) 正規式(正規集)nfadfa最小化dfa
9) 如何消除文法中的直接和間接左遞迴,如何消除回溯?
10) 給定文法,構造該文法的遞迴下降分析器
11) 給定文法,如何判斷該文法是否是ll(1)文法?
12) 給定文法,構造文法的**分析表;
13) ll(1)文法的分析過程;
14) lr(0)、slr(1)分析表的構造與分析
15) 對給定的乙個算符優先文法,如何構造該文法的算符優先分析表?
16) 算符優先分析法的分析過程;
17) 屬性文法的構造
18) 語句翻譯與中間**
編譯原理筆記
機器無關的優化 基於target 的優化 生成 由於tvm中新增自定義硬體加速器的最後一步,需要llvm編譯器支援自定義pass,所以就大概看了下編譯原理,下面mark一下。編譯可大概歸納為 前端 中間 後端,下面引用教程上的一張圖 剝去源程式中的注釋和空白符。對程式開頭的巨集定義和檔案包含進行處理...
編譯原理筆記 一
編譯原理 1.1編譯器就是個程式,讀入某種語言編寫的程式,翻譯成另一種語言的程式。並能告知源程式的錯誤。1.11 編譯的分析綜合模型 編譯由兩部分組成,分析和綜合。分析部分將源程式切分成一些基本塊並形成源程式的中間表示,綜合部分把源程式的中間表示轉換成目標程式。分析期間 源程式的操作將被確定下來並表...
重點筆記 編譯原理
1 用組合語言或高階語言編寫的程式,必須先送入計算機,經過轉換成用機器語言表示的目標程式 這個過程叫做編譯 才能由計算機執行。執行轉換過程的程式叫做編譯程式。匯程式設計序是指沒有編譯過的組合語言原始檔。編譯程式轉換過的叫做目標程式,也就是機器語言。2 編譯程式是一種翻譯程式 3 通常乙個編譯程式中,...