andre-dietrich/parser-combinators/7.1.1

Combine.Char

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.

Parsers

satisfy : (Char -> Bool) -> Parser s Char

Parse a character matching the predicate.

parse (satisfy ((==) 'a')) "a" ==
-- Ok 'a'


parse (satisfy ((==) 'a')) "b" ==
-- Err ["could not satisfy predicate"]
char : Char -> Parser s Char

Parse an exact character match.

parse (char 'a') "a" --> Ok 'a'


parse (char 'a') "b" --> Err ["expected a"]
anyChar : Parser s Char

Parse any character.

parse anyChar "a" ==
-- Ok 'a'


parse anyChar "" ==
-- Err ["expected any character"]
peekChar : Parser s (Maybe Char)

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 Nothing
oneOf : List Char -> Parser s Char

Parse a character from the given list.

parse (oneOf ['a', 'b']) "a" ==
-- Ok 'a'


parse (oneOf ['a', 'b']) "c" ==
-- Err ["expected one of ['a','b']"]
noneOf : List Char -> Parser s Char

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']"]
space : Parser s Char

Parse a space character.

parse space " " == Ok ' '


parse space "a" == Err [ "expected a space" ]
tab : Parser s Char

Parse a \t character.

parse tab "\t" == Ok '\t'


parse tab "a" == Err [ "expected a tab" ]
newline : Parser s Char

Parse a \n character.

parse newline "\n" == Ok '\n'


parse newline "a" == Err [ "expected a newline" ]
crlf : Parser s Char

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" ]
eol : Parser s Char

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 "a" == Err [ "expected a newline", "expected CRLF" ]
lower : Parser s Char

Parse any lowercase character.

parse lower "a" == Ok 'a'


parse lower "A" == Err [ "expected a lowercase character" ]
upper : Parser s Char

Parse any uppercase character.

parse upper "A" == Ok 'A'


parse upper "a" == Err [ "expected an uppercase character" ]
digit : Parser s Char

Parse any base 10 digit.

parse digit "0" == Ok '0'


parse digit "9" == Ok '9'


parse digit "a" == Err [ "expected a digit" ]
octDigit : Parser s Char

Parse any base 8 digit.

parse octDigit "0" == Ok '0'


parse octDigit "7" == Ok '7'


parse octDigit "8" == Err [ "expected an octal digit" ]
hexDigit : Parser s Char

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" ]
alpha : Parser s Char

Parse any alphabetic character.

parse alpha "a" == Ok 'a'


parse alpha "A" == Ok 'A'


parse alpha "0" == Err [ "expected an alphabetic character" ]
alphaNum : Parser s Char

Parse any alphanumeric character.

parse alphaNum "a" == Ok 'a'


parse alphaNum "A" == Ok 'A'


parse alphaNum "0" == Ok '0'


parse alphaNum "-" == Err [ "expected an alphanumeric character" ]