0
A
回答
4
一個好的起點是使用現有的實現並批評它們。
注意您不喜歡的數據結構和設計決策。
當你寫你的版本時避免它們。
1
我不知道一本書能幫助你實現細節 - 我確信有很多細節可以使它高效。然而,Thomas A. Sudkamp撰寫的「語言與機器」一書將有助於理解實施背後的想法。
我認爲你需要做的是將正則表達式編譯成有窮自動機。如果你對語法和自動機不太瞭解,那麼該書的第二部分「語法,自動機和語言」將非常有幫助。
這本書編譯器,原理,技巧,&工具;阿爾弗雷德阿霍,莫妮卡林,拉維塞西和傑弗裏烏爾曼(也被稱爲龍書)也可能有所幫助。它的目標是爲計算機語言編寫一個編譯器,而不是用於正則表達式語言。但是,您可能會發現它很有用,特別是關於解析的部分,因爲它具有更多的實用性質(與語言和機器非常相似)。
無論如何,如果我要寫一個正則表達式語言,那將是我的出發點。我建議你從你有權訪問的圖書館借閱。除此之外,你應該看看工作實現。我只是在這裏猜測,但我認爲可能會有關於Perl正則表達式實現的很好的文檔。看到他們如此受歡迎,工作如此出色。
祝你好運。
2
[編輯16-Jan-2015]我最近遇到這本美麗的書Beautiful Code。我建議你閱讀Brian Kernighan的第1章「正則表達式匹配器」。
您可以閱讀肯·湯普森的經典論文「正則表達式搜索算法」... http://portal.acm.org/citation.cfm?doid=363347.363387 ...本文應該讓您很好地理解如何使用有限自動機匹配正則表達式。
這是拉斯考克斯提供了一些詳細的資料另一頁... http://swtch.com/~rsc/regexp/
希望這些幫助您開始。
相關問題
- 1. 沒有正則表達式庫的簡單正則表達式?
- 2. 正則表達式使用GNU C正則表達式庫
- 3. 正則表達式(正則表達式)
- 4. 正則表達式(正則表達式)
- 5. 正則表達式驗證CC數不驗證JCB卡正確
- 6. 正則表達式正則表達式返回的值正則表達式
- 7. OWASP正則表達式存儲庫:這是正確的正則表達式嗎?
- 8. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 9. 正則表達式在javascript - 正則表達式中的變量
- 10. Firefox正則表達式中的Javascript正則表達式
- 11. JavaScript中的正則表達式(正則表達式)
- 12. 正則表達式中的正則表達式
- 13. 正則表達式在c中的正則表達式#
- 14. 選擇正則表達式的正則表達式中間值
- 15. 預構建的正則表達式模式或正則表達式庫?
- 16. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 17. 正則表達式正則表達式模仿正則表達式
- 18. 正則表達式:與(aa | bb)(cc)相匹配?
- 19. Python的正則表達式:「喜歡」正則表達式模式?
- 20. 在Stata中提取正則表達式(正則表達式)
- 21. 正則表達式表達
- 22. 正則表達式表達
- 23. vc6 Cstring的正則表達式庫?
- 24. 庫存正則表達式的錨
- 25. git倉庫的正則表達式
- 26. 的.htaccess重寫正則表達式的正則表達式
- 27. 對面的正則表達式的正則表達式
- 28. 正則表達式的正則表達式的挑戰
- 29. PHP的正則表達式的JavaScript正則表達式
- 30. 正則表達式的URL的正則表達式
沒有這樣的語言。一個好的起點是選擇語言。 *如果你希望你的庫在'C'和用C++編寫代碼(以及Python,Perl,和COBOL,...,...)編寫代碼的人使用,請選擇'C';如果你希望你的庫僅被編寫'C++'代碼的人使用,請選擇'C++'* – pmg 2011-04-16 20:50:52
我將選擇C,正如你所說的 – Avinash 2011-04-16 20:54:31
對不起,最初誤讀了這個。重複http://stackoverflow.com/q/4040835/2509。 – dmckee 2011-04-16 21:22:21