module Parsers.Char where

import qualified Parser
import Parser (Parser)
import ParserCombinators (IsMatch(..), (<|>))


char :: Parser Char
char :: Parser Char
char = Parser Char
Parser.char

digit :: Parser Char
digit :: Parser Char
digit = [Char] -> Parser Char
forall a. IsMatch a => [a] -> Parser a
oneOf [Char
'0' .. Char
'9']

upper :: Parser Char
upper :: Parser Char
upper = [Char] -> Parser Char
forall a. IsMatch a => [a] -> Parser a
oneOf [Char
'A' .. Char
'Z']

lower :: Parser Char
lower :: Parser Char
lower = [Char] -> Parser Char
forall a. IsMatch a => [a] -> Parser a
oneOf [Char
'a' .. Char
'z']

letter :: Parser Char
letter :: Parser Char
letter = Parser Char
upper Parser Char -> Parser Char -> Parser Char
forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
lower

alpha :: Parser Char
alpha :: Parser Char
alpha = Parser Char
letter

alphaNum :: Parser Char
alphaNum :: Parser Char
alphaNum = Parser Char
alpha Parser Char -> Parser Char -> Parser Char
forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
digit



space :: Parser Char
space :: Parser Char
space = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
' '

tab :: Parser Char
tab :: Parser Char
tab = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'\t'

spaceOrTab :: Parser Char
spaceOrTab :: Parser Char
spaceOrTab = Parser Char
space Parser Char -> Parser Char -> Parser Char
forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
tab

whiteSpace :: Parser Char
whiteSpace :: Parser Char
whiteSpace = Parser Char
space Parser Char -> Parser Char -> Parser Char
forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
tab Parser Char -> Parser Char -> Parser Char
forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
newLine

newLine :: Parser Char
newLine :: Parser Char
newLine = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'\n'

comma :: Parser Char
comma :: Parser Char
comma = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
','

dot :: Parser Char
dot :: Parser Char
dot = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'.'

colon :: Parser Char
colon :: Parser Char
colon = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
':'

quote :: Parser Char
quote :: Parser Char
quote = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'\''

doubleQuote :: Parser Char
doubleQuote :: Parser Char
doubleQuote = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'"'

dash :: Parser Char
dash :: Parser Char
dash = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'-'

plus :: Parser Char
plus :: Parser Char
plus = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'+'

equal :: Parser Char
equal :: Parser Char
equal = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'='

underscore :: Parser Char
underscore :: Parser Char
underscore = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'_'

hashTag :: Parser Char
hashTag :: Parser Char
hashTag = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'#'

question :: Parser Char
question :: Parser Char
question = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'?'



openParens :: Parser Char
openParens :: Parser Char
openParens = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'('

closeParens :: Parser Char
closeParens :: Parser Char
closeParens = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
')'

openSquare :: Parser Char
openSquare :: Parser Char
openSquare = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'['

closeSquare :: Parser Char
closeSquare :: Parser Char
closeSquare = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
']'

openCurly :: Parser Char
openCurly :: Parser Char
openCurly = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'{'

closeCurly :: Parser Char
closeCurly :: Parser Char
closeCurly = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'}'

openAngle :: Parser Char
openAngle :: Parser Char
openAngle = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'<'

closeAngle :: Parser Char
closeAngle :: Parser Char
closeAngle = Char -> Parser Char
forall a. IsMatch a => a -> Parser a
is Char
'>'