----------------------------------------------------------------------------- -- | -- Module : Text.ParserCombinators.Parsec.Char -- Copyright : (c) Daan Leijen 1999-2001 -- License : BSD-style (see the file libraries/parsec/LICENSE) -- -- Maintainer : daan@cs.uu.nl -- Stability : provisional -- Portability : portable -- -- Commonly used character parsers. -- -----------------------------------------------------------------------------
module Text.ParserCombinators.Parsec.Char ( CharParser , spaces, space , newline, tab , upper, lower, alphaNum, letter , digit, hexDigit, octDigit , char, string , anyChar, oneOf, noneOf , satisfy ) where import Prelude import Data.Char import Text.ParserCombinators.Parsec.Pos( updatePosChar, updatePosString ) import Text.ParserCombinators.Parsec.Prim ----------------------------------------------------------- -- Type of character parsers ----------------------------------------------------------- type CharParser st a = GenParser Char st a ----------------------------------------------------------- -- Character parsers ----------------------------------------------------------- oneOf, noneOf :: [Char] -> CharParser st Char oneOf cs = satisfy (\c -> elem c cs) noneOf cs = satisfy (\c -> not (elem c cs)) spaces :: CharParser st () spaces = skipMany space <?> "white space" space, newline, tab :: CharParser st Char space = satisfy (isSpace) <?> "space" newline = char '\n' <?> "new-line" tab = char '\t' <?> "tab" upper, lower, alphaNum, letter, digit, hexDigit, octDigit :: CharParser st Char upper = satisfy (isUpper) <?> "uppercase letter" lower = satisfy (isLower) <?> "lowercase letter" alphaNum = satisfy (isAlphaNum) <?> "letter or digit" letter = satisfy (isAlpha) <?> "letter" digit = satisfy (isDigit) <?> "digit" hexDigit = satisfy (isHexDigit) <?> "hexadecimal digit" octDigit = satisfy (isOctDigit) <?> "octal digit" char :: Char -> CharParser st Char char c = satisfy (==c) <?> show [c] anyChar :: CharParser st Char anyChar = satisfy (const True) ----------------------------------------------------------- -- Primitive character parsers ----------------------------------------------------------- satisfy :: (Char -> Bool) -> CharParser st Char satisfy f = tokenPrim (\c -> show [c]) (\pos c cs -> updatePosChar pos c) (\c -> if f c then Just c else Nothing) string :: String -> CharParser st String string s = tokens show updatePosString s
(HTML for this module was generated on 2013-11-05. About the conversion tool.)