{-# LANGUAGE PostfixOperators #-} module Parsers.String where import Parser (Parser) import ParserCombinators (IsMatch(..), (|*), (|+), (|?), (<|>), (>>>), within, withinBoth) import Parsers.Char string :: Parser String string :: Parser String string = (Parser Char char Parser Char -> Parser String forall a. Parser a -> Parser [a] |*) word :: Parser String word :: Parser String word = (Parser Char -> Parser Char forall a. IsMatch a => Parser a -> Parser a inverse Parser Char whiteSpace Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) digits :: Parser String digits :: Parser String digits = (Parser Char digit Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) uppers :: Parser String uppers :: Parser String uppers = (Parser Char upper Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) lowers :: Parser String lowers :: Parser String lowers = (Parser Char lower Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) letters :: Parser String letters :: Parser String letters = (Parser Char letter Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) alphas :: Parser String alphas :: Parser String alphas = (Parser Char alpha Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) alphaNums :: Parser String alphaNums :: Parser String alphaNums = (Parser Char alphaNum Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) spaces :: Parser String spaces :: Parser String spaces = (Parser Char space Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) tabs :: Parser String tabs :: Parser String tabs = (Parser Char tab Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) newLines :: Parser String newLines :: Parser String newLines = (Parser Char newLine Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) spacesOrTabs :: Parser String spacesOrTabs :: Parser String spacesOrTabs = (Parser Char spaceOrTab Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) spacing :: Parser String spacing :: Parser String spacing = (Parser Char whiteSpace Parser Char -> Parser String forall a. Parser a -> Parser [a] |+) blankLine :: Parser String blankLine :: Parser String blankLine = (Parser String spacesOrTabs Parser String -> Parser (Maybe String) forall a. Parser a -> Parser (Maybe a) |?) Parser (Maybe String) -> Parser Char -> Parser String forall a b. (ToString a, ToString b) => Parser a -> Parser b -> Parser String >>> Parser Char newLine blankLines :: Parser String blankLines :: Parser String blankLines = [String] -> String forall a. Monoid a => [a] -> a mconcat ([String] -> String) -> Parser [String] -> Parser String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Parser String blankLine Parser String -> Parser [String] forall a. Parser a -> Parser [a] |+) withinQuotes :: Parser b -> Parser b withinQuotes :: Parser b -> Parser b withinQuotes = Parser Char -> Parser b -> Parser b forall a b. Parser a -> Parser b -> Parser b within Parser Char quote withinDoubleQuotes :: Parser b -> Parser b withinDoubleQuotes :: Parser b -> Parser b withinDoubleQuotes = Parser Char -> Parser b -> Parser b forall a b. Parser a -> Parser b -> Parser b within Parser Char doubleQuote withinParens :: Parser b -> Parser b withinParens :: Parser b -> Parser b withinParens = Parser Char -> Parser Char -> Parser b -> Parser b forall a b c. Parser a -> Parser b -> Parser c -> Parser c withinBoth Parser Char openParens Parser Char closeParens withinSquareBrackets :: Parser b -> Parser b withinSquareBrackets :: Parser b -> Parser b withinSquareBrackets = Parser Char -> Parser Char -> Parser b -> Parser b forall a b c. Parser a -> Parser b -> Parser c -> Parser c withinBoth Parser Char openSquare Parser Char closeSquare withinCurlyBrackets :: Parser b -> Parser b withinCurlyBrackets :: Parser b -> Parser b withinCurlyBrackets = Parser Char -> Parser Char -> Parser b -> Parser b forall a b c. Parser a -> Parser b -> Parser c -> Parser c withinBoth Parser Char openCurly Parser Char closeCurly withinAngleBrackets :: Parser b -> Parser b withinAngleBrackets :: Parser b -> Parser b withinAngleBrackets = Parser Char -> Parser Char -> Parser b -> Parser b forall a b c. Parser a -> Parser b -> Parser c -> Parser c withinBoth Parser Char openAngle Parser Char closeAngle