This module contains Char-specific Parsers.
Avoid using this module if performance is a concern. You can achieve
everything that you can do with this module by using Combine.regex,
Combine.string or Combine.primitive and, in general, those will be
much faster.
Parse an exact character match.
parse (char 'a') "a" --> Ok 'a'
parse (char 'a') "b" --> Err ["expected 'a'"]
-- You can write the expected result on the next line,
add 41 1
--> 42
-- You can write the expected result on the next line,
add 41 1
--> 42Parse any character.
parse anyChar "a" ==
-- Ok 'a'
parse anyChar "" ==
-- Err ["expected any character"]Peek at the next character without consuming any input.
Returns Nothing if at end of input.
parse peekChar "abc" ==
-- Ok (Just 'a')
parse (peekChar |> Combine.ignore (char 'a')) "abc" ==
-- Ok (Just 'a')
parse peekChar "" ==
-- Ok NothingParse a character from the given list.
parse (oneOf ['a', 'b']) "a" ==
-- Ok 'a'
parse (oneOf ['a', 'b']) "c" ==
-- Err ["expected one of ['a','b']"]Parse a character that is not in the given list.
parse (noneOf ['a', 'b']) "c" ==
-- Ok 'c'
parse (noneOf ['a', 'b']) "a" ==
-- Err ["expected none of ['a','b']"]Parse a space character.
parse space " " == Ok ' '
parse space "a" == Err [ "expected a space" ]Parse a \t character.
parse tab "\t" == Ok '\t'
parse tab "a" == Err [ "expected a tab" ]Parse a \n character.
parse newline "\n" == Ok '\n'
parse newline "a" == Err [ "expected a newline" ]Parse a \r\n sequence, returning a \n character.
parse crlf "\u{000D}\n" == Ok '\n'
parse crlf "\n" == Err [ "expected CRLF" ]
parse crlf "\u{000D}" == Err [ "expected CRLF" ]Parse an end of line character or sequence, returning a \n character.
parse eol "\n" == Ok '\n'
parse eol "\u{000D}\n" == Ok '\n'
parse eol "\u{000D}" == Ok '\n'
parse eol "a" == Err [ "expected an end of line character" ]Parse any lowercase character.
parse lower "a" == Ok 'a'
parse lower "A" == Err [ "expected a lowercase character" ]Parse any uppercase character.
parse upper "A" == Ok 'A'
parse upper "a" == Err [ "expected an uppercase character" ]Parse any base 10 digit.
parse digit "0" == Ok '0'
parse digit "9" == Ok '9'
parse digit "a" == Err [ "expected a digit" ]Parse any base 8 digit.
parse octDigit "0" == Ok '0'
parse octDigit "7" == Ok '7'
parse octDigit "8" == Err [ "expected an octal digit" ]Parse any base 16 digit.
parse hexDigit "0" == Ok '0'
parse hexDigit "7" == Ok '7'
parse hexDigit "a" == Ok 'a'
parse hexDigit "f" == Ok 'f'
parse hexDigit "g" == Err [ "expected a hexadecimal digit" ]Parse any alphabetic character.
parse alpha "a" == Ok 'a'
parse alpha "A" == Ok 'A'
parse alpha "0" == Err [ "expected an alphabetic character" ]
Parse a character matching the predicate.