2010-05-27 4 views
1

을 파싱하면 누가 스칼라 2.8 packrat-parsing을 사용하여 HTTP 프로토콜을 구문 분석하는 방법을 시작할 수 있습니까? 지능 Packatter가 HTTP

  • 헤더 : 목록 [(문자열, 문자열)]
  • 바디 : 문자열, 배열 [바이트], CharBuffer를 또는

    나는

    • ResponseStatusCode에 첨부 된 예시적인 HTTP 응답을 구문 분석 할 필요가 무엇이든

    짧은 예전의 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

    나는 이것에 대해 벼룩을 죽일 슬레지 해머를 사용하는 결합 자 파서를 사용하는 것이 같다고 생각합니다. 바퀴벌레를 죽이기위한 쇠 망치. Packat 부분은 파서가 백 트랙을 할 때 파서를보다 효율적으로 만드는 것에 관한 것입니다. Offhand, 나는 어떤 backtracking을 필요로하는 것처럼 HTTP 응답의 디코딩을 보지 못한다. 그래서 packrat aspect는 중요하지 않다. –

    +0

    좋아요.하지만 임의의 표준 호환 HTTP 응답을 구문 분석하기위한 우아하면서도 효율적인 솔루션은 무엇입니까? – hotzen

    +1

    HTTP 응답 디코더 작성 경험에 관심이 있으십니까? 아니면 그냥 소비하고 싶니? 후자라면, 기성품 라이브러리 중 하나만 사용하면됩니다. Apache HttpComponents (http://hc.apache.org/)가 분명한 제안이 될 것입니다. –

    답변

    2
    +0

    "구식"파서와 새로운 팩트 파서 사이에는 더 큰 차이가 있다고 생각했습니다. – hotzen

    +0

    @hotzen : Scala 2.8 combinator 파서 라이브러리는 PEG 파싱을 추가하고 역 추적이 발생할 때 잠재적 인 재사용을 위해 구문 분석 결과를 메모 할 수 있습니다. HTTP 응답을 파싱하는 데 관련이 있다고 보지 않습니다. 아마도 나는 틀렸어. –

    +0

    당신은 완전히 옳았 습니다만, 이것은 현재 수행되고있는 파싱 작업이므로, 나는 packrats를 조사 할 수있을 것 같았습니다. – hotzen