我想寫一個正則表達式引擎。我想用手寫一個遞歸下降解析器。對於正則表達式的語言(而不是正則表達式可以描述的語言)而言,無上下文遞歸的上下文無關文法是什麼樣的?重新分解語法糖是否最容易,即將a+
更改爲aa*
?提前致謝!描述正則表達式的上下文無關文法?
7
A
回答
7
左遞歸:
Expression = Expression '|' Sequence
| Sequence
;
Sequence = Sequence Repetition
| <empty>
;
右遞歸:
Expression = Sequence '|' Expression
| Sequence
;
Sequence = Repetition Sequence
| <empty>
;
曖昧形式:
Expression = Expression '|' Expression
| Sequence
;
Sequence = Sequence Sequence
| Repetition
| <empty>
;
0
關於Left Recursion的維基百科文章給出了關於如何將其關閉的很好的信息。
+0
這並不是說我需要用左遞歸重新構造一個語法,而是試圖理解語法在一般情況下應該是什麼樣子。雖然我已經閱讀了很多關於它們的文章,但我從來沒有真正使用過「無所不在」的上下文無關語法。 – wkf 2009-06-10 23:14:59
2
你可以看看source code for Plan 9 grep。 grep.y文件有一個yacc(如果我正確記得,LALR(1))正則表達式的文法。您可能可以從yacc語法開始,並將其重寫爲遞歸下降解析。
相關問題
- 1. 描述用正則表達式語言
- 2. 正則表達式查詢,描述
- 3. 這個上下文無關文法是一個正則表達式嗎?
- 4. 用於表示正則表達式的上下文無關語法
- 5. 算法從任何正則表達式生成上下文無關語法
- 6. 正則表達式Java字上下文
- 7. 的Python /正則表達式 - 解析文本描述的最佳方式
- 8. SCSS和LESS的正式文法描述
- 9. 正式上下文無關文法從上下文無關語言
- 10. 用於描述表單輸入的正則表達式
- 11. 表達式的上下文無關語法
- 12. sql文件上的正則表達式
- 13. 解析超鏈接和描述的正則表達式
- 14. 無法在.dat文件上實現正則表達式
- 15. 法律引文的正則表達式
- 16. 日文中的正則表達式(正則表達式)
- 17. 返回文件名無正則表達式的正則表達式
- 18. 正則表達式來獲得鏈接,鏈接描述
- 19. 正則表達式,重新編譯描述
- 20. 這是什麼正則表達式描述:
- 21. 正則表達式 - 文檔
- 22. 正則表達式:文本
- 23. 「無法翻譯」的文法到正則表達式
- 24. 的InstallShield:達爾文描述
- 25. Javascript正則表達式錯誤(無效的正則表達式:/?/:無法重複)
- 26. 可以使用上下文無關語法描述char數的語言嗎?
- 27. 舊自述文件的正則表達式
- 28. 排除特定上下文的正則表達式匹配
- 29. 正則表達式在上下文中的字符串
- 30. 正則表達式中這種替代方法的描述是否錯誤?
對人有利;你今天晚上回答了我所有的問題。謝謝! – wkf 2009-06-11 02:47:02