2010-05-27 59 views
1

有人可以告訴我如何用scala 2.8 packrat解析解析HTTP協議嗎?Packrat解析HTTP

我需要解析附實施例一HTTP響應到

  • ResponseStatusCode的:int
  • 接頭:列表[(字符串,字符串)]
  • 體:字符串,數組[字節],CharBuffer的 或不管

Packrat-Parser的簡要說明用法非常感謝。謝謝!

HTTP/1.1·200·OK(CR)(LF) 
Date:·Thu,·27·May·2010·12:18:48·GMT(CR)(LF) 
Server:·Apache(CR)(LF) 
Vary:·Accept-Encoding,User-Agent(CR)(LF) 
Connection:·close(CR)(LF) 
Transfer-Encoding:·chunked(CR)(LF) 
Content-Type:·text/html;·charset=utf-8(CR)(LF) 
(CR)(LF) 
... Hello World .. 
+0

我認爲使用combinator解析器是爲了使用大錘殺死跳蚤。那麼,也許是一個大錘殺死蟑螂。請注意,packrat部分是關於使解析器在回溯時更高效。不習慣,我沒有看到HTTP響應的解碼需要任何回溯,所以packrat方面是沒有意義的。 – 2010-05-27 14:58:33

+0

好的,但什麼是一個優雅而有效的解決方案來解析任意符合標準的http響應? – hotzen 2010-05-27 15:18:59

+1

您對編寫HTTP響應解碼器的體驗感興趣嗎?或者你只是想消耗它們?如果是後者,我只需使用其中一個現成的庫。 Apache HttpComponents(http://hc.apache.org/)將是明顯的建議。 – 2010-05-27 19:06:25

回答

2
+0

我認爲「老派」解析器和新packrat解析器之間存在較大差異。 – hotzen 2010-05-27 15:17:56

+0

@hotzen:Scala 2.8組合器解析器庫添加了PEG解析,並且可以記憶解析結果,以便在發生回溯時進行潛在的重用。我沒有看到其中任何一個與解析HTTP響應有關。也許我錯了。 – 2010-05-27 15:24:05

+0

你是完全正確的,但因爲這是一個當前的解析工作要完成,所以我想我可以看看這個包裝盒...... – hotzen 2010-05-28 10:49:00