29
A
回答
3
27
Packrat解析是一種提供漸近地更好的性能的方法對於parsing expression grammars(PEG);專門針對PEGs,linear time解析可以得到保證。
實質上,Packrat解析只是意味着緩存子表達式在測試時是否與字符串中的當前位置匹配 - 這意味着如果當前嘗試將字符串適配到表達式失敗,則嘗試適應其他可能的表達式可以從已經被測試過的字符串中已知的子表達式的合格/不合格中受益。
相關問題
- 1. Packrat解析HTTP
- 2. 斯卡拉packrat解析器
- 3. 什麼是解析?
- 4. 什麼是代碼解析?
- 5. 解析是什麼意思?
- 6. Monoidal解析 - 它是什麼?
- 7. 這是什麼解析?
- 8. JSON解析與播放:爲什麼是這樣解析列表?
- 9. 什麼是解析出一個字符
- 10. 什麼是DNS會話的解析?
- 11. 什麼是最好的XML解析器
- 12. 什麼是獨立的Java解析器?
- 13. 什麼樣的解析器是NSXMLParser
- 14. 解析XML是什麼意思?
- 15. 什麼是重入式解析器?
- 16. 什麼是解析「對象」列類型?
- 17. 自頂向下解析是什麼?
- 18. 什麼是令牌,關於解析
- 19. 解析什麼是應該在C#
- 20. 這是爲什麼可解析
- 21. 什麼JSON解析是最簡單的?
- 22. Add rCharts to packrat
- 23. RStudio,Packrat和Knitr
- 24. Packrat問題R
- 25. 什麼是限制這個JSON解析,我能做些什麼來解決它?
- 26. 在WPF中解析命令。什麼是解決詞彙?
- 27. 什麼是錯的:「值解析器不是包scala.util.parsing.combinator成員」?
- 28. Angularjs $位置服務顯然不是解析網址是什麼?
- 29. 爲什麼lxml html解析器不解析完整文件?
- 30. 爲什麼bool.try解析不解析值爲TRUE或FALSE
糾正我,如果我錯了,但能夠嘗試在給定位置(PEG的一個功能)匹配幾個不同的非終止符號意味着無限的前瞻。這意味着您可能需要將記憶輸入的重要部分保留在內存中。對? – Honza 2011-09-07 22:17:22
@Honza:這是一個經典的時間/空間折衷。你是否願意追尋N條路徑,然後才找到合適的路徑,或者你寧願潛在地沿着N條路徑同時將每條路徑放在內存中。無論哪種方式,如果你向前看得太遠,它會很糟糕,如果你沒有向前看,那就沒有成本。我相信我的2G ram lappy不會出汗,如果我先看1個標記,2個標記,3個標記......只要你不試圖解析自然語言,你應該沒問題。 – efrey 2012-12-09 20:12:10
如果使用'lazy vals'(Scala Parser Combinators),那麼'packrat parsing'已經實現了嗎?換句話說,如果我使用'lazy val'來緩存已解析的標記,那麼我是否已經使用'packrat parsing'? – 2014-01-08 18:41:41