正則表達式生成器 正則表達式轉換成nfa如何實現(xiàn)?
正則表達式轉換成nfa如何實現(xiàn)?NFA是一種抽象的數(shù)據(jù)結構,其具體實現(xiàn)是可變的,它依賴于特定的語言……一種是字節(jié)碼的表達,可以看作是一種線性化的NFA。代碼可以引用regex/regcomp。C在ma
正則表達式轉換成nfa如何實現(xiàn)?
NFA是一種抽象的數(shù)據(jù)結構,其具體實現(xiàn)是可變的,它依賴于特定的語言……
一種是字節(jié)碼的表達,可以看作是一種線性化的NFA。代碼可以引用regex/regcomp。C在master·garyhouston/regex·GitHub上,逐字掃描正則表達式,直接生成字節(jié)碼,表示正則表達式的語法與嵌套詞相同,因此不需要進行復雜的處理,如ast生成。。。Perl和oniguruma都是從這個古老的VM演變而來的
!但是字節(jié)碼不便于執(zhí)行諸如“轉換為DFA”之類的操作。讓我們從定義來看:NFA定義中最重要的是一組狀態(tài)轉換函數(shù)。然后您可以更改所有的轉換函數(shù)(邊)所有的建模都是可以的:
為了便于后續(xù)計算,您可以按邊或輸入C,或按fromState,或按to正則表達式轉換基于NFA算法的正則表達式:對于正則表達式應用運算符部分構造方法:1。符號堆棧,即符號的操作,其中存儲wcharut類型,用于連接,左括號
這是相當麻煩的。如果必須這樣做,應該首先將正則表達式轉換為NFA,然后再轉換為NFA->DFA->sdfa。如果兩個正則表達式相同,則它們應該具有唯一的sdfa。如果是后一個問題,應該是語法包含。目前,還沒有有效的解決辦法。