2013-08-03 2 views
9
나는 하스켈 파서 콤비에 대해 많이 읽고 같은 주제를 많이 발견되었다

:하스켈 파서 콤비

그러나이 모든 항목은 Parser CombinatorsParser Generators을 비교합니다.

나는 당신에게 부탁 할 Parser Combinator에 가장 적합한 다음 조건 중 : 내가 원하는

  • 사용자에 대한 (오류 복구 포함) 오류 및 메시지에 대한 좋은 제어를 할

    1. (전체 파일이 아니라 한 문장으로) 파서에 먹이를 줄 수 있습니다.
    2. 저는 문법을 멋지게 재구성 할 수 있기를 원합니다. (저는 현재 문법을 개발 중입니다. "작업의 멋진 부분"이 중요합니다. "
    3. 최종 파서는 빠릅니다 (성능은 중요하지만 1 ~ 3 점만큼 중요하지 않음).

    나는 가장 인기 파서 콤비는 것을 발견했습니다

  • +0

    모낭 파서 인 parsec 만 알고있다. 사용하기가 쉽고 오류를 잘 제어 할 수 있습니다. – Jocke

    +3

    나는'attoparsec' 만 사용 했으므로 Parsec에 관해 처음으로 알지 못합니다. attoparsec은 매우 빠르지 만 오류 메시지 앞에서는별로 좋지 않다는 평판을 얻고 있습니다. 프런트 엔드 사용자가 오류 메시지를 보지 않아야한다는 백엔드 구문 분석 요구 사항을 타깃으로합니다. – asm

    +0

    @AndrewMyers, 나는 동의한다, 나는 그 종류의 일을 위해 attoparsec를 사용했고 매우 빠르고 간단하다 (특히 단순한 문법을 ​​위해). 해킹에 대한 일반적인 parsec 라이브러리와 같은 많은 멋진 기능은 제공되지 않지만 멋진 '텍스트'를 지원합니다. – Wes

    답변

    3

    내가 heres는 파섹, 갈 확실히 말할 것 이유 :

    Attoparsec은 빠르게 사용할 수 있도록 설계되었지만 Parsec에서받는 오류 메시지에 대한 강력한 지원이 부족하여 첫 번째 지점에서 승리합니다.

    파서 결합 자 라이브러리를 사용한 나의 경험은 GHCi 또는 테스트에서 파서의 개별 부분을 테스트하는 것이 정말 쉽기 때문에 두 번째 요점은 모두 실제로 만족 스럽습니다. 마지막으로, Attoparsec과 Parsec은 꽤 빠르다.

    마지막으로 Parsec은 가장 오래되었으며 많은 유용하고 고급 기능을 가지고 있습니다. 이것은 일반적인 유지 보수가 더 쉬울 것이라는 것을 의미하며, 더 많은 예제가 Parsec에 있고 더 많은 사람들이 Parsec에 익숙합니다. uu-parsinglib은 탐험할만한 가치가 있지만, Parsec을 먼저 익히는 것이 이러한 이유로 더 좋은 방법이라고 제안합니다. Alex는 Parsec이나 다른 것들과 함께 사용하는 데 가장 권장되는 렉서이지만, 나는 그것을 직접 사용하지 않았다.

    +0

    좋은 지적. 대화 절반을 삭제했습니다. 이 메시지는 5 초 안에 자멸하거나 하루를주고갑니다. – AndrewC