編譯原理之將正則表達式變爲有窮自動機
從正則表達式變爲NFA
- 首先先看看簡單的基本的正則表達式是如何對應的相關的NFA的
- 字母表中的符號a對應的NFA
- r = r1r2對應的NFA
- r = r1|r2對應的NFA
- r = (r1)*對應的NFA
實例將對應的r=(a|b)*abb轉成對應的NFA
- 將r當作一個正則表達式,直接帶入整體
- 將與連接的直接分解成順序結構
- 將克林閉包轉成經過自己的循環
- 將或運算進行拆解
基本思路就是不斷地增加新地點,有的可能會用不同地方式進行替代,如採用Thompson法進行替代
- 用下圖代替a|b
- 用下圖代替ab
- 用下圖代替a*
例題
構建((0|1*)|0)*11對應的NFA