module Bookhound.Parsers.Char where

import Bookhound.ParserCombinators (IsMatch (..), (<|>))

import           Bookhound.Parser (Parser)
import qualified Bookhound.Parser as Parser


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

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

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

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

letter :: Parser Char
letter :: Parser Char
letter = Parser Char
upper 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 forall a. Parser a -> Parser a -> Parser a
<|> Parser Char
digit



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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