Text.Parsing.Parser.String
- Package
- purescript-parsing
- Repository
- purescript-contrib/purescript-parsing
Primitive parsers for working with an input stream of type String.
All of these primitive parsers will consume their input when they succeed.
All of these primitive parsers will consume no input when they fail.
The behavior of these primitive parsers is based on the behavior of the
Data.String module in the strings package.
In most JavaScript runtime environments, the String
is little-endian UTF-16.
The primitive parsers which return Char will only succeed when the character
being parsed is a code point in the
Basic Multilingual Plane
(the “BMP”). These parsers can be convenient because of the good support
that PureScript has for writing Char literals like 'あ', 'β', 'C'.
The other primitive parsers, which return CodePoint and String types,
can parse the full Unicode character set. All of the primitive parsers
in this module can be used together.
#anyCodePoint Source
anyCodePoint :: forall m. Monad m => ParserT String m CodePointMatch any Unicode character. Always succeeds.
#whiteSpace Source
whiteSpace :: forall m. Monad m => ParserT String m StringMatch zero or more whitespace characters satisfying
Data.CodePoint.Unicode.isSpace. Always succeeds.
#skipSpaces Source
skipSpaces :: forall m. Monad m => ParserT String m UnitSkip whitespace characters and throw them away. Always succeeds.
#match Source
match :: forall m a. Monad m => ParserT String m a -> ParserT String m (Tuple String a)Combinator which returns both the result of a parse and the slice of the input that was consumed while it was being parsed.
Because Strings are not Char arrays in PureScript, many and some
on Char parsers need to
be used with Data.String.CodeUnits.fromCharArray to
construct a String.
fromCharArray <$> Data.Array.many (char 'x')
It’s more efficient to achieve the same result by using this match combinator
instead of fromCharArray.
fst <$> match (Combinators.skipMany (char 'x'))