編譯原理 第三章 詞法分析(下)
3.6 有窮自動機(非常重要)
3.6.1 不確定的有窮自動機(重要)
例:
狀態0是開始狀態, 在狀態0上輸入符號b會進入狀態0,輸入a可能進去狀態0也有可能進入狀態1。所以對於狀態0來說一個確定的輸入符號a他有兩種離開狀態,這就是一種不確定的狀態。
3.6.2 轉換表 (非常重要)
例: 3-24的NFA 對應的轉換表
3.6.3 自動機中輸入字串的接受(重要)
狀態0連線著兩個ε,為什麼要連線ε?
我們可以把NFA L(aa*|bb*),拆分為兩個獨立的
1. L(aa*) 接受a開頭的a字元連線的串
2. L(bb*)接受b開頭的b字元連線的串
L(aa*|bb*)同時接受這兩種模式的串。每個NFA都需要一個開始狀態,這個開始狀態不需要任何輸入符號就可能進入L(aa*)或者L(bb*)。
所以我們需要在開始狀態連線L(aa*) L(bb*),但是他們不需要任何輸入符號所以我們用ε去連線L(aa*)和L(bb*)的開始狀態。
3.6.4 確定的有窮自動機(重要)
第三章後續都是一些演算法,每個演算法單獨記錄一個博文把。。。。
相關推薦
編譯原理 第三章 詞法分析(下)
3.6 有窮自動機(非常重要) 3.6.1 不確定的有窮自動機(重要) 例: 狀態0是開始狀態, 在狀態0上輸入符號b會進入狀態0,輸入a可能進去狀態0也有可能進入狀態1。所以對於狀態0來說一個確定的輸入符號a他有兩種離開狀態,這就是一種不確定的狀態。 &nbs
編譯原理 第三章 詞法分析(上)
3.1.1 為什麼編譯器要把詞法分析和語法分析分開 3.1.2 詞法單元、模式和詞素(重要) 例: 3.1.3 詞法單元的屬性(重要) 詞法單元的屬性是用來記錄相對應的詞素的一些相關屬性資訊。 例: int x = 10 + 20
編譯原理----第四章 語法分析(自上而下分析)
一、感受及總結 語法分析是編譯過程的核心部分,語言的語法結構是用上下文無關描述的。因為自上而下分析可能會存在兩大問題,左遞迴和回溯,所以產生了消除左遞迴和克服回溯的方法----LL(1)分析法。使用LL(1)分析法要涉及FIRST集和FOLLOW集,這是重點。當
第四章 語法分析(下)——LR文法
文章目錄 概述 基本概念 移動-歸約語法分析技術 SLR 增廣文法 狀態內部擴充套件 狀態之間的擴充套件 構建分析表 ACTION 構造SLR語法分析表
編譯原理第三章筆記--詞法分析
3.1對詞法分析器的要求一、單詞符號語言中具有獨立意義的最小的語法符號單詞的種類: 基本字 if...else這種 識別符號 起名來表示變數名、函式名 常數 運算子 界符 ; {} () , 這種二、單詞的表示形式
現代編譯原理——第三章:抽象語法樹以及原始碼
轉自: http://www.cnblogs.com/BlackWalnut/p/4508093.html 這是flxe的檔案,檔名稱為tiger.l %{ #include <string.h> #include "util.h" #
編譯原理第四章-語法分析
語法分析的知識要點 1)最左推導 總是選擇每個句型的最左非終結符進行替換; 根據輸入流中的下一個終結符,選擇最左非終結符的一個候選式; 自頂向下的語法分析採用最左推導方式。 2)非終結符的後繼符號集 可能在某個句型中緊跟在A後邊的終結符a的集合,記為FOLLOW
第三章——詞法分析線上測試
1、字母表為{a,b},則所有以b開頭的後面跟若干個ab的串的正規式表示為 。 b(ab) b(a|b)* b(ab)+ bab* [參考答案] b(ab)+ [我的答案] b(ab)+ 這題有歧義,“若干個”應該可以包括0個,答案應該為:b(ab)* 但是老師的考點應該是
哈工大編譯原理第一次實驗--詞法分析(Java版本)
1.在判斷空行的時候,java裡面用 line == "" 不好使,除錯發現進不去if,然後用line.equals("")就好使。 2.java標準化輸出,可以有:System.out.printf("%-10s\t<ERROR:識別符號重複!>\n",tok
編譯原理第七章-語義分析和中間程式碼產生
語義分析的任務是:1.審查每一個語法結構的靜態語義,即驗證語法正確的結構是否有意義。2.在語義正確的基礎上生成一種中間程式碼或目的碼。語義分析的範圍是:1.確定型別:確定識別符號所關聯的資料型別。2.型別檢查:按語言的型別規則,檢查運算的合法性與運算分量型別的一致性,必要時作
編譯原理第七章——語義分析和中間程式碼的產生
1、知識點圖重點記憶:說明語句的翻譯 程式語言中的說明語句都是給編譯程式提供資訊的,諸如型別、維數、每維的界種類等,因此一般不生成目標,只是在編譯時把有關資訊填入相應表格即可。賦值語句的翻譯 1.簡單算術表示式的賦值語句: 所謂簡單指不考慮陣列元素、記錄、函
編譯原理第四章—語法分析
第四章1、知識點圖重點記憶:語法分析器功能:語法分析的工作: 判斷一個輸入串是否符合語法規則如何判斷? 從文法的起始符出發進行句子的推導,即自上而下的分析從句子本身出發,進行歸約,看能否把句子規約為到起始符,即自下而上的規約分析的結果:構造一棵語法樹自
【編譯原理 第三章 重點之一】NFA轉化為DFA
NFA轉化為DFA: 書上的虛擬碼: 第一步: 求初始狀態s通過ε到達的所有點的集合*U[0]; 部分程式碼展示: int ii=0,jj=0; int U[ns][ns];for(ii=0;ii<ns;ii++)for(jj=0;jj<n
編譯原理 第五章 語法分析----自下而上分析
一、知識總結 自下而上分析是從輸入串開始,逐步進行規約,直至規約到文法的開始符號,就是一種“移進-規約”法。自上而下分析的中心問題是怎樣判斷棧訂單符號串的可歸約性以及如何規約。解決方案是規範規約。所謂規範規約就是每一步都把控制代碼換成它對應的產生式
編譯原理-第四章 語法分析-4.4 自頂向下的語法分析
自頂向下的語法分析 一、自頂向下語法分析 1.定義 2.不足 不能處理左遞迴 不能處理複雜的回溯技術 3.例 4.演算法構造 FIRST FOLLOW LL(1)文法 二、預測分析 1.遞迴下降的預測分析 遞迴下降預測分析器
第四章 語法分析(上)——LL(1)文法
文章目錄 概述 LL(1)文法 LL(1)文法的判定 消除左遞迴 提取左公因子 First集合 Follow集合 預測分析表的構造 表驅動推導例項 概述 語法分析器是
windows 程式設計 第三章讀書筆記(上)
孃的,今天晚上在陽臺做飯把水管一腳踢爆了,水流到下面的住戶的陽臺,讓個老孃們把我罵了一頓,本著做錯事的原則,我裝的很紳士還說了個對不起,擦,真是條純漢子,能屈能伸。
第三章選擇結構(一)
一、boolean 型別: 值只有兩個:true(真)和false(假) 二、常用的關係符: > < >= <= != == 作用:用來比較運算結果,值是boolean型別。. 三、if選擇結構的語法: if(boolean){ 程式碼塊 } 含義:如果boole
Kali Linux 網路掃描祕籍 第三章 埠掃描(一)
第三章 埠掃描(一) 作者:Justin Hutchens 譯者:飛龍 3.1 UDP埠掃描 由於 TCP 是更加常用的傳輸層協議,使用 UDP 的服務常常被人遺忘。雖然 UDP 服務本質上擁有被忽視的趨勢,這些服務可以列舉,
Kali Linux 網路掃描祕籍 第三章 埠掃描(二)
第三章 埠掃描(二) 作者:Justin Hutchens 譯者:飛龍 3.6 Scapy 隱祕掃描 執行 TCP 埠掃描的一種方式就是執行一部分。目標埠上的 TCP 三次握手用於識別埠是否接受連線。這一型別的掃描指代隱祕掃描