Match a specific character.
Modulestreamly-core-0.3.1Haskell2010
Streamly.Internal.Unicode.Parser
To parse a text input, use the decode routines from Streamly.Unicode.Stream module to convert an input byte stream to a Unicode Char stream and then use these parsers on the Char stream.
Synopsis
- value char
- value charIgnoreCase
- value string
- value stringIgnoreCase
- value dropSpace
- value dropSpace1
- value alpha
- value alphaNum
- value letter
- value ascii
- value asciiLower
- value asciiUpper
- value latin1
- value lower
- value upper
- value mark
- value printable
- value punctuation
- value separator
- value space
- value symbol
- value digit
- value octDigit
- value hexDigit
- value numeric
- value signed
- value number
- value doubleParser
- value double
- value decimal
- value hexadecimal
- value mkDouble
- Packagestreamly-core-0.3.1
- Exports32
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceParser.hs
Setup
To execute the code examples provided in this module in ghci, please run the following commands first.
:mimport qualified Streamly.Data.Stream as Streamimport qualified Streamly.Unicode.Parser as Unicode
For APIs that have not been released yet.
import qualified Streamly.Internal.Data.Stream as Stream (parsePos)import qualified Streamly.Internal.Unicode.Parser as Unicode (number, mkDouble)
Generic
Match a specific character ignoring case.
Sequences
Match the input with the supplied string and return it if successful.
Match the input with the supplied string and return it if successful.
Drop zero or more white space characters.
Drop one or more white space characters.
Classes
Match any character that satisfies isAlpha
Match any character that satisfies isAlphaNum
Match any character that satisfies isLetter
Match any character that satisfies isAscii
Match any character that satisfies isAsciiLower
Match any character that satisfies isAsciiUpper
Match any character that satisfies isLatin1
Match any character that satisfies isLower
Match any character that satisfies isUpper
Match any character that satisfies isMark
Match any character that satisfies isPrint
Match any character that satisfies isPunctuation
Match any character that satisfies isSeparator
Match any character that satisfies isSpace
Match any character that satisfies isSymbol
Match any character that satisfies isDigit
Match any character that satisfies isOctDigit
Match any character that satisfies isHexDigit
Match any character that satisfies isNumber
Numeric
Allow an optional leading '+' or '-' sign character before any
parser.
A fast, custom parser for double precision flaoting point numbers. Returns (mantissa, exponent) tuple. This is much faster than number because it assumes the number will fit in a Double type and uses Int representation to store mantissa.
Number larger than Double may overflow. Int overflow is not checked in the exponent.
Parse a decimal Double value. This parser accepts an optional sign (+ or -) followed by at least one decimal digit. Decimal digits are optionally followed by a decimal point and at least one decimal digit after the point. This parser accepts the maximal valid input as long as it gives a valid number. Specifcally a trailing decimal point is allowed but not consumed. This function does not accept "NaN" or "Infinity" string representations of double values.
Definition:
double = uncurry Unicode.mkDouble <$> Unicode.numberExamples:
p = Stream.parsePos Unicode.double . Stream.fromListp "-1.23e-123"Right (-1.23e-123)
Trailing input examples:
p "1."Right 1.0
p "1.2.3"Right 1.2
p "1e"Right 1.0
p "1e2.3"Right 100.0
p "1+2"Right 1.0
Error cases:
p ""Left (ParseErrorPos 0 "number: expecting sign or decimal digit, got end of input")
p ".1"Left (ParseErrorPos 1 "number: expecting sign or decimal digit, got '.'")
p "+"Left (ParseErrorPos 1 "number: expecting decimal digit, got end of input")
Parse and decode an unsigned integral decimal number.
Parse and decode an unsigned integral hexadecimal number. The hex digits
'a' through 'f' may be upper or lower case.
Note: This parser does not accept a leading "0x" string.
Utilities
mkDouble mantissa exponent converts a mantissa and exponent to a
Double value equivalent to mantissa * 10^exponent. It does not check for
overflow, powers more than 308 will overflow.