Îõ³h$5³2¹•      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”CC0-1.0mordae@anilinux.orgunstablenon-portable (ghc) Safe-Inferred %+àô × snackâFails if the value returned by the parser does not conform to the predicate. Generalized form of .Example: 6pInput = takeWhile isLetter `provided` (odd . length) snack"Tries various parsers, one by one.Example: ­pExpression = choice [ pConstant , pVariable , pBinaryOperation , pFunctionApplication ] snackúReplicates the parser given number of times, collecting the results in a list. Fails if any instance of the parser fails.Example: ýpFourWords = (:) <$> word <*> count 3 (blank *> word) where word = takeWhile1 isLetter blank = takeWhile1 isSpace snackCaptures first parser as Left or the second as Right.snack Shortcut for  with a default value.Example: ‹data Contact = Contact { contactName :: Text , contactEmail :: Maybe Text } pContact = Contact <$> pFullName <*> option pEmail snackLike ", but requires at least one match.snackLike ;, but stops once the second parser matches the input ahead.Example: âpBodyLines = pLine `manyTill` pEnd where pLine = takeTill (== 'n') pEnd = string "n.n" snack Similar to 3, but interleaves the first parser with the second.Example: pLines = pLine  char 'n' snackLike ", but requires at least one match. snack!Wraps the parser from both sides.Example: ÄpToken = takeWhile1 (inClass "A-Za-z0-9_") `wrap` takeWhile isSpace !snack4Tests whether the character lies within given range. Definition: *inRange lo hi = c -> (lo <= c && c <= hi) "snack Negation of !. Definition: -notInRange lo hi = c -> (c <= lo || hi <= c)  !"CC0-1.0mordae@anilinux.orgunstablenon-portable (ghc)None %+àô×-snack Parser for • inputs.snack"Run the parser on specified input.snack9Result represents either success or some kind of failure.îYou can find the problematic offset by subtracting length of the remainder from length of the original input.snackåParser successfully matched the input. Produces the parsing result and the remainder of the input.snackæParser failed to match the input. Produces list of expected inputs and the corresponding remainder.snack?Parser ran into an error. Either syntactic or a validation one.#snack More precise  description produced by J.%snackName of the source file.&snack)Line and column where the problem starts.'snack'Line and column where the problem ends.(snack$Message associated with the problem.)snack%Accepts a single, matching character.*snack&Accepts a single, differing character.+snackãDiscards the remaining input and returns just the parse result. You might want to combine it with A for the best effect.Example: )parseOnly (pContacts <* endOfInput) bstr ,snackAccepts a single character.-snack2Accepts a single character matching the predicate..snack5Accepts a single unicode white space character. See  for details./snack6Accepts multiple unicode white space characters. See  for details.0snack"Peeks ahead, but does not consume.ÒBe careful, peeking behind end of the input fails. You might want to check using B beforehand.1snackAccepts a matching string.2snackSame as 1, but case insensitive.3snackÔAccepts given number of characters. Fails when not enough characters are available.4snackàScans ahead statefully and then accepts whatever characters the scanner liked. Scanner returns –& to mark end of the acceptable extent.5snackLike 4+, but also returns the final scanner state.6snackØEfficiently consume as long as the input characters match the predicate. An inverse of 8.7snackLike 6+, but requires at least a single character.8snackÖEfficiently consume until a character matching the predicate is found. An inverse of 6.9snackSame as 8+, but requires at least a single character.:snackÓMakes the parser not only return the result, but also the original matched extent.;snackNames an extent of the parser.âWhen the extent returns a Failure, details are discarded and replaced with the extent as a whole.ëWhen the extent returns an Error, it is adjusted to cover the whole extent, but the reason is left intact.ôYou should strive to make labeled extents as small as possible, approximately of a typical token size. For example: ;pString = label "string" $ pStringContents `wrap` char '"' <snack!Un-names an extent of the parser.Same as ;ë, but removes any expected values upon Failure. Very useful to mark comments and optional whitespace with.=snackÅDisable backtracking for the parser. Failure is treated as an Error.>snack>Validate parser result and turn it into an Error upon failure.?snackAccept whatever input remains.@snackPeek at whatever input remains.Asnack7Accepts end of input and fails if we are not there yet.Bsnack3Returns whether we are at the end of the input yet.CsnackAccepts optional '+' or '-'? character and then applies it to the following parser result.Dsnack1Accepts an integral number in the decimal format.EsnackØAccepts an integral number in the hexadecimal format in either case. Does not look for 0x or similar prefixes.Fsnack/Accepts an integral number in the octal format.GsnackAccepts a fractional number as a decimal optinally followed by a colon and the fractional part. Does not support exponentiation.Hsnack;Calculate offset from the original input and the remainder.Isnack Determine (line, column)+ from the original input and the remainder.+Counts line feed characters leading to the HÐ, so only use it on your slow path. For example when describing parsing errors.Jsnack.Process the result for showing it to the user. #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJÂ+)*,-./0123456789CDEFG :;<=>?@ABHIJ#$%&'(CC0-1.0mordae@anilinux.orgunstablenon-portable (ghc)None %+àô'+ snack Parser for — inputs. snack"Run the parser on specified input. snack9Result represents either success or some kind of failure.îYou can find the problematic offset by subtracting length of the remainder from length of the original input. snackåParser successfully matched the input. Produces the parsing result and the remainder of the input.snackæParser failed to match the input. Produces list of expected inputs and the corresponding remainder.snack?Parser ran into an error. Either syntactic or a validation one.Usnack Accepts a single, matching byte.Vsnack!Accepts a single, differing byte.WsnackãDiscards the remaining input and returns just the parse result. You might want to combine it with j for the best effect.Example: )parseOnly (pContacts <* endOfInput) bstr XsnackAccepts a single byte.Ysnack-Accepts a single byte matching the predicate.Zsnack"Peeks ahead, but does not consume.ÒBe careful, peeking behind end of the input fails. You might want to check using k beforehand.[snackAccepts a matching string.\snackÊAccepts given number of bytes. Fails when not enough bytes are available.]snackÛScans ahead statefully and then accepts whatever bytes the scanner liked. Scanner returns –& to mark end of the acceptable extent.^snackLike ]+, but also returns the final scanner state._snackÓEfficiently consume as long as the input bytes match the predicate. An inverse of a.`snackLike _&, but requires at least a single byte.asnackÑEfficiently consume until a byte matching the predicate is found. An inverse of _.bsnackSame as a&, but requires at least a single byte.csnackÓMakes the parser not only return the result, but also the original matched extent.dsnackNames an extent of the parser.âWhen the extent returns a Failure, details are discarded and replaced with the extent as a whole.ëWhen the extent returns an Error, it is adjusted to cover the whole extent, but the reason is left intact.ôYou should strive to make labeled extents as small as possible, approximately of a typical token size. For example: ;pString = label "string" $ pStringContents `wrap` char '"' esnack!Un-names an extent of the parser.Same as dë, but removes any expected values upon Failure. Very useful to mark comments and optional whitespace with.fsnackÅDisable backtracking for the parser. Failure is treated as an Error.gsnack>Validate parser result and turn it into an Error upon failure.hsnackAccept whatever input remains.isnackPeek at whatever input remains.jsnack7Accepts end of input and fails if we are not there yet.ksnack3Returns whether we are at the end of the input yet.lsnack;Calculate offset from the original input and the remainder.1  UVWXYZ[\]^_`abcdefghijkl1 WUVXYZ[\]^_`ab cdefghijklCC0-1.0mordae@anilinux.orgunstablenon-portable (ghc)None %+àô2vsnack More precise   description produced by ’.xsnackName of the source file.ysnack)Line and column where the problem starts.zsnack'Line and column where the problem ends.{snack$Message associated with the problem.|snack+Accepts a single, matching ASCII character.}snack,Accepts a single, differing ASCII character.~snackAccepts a single character.snack2Accepts a single character matching the predicate.€snack3Accepts a single ASCII white space character. See ‚ for details.snack4Accepts multiple ASCII white space characters. See ‚ for details.‚snackTrue for any of the #[' ', '\t', '\n', '\v', '\f', '\r'] characters.Please note that Data.Text.Parser re-exports Ê, that considers more unicode codepoints, making it significantly slower.ƒsnack"Peeks ahead, but does not consume.ÒBe careful, peeking behind end of the input fails. You might want to check using k beforehand.„snackÛAccepts a matching string. Matching is performed in a case-insensitive manner under ASCII.…snackÊAccepts given number of bytes. Fails when not enough bytes are available.†snackÛScans ahead statefully and then accepts whatever bytes the scanner liked. Scanner returns –& to mark end of the acceptable extent.‡snackLike †+, but also returns the final scanner state.ˆsnackØEfficiently consume as long as the input characters match the predicate. An inverse of Š.‰snackLike ˆ,, but requires at least a single character.ŠsnackÖEfficiently consume until a character matching the predicate is found. An inverse of ˆ.‹snackSame as Š+, but requires at least a single character.ŒsnackAccepts optional '+' or '-'? character and then applies it to the following parser result.snack1Accepts an integral number in the decimal format.ŽsnackØAccepts an integral number in the hexadecimal format in either case. Does not look for 0x or similar prefixes.snack/Accepts an integral number in the octal format.snackAccepts a fractional number as a decimal optinally followed by a colon and the fractional part. Does not support exponentiation.‘snack Determine (line, column)+ from the original input and the remainder.+Counts line feed characters leading to the lÐ, so only use it on your slow path. For example when describing parsing errors.’snack.Process the result for showing it to the user.Ä  !"W[cdefghijklvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’Ä W|}~€‚ƒ[„…†‡!"ˆ‰Š‹ŒŽ cdefghijkl‘’vwxyz{˜       !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ0[2\789:;<=>?@AB]^EFLO_PQRSTWX))*+,-./123456789:;<=GHIJKMNUV`abcdefgè$snack-0.3.0.0-56wxLSAIabz13Hw3YJS7ipData.Text.ParserData.ByteString.ParserData.ByteString.Parser.Char8Snack.Combinatorsstring Data.CharisStringbase Control.MonadguardGHC.BasepureunlessControl.Applicativeoptional GHC.UnicodeisSpace Data.FunctorvoidwhenmanyemptyParser runParserResultSuccessFailureErrorprovidedchoicecounteitherPoptionmany1manyTillsepBysepBy1wrapinRange notInRange ExplanationexSource exSpanFromexSpanTo exMessagecharnotChar parseOnlyanyCharsatisfyspace skipSpacepeekCharstringCItakescan runScanner takeWhile takeWhile1takeTill takeTill1matchlabelunlabelcommitvalidatetakeTextpeekText endOfInputatEndsigneddecimal hexadecimaloctal fractionaloffsetpositionexplain$fFunctorResult$fMonadPlusParser $fMonadParser$fAlternativeParser$fApplicativeParser$fFunctorParser$fEqExplanation$fShowExplanation $fEqResult $fShowResultbytenotByteanyBytepeekBytetakeByteStringpeekByteString$fMonadFailParsertext-2.0-1Q39dVtB9SgGnSFuJBE6QZData.Text.InternalText GHC.MaybeNothing*bytestring-0.11.3.1-6BX4W6rzLFw9rkgS7vhQZXData.ByteString.Internal ByteString