簡體   English   中英

將正則表達式轉換為有限狀態機

[英]Converting regular expression to finite state machine

你會在算法上提示將任何正則表達式轉換為有限狀態機嗎? 例如,解析正則表達式並將狀態適當地添加到fsm的算法? 任何參考或更深層的想法?

我用Python寫這個

感謝致敬

使用Michael Sipser的計算理論導論 第1章給出了將正則表達式轉換為確定性或非確定性有限狀態自動機(DFA或NFA)的詳細算法,在證明它們的等價性的背景下(DFA,NFA和正則表達式可以完全匹配相同的類)字符串)。

一般的想法是:將正則表達式轉換為NFA,這可以非常直接地完成( *是循環, |和字符范圍是分支點)。 然后,您可以轉換NFA成(更大)DFA,這涉及到每個替代NFA狀態創建一個DFA狀態。 DFA最多具有與NFA狀態集的冪集一樣多的狀態(例如,具有3個狀態的NFA可以轉換為具有最多2 ^ 3 = 8個狀態的DFA),並且可以識別任何目標字符串而無需回溯。 閱讀本書了解詳情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM