本題摘自北郵的編譯原理與技術。
首先,根據此圖構造狀態轉換表
表中第一列第一行表示從第乙個符號b通過任意個空轉換能到達的節點,ia表示由此行的狀態陣列(可以看作0狀態)經過乙個a可以到達的節點,同理,ib表示由狀態陣列經過乙個b可以到達的節點。
當然,有些人可能覺得和看作兩個狀態不合理,他們之間不是有交集嘛,實際上他們之間並無交集,因為輸入a後,能到達的新節點是3,之所以要寫成,可能是要兼顧邏輯吧》_>
再仔細觀察第一行,既然第一列可以看作乙個狀態,那麼第二列就可以看作首狀態輸入乙個a到達的另乙個狀態,所以可以把剩下兩個和放入二三行的第一列作為狀態1和狀態2,簡而言之,就是幾個不同狀態之間通過輸入a,b來達到另乙個狀態。(不知道我用自己的理解來講有沒有講清楚。。。)重複的狀態陣列自然是略過,畢竟這個**是為了窮舉所有狀態之間關係,因此第四行第乙個是。
因此,根據此狀態轉換表,可以進一步得到下表
由於e是終結狀態,因此,包含e的狀態都是終結狀態,3,4,5,6均為終結狀態。
接下來畫狀態轉換圖就不必多說了吧。
請無視我模糊到變形的,能看清楚就好
編譯原理與編譯構造 由NFA變為DFA
正規文法 形如 a aba a 缺點是不直觀 正規表示式 採用模板,好處是直觀 1 a r e 屬於特殊字元,re 2 if is re,are res 例 a,b 且倒數第3個是 a a b a a b a b 詞法分析 re fa 詞法分析程式 fa 狀態數目有限,是乙個有始有終的過程模型 fa...
編譯原理隨記 NFA轉DFA子集構造演算法
編譯原理隨記 正規表示式記號和狀態圖 lex程式的組成部分 宣告部分 就是宣告變數命名 符號 常量 正則定義這些 轉換規則 就是類似於狀態圖的狀態轉換一樣,每乙個輸入字元都會進行乙個 塊處理,這個處理就叫轉換規則。比如 p1 p2 每乙個 p 代表乙個正規表示式 可複雜可簡單 action 就代表執...
編譯原理 NFA轉換到DFA
學習分享 超詳細解析nfa轉換到dfa 例nfa 1.第一步畫出類似下面的 iia ib2.填寫 i iaib 第一行中i表示從s開始經過任意個 到達的狀態的集合。每行中的ia,ib表示從該行i集合中各個狀態開始經過乙個a b 以及後面有任意個 必須出現在a b 後 到達的狀態的集合。其餘行中的i表...