29
A
回答
3
27
Packrat解析是一種提供漸近地更好的性能的方法對於parsing expression grammars(PEG);專門針對PEGs,linear time解析可以得到保證。
實質上,Packrat解析只是意味着緩存子表達式在測試時是否與字符串中的當前位置匹配 - 這意味着如果當前嘗試將字符串適配到表達式失敗,則嘗試適應其他可能的表達式可以從已經被測試過的字符串中已知的子表達式的合格/不合格中受益。
相關問題
- 1. Packrat解析HTTP
- 2. 斯卡拉packrat解析器
- 3. Packrat解析器衝突
- 4. 什麼是解析?
- 5. Monoidal解析 - 它是什麼?
- 6. 這是什麼解析?
- 7. 什麼是解析集合?
- 8. 什麼是代碼解析?
- 9. 解析是什麼意思?
- 10. OCaml中的Packrat解析(通過laziness記憶)
- 11. LLVM JIT解析器用Bison/Antlr/Packrat/Elkhound編寫/
- 12. 解析到什麼?
- 13. 什麼樣的解析器是普拉特解析器?
- 14. JSON解析與播放:爲什麼是這樣解析列表?
- 15. 什麼是獨立的Java解析器?
- 16. 什麼是最好的XML解析器
- 17. 自頂向下解析是什麼?
- 18. 什麼是重入式解析器?
- 19. $ @對xml解析的含義是什麼?
- 20. 爲什麼MBTilesMapLayer不是解析類型?
- 21. 什麼是語法規則(解析中)?
- 22. 什麼樣的解析器是NSXMLParser
- 23. 這是爲什麼可解析
- 24. 什麼JSON解析是最簡單的?
- 25. 解析雲中的主鍵是什麼?
- 26. 解析什麼是應該在C#
- 27. 什麼是令牌,關於解析
- 28. 什麼是DNS會話的解析?
- 29. 什麼是對象樹 - XML解析?
- 30. Ruby解析器的原理是什麼?
糾正我,如果我錯了,但能夠嘗試在給定位置(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