1. 程式人生 > >編譯原理 第三章 詞法分析(下)

編譯原理 第三章 詞法分析(下)

3.6 有窮自動機(非常重要)

3.6.1 不確定的有窮自動機(重要)

例:

 狀態0是開始狀態, 在狀態0上輸入符號b會進入狀態0,輸入a可能進去狀態0也有可能進入狀態1。所以對於狀態0來說一個確定的輸入符號a他有兩種離開狀態,這就是一種不確定的狀態。

 

 

3.6.2 轉換表 (非常重要)

: 3-24NFA 對應的轉換表

3.6.3 自動機中輸入字串的接受(重要)

 

 

 

狀態0連線著兩個ε,為什麼要連線ε?

我們可以把NFA L(aa*|bb*),拆分為兩個獨立的

NFA。

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 確定的有窮自動機(重要)

 

 

第三章後續都是一些演算法,每個演算法單獨記錄一個博文把。。。。