2010-05-27 60 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