我一直在尋找一些算法,在輸入一個正則表達式或字符串,並將其轉換爲NFA,然後轉換爲DFA,這實際上會打印出轉換表相應的最終DFA。NFA DFA和正則表達式轉換表
因此,我想知道是否已經有一個算法或C或Python庫來做到這一點,或者如果您有使用算法的建議,我可以實現。
謝謝。
我一直在尋找一些算法,在輸入一個正則表達式或字符串,並將其轉換爲NFA,然後轉換爲DFA,這實際上會打印出轉換表相應的最終DFA。NFA DFA和正則表達式轉換表
因此,我想知道是否已經有一個算法或C或Python庫來做到這一點,或者如果您有使用算法的建議,我可以實現。
謝謝。
我不確定這些鏈接是否可以幫助您。
第一個提供了Python中非常簡單的NFA/DFA實現,並將NFA轉換爲DFA。它不會從正則表達式生成NFA,但它不是很難做到。第二個網站對NFA和DFA進行了長時間的討論,其中包括大量代碼示例(主要以C語言編寫)以及我所知道的外部庫的鏈接。第三和第四個鏈接提供了第二篇文章作者開發的兩個regex引擎實現的源代碼,包括從正則表達式解析到NFA,然後從NFA轉換到DFA。但請注意,我沒有看過這些項目。
否則,我會提的是最真實的世界正則表達式引擎使用NFA,而不是DFA,因爲一些擴展功能,根本就不能通過DFA執行。因此,如果上面的鏈接都不能幫助你,那麼你可能會看看編譯器編譯器,因爲它們是真正使用DFA的。
正如你所寫的,你的問題有點過於寬泛/主觀回答:你問你是否應該自己編寫代碼或是否有現有的庫。 Stack Overflow中這些表單的問題在這裏並不合適。你能否更新你的問題以獲得更具體的內容,比如「如何使用庫X來解決這個問題?」或者「什麼算法在這裏最合適?」 – templatetypedef
現在,我問,如果有一個現有的庫,或者如果我應該從頭開始實施,或者(這就是爲什麼我提到湯姆森)如果有人知道我可以實現的算法。但是我修改了一些問題,我希望它更清楚。 – Anoracx
http://projectsgeek.com/2011/05/regular-expression-to-dfa-code-in-c-language.html –