編譯原理之將正則表達式變爲有窮自動機

編譯原理之將正則表達式變爲有窮自動機

從正則表達式變爲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

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章