andre-dietrich/parser-combinators/5.0.1

NOTE: the latest version is 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'"]


-- 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
--> 42
anyChar : Parser s Char

Parse any character.

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


parse anyChar "" ==
-- Err ["expected any character"]
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 "\u{000D}" == Ok '\n'


parse eol "a" == Err [ "expected an end of line character" ]
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" ]