2012-04-02 3 views
8

철수하지 않습니다 "로그인"등을 시도해보십시오. 그러나 "탈퇴"와 만 일치하려고 시도하고, 실패하면 오류가 발생합니다.하스켈 Text.Parsec.Combinator 선택은 내가 파섹 일부 텍스트를 구문 분석하려고 해요

ghci> parseTest singleparam (pack "login asdf") 
parse error at (line 1, column 1): 
unexpected "o" 
expecting "leave" 
ghci> parseTest singleparam (pack "leave asdf") 
LoginCmd "asdf" 

내가 뭘 잘못하고 있니?

답변

14

효율성을 위해 파섹이 자동으로 역 추적하지 않습니다. 규칙은 분기가 토큰을 승인하면 대체 분기가 제거된다는 규칙입니다. 해결 방법은 try (string "leave")try (string "login") 등을 사용하여 명시 적으로 백 트랙킹을 추가하는 것입니다.

예제에서 'l' 어울리다".

자세한 내용은 Real World Haskell (book, online) on parsec.

관련 문제