正則表達(dá)式在線(xiàn)生成器 正則表達(dá)式轉(zhuǎn)換成nfa如何實(shí)現(xiàn)?
正則表達(dá)式轉(zhuǎn)換成nfa如何實(shí)現(xiàn)?NFA是一種抽象的數(shù)據(jù)結(jié)構(gòu),其具體實(shí)現(xiàn)是可變的,它依賴(lài)于特定的語(yǔ)言……一種是字節(jié)碼的表達(dá),可以看作是一種線(xiàn)性化的NFA。代碼可以引用regex/regcomp。C在ma
正則表達(dá)式轉(zhuǎn)換成nfa如何實(shí)現(xiàn)?
NFA是一種抽象的數(shù)據(jù)結(jié)構(gòu),其具體實(shí)現(xiàn)是可變的,它依賴(lài)于特定的語(yǔ)言……
一種是字節(jié)碼的表達(dá),可以看作是一種線(xiàn)性化的NFA。代碼可以引用regex/regcomp。C在master·garyhouston/regex·GitHub上,逐字掃描正則表達(dá)式,直接生成字節(jié)碼,表示正則表達(dá)式的語(yǔ)法與嵌套詞相同,因此不需要進(jìn)行復(fù)雜的處理,如ast生成。。。Perl和oniguruma都是從這個(gè)古老的VM演變而來(lái)的
!但是字節(jié)碼不便于執(zhí)行諸如“轉(zhuǎn)換為DFA”之類(lèi)的操作。讓我們從定義來(lái)看:NFA定義中最重要的是一組狀態(tài)轉(zhuǎn)換函數(shù)。然后你可以改變所有的轉(zhuǎn)換函數(shù)(邊)所有的建模都是可以的:
為了便于后續(xù)計(jì)算,你可以按邊或輸入C,或按from琰State,或按to琰State可以被索引并放入哈希表