Safe Haskell | None |
---|---|
Language | Haskell2010 |
Compatibility module to bridge the gap between megaparsec-5 and megaparsec-6
Import this instead of Text.Megaparsec, Text.Megaparsec.Char and Text.Megaparsec.Text
Synopsis
- string' :: (MonadParsec e s m, FoldCase (Tokens s)) => Tokens s -> m (Tokens s)
- satisfy :: MonadParsec e s m => (Token s -> Bool) -> m (Token s)
- noneOf :: (Foldable f, MonadParsec e s m) => f (Token s) -> m (Token s)
- oneOf :: (Foldable f, MonadParsec e s m) => f (Token s) -> m (Token s)
- notChar :: MonadParsec e s m => Token s -> m (Token s)
- anyChar :: MonadParsec e s m => m (Token s)
- char' :: (MonadParsec e s m, Token s ~ Char) => Token s -> m (Token s)
- char :: MonadParsec e s m => Token s -> m (Token s)
- categoryName :: GeneralCategory -> String
- charCategory :: (MonadParsec e s m, Token s ~ Char) => GeneralCategory -> m (Token s)
- latin1Char :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- asciiChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- separatorChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- symbolChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- punctuationChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- numberChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- markChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- hexDigitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- octDigitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- digitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- printChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- alphaNumChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- letterChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- lowerChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- upperChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- spaceChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- controlChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- space1 :: (MonadParsec e s m, Token s ~ Char) => m ()
- space :: (MonadParsec e s m, Token s ~ Char) => m ()
- tab :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- eol :: (MonadParsec e s m, Token s ~ Char) => m (Tokens s)
- crlf :: (MonadParsec e s m, Token s ~ Char) => m (Tokens s)
- newline :: (MonadParsec e s m, Token s ~ Char) => m (Token s)
- module Text.Megaparsec
- type Parser = Parsec Dec Text
- type Dec = Void
- string :: MonadParsec e s m => Tokens s -> m (Tokens s)
- data CustomError e
- mkCustomError :: SourcePos -> e -> ParseError t (CustomError e)
- addCustomError :: Ord e => ParseError Char (CustomError e) -> e -> ParseError Char (CustomError e)
- parseWithStart :: (Stream s, Ord e) => Parsec e s a -> SourcePos -> s -> Either (ParseError (Token s) e) a
Re-exports
string' :: (MonadParsec e s m, FoldCase (Tokens s)) => Tokens s -> m (Tokens s) #
The same as string
, but case-insensitive. On success returns string
cased as actually parsed input.
>>>
parseTest (string' "foobar") "foObAr"
"foObAr"
:: MonadParsec e s m | |
=> (Token s -> Bool) | Predicate to apply |
-> m (Token s) |
noneOf :: (Foldable f, MonadParsec e s m) => f (Token s) -> m (Token s) #
As the dual of oneOf
,
succeeds if the current character
not in the supplied list of characters noneOf
cscs
. Returns the parsed
character. Note that this parser cannot automatically generate the
“expected” component of error message, so usually you should label it
manually with label
or (<?>
).
See also: satisfy
.
Performance note: prefer satisfy
and notChar
when you can because
it's faster.
oneOf :: (Foldable f, MonadParsec e s m) => f (Token s) -> m (Token s) #
succeeds if the current character is in the supplied
collection of characters oneOf
cscs
. Returns the parsed character. Note that
this parser cannot automatically generate the “expected” component of
error message, so usually you should label it manually with label
or
(<?>
).
See also: satisfy
.
digit = oneOf ['0'..'9'] <?> "digit"
Performance note: prefer satisfy
when you can because it's faster
when you have only a couple of tokens to compare to:
quoteFast = satisfy (\x -> x == '\'' || x == '\"') quoteSlow = oneOf "'\""
notChar :: MonadParsec e s m => Token s -> m (Token s) #
Match any character but the given one. It's a good idea to attach a
label
to this parser manually.
Since: megaparsec-6.0.0
anyChar :: MonadParsec e s m => m (Token s) #
This parser succeeds for any character. Returns the parsed character.
char' :: (MonadParsec e s m, Token s ~ Char) => Token s -> m (Token s) #
The same as char
but case-insensitive. This parser returns the
actually parsed character preserving its case.
>>>
parseTest (char' 'e') "E"
'E'>>>
parseTest (char' 'e') "G"
1:1: unexpected 'G' expecting 'E' or 'e'
char :: MonadParsec e s m => Token s -> m (Token s) #
parses a single character char
cc
.
semicolon = char ';'
categoryName :: GeneralCategory -> String #
Return the human-readable name of Unicode General Category.
charCategory :: (MonadParsec e s m, Token s ~ Char) => GeneralCategory -> m (Token s) #
parses character in Unicode General Category
charCategory
catcat
, see GeneralCategory
.
latin1Char :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a character from the first 256 characters of the Unicode character set, corresponding to the ISO 8859-1 (Latin-1) character set.
asciiChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a character from the first 128 characters of the Unicode character set, corresponding to the ASCII character set.
separatorChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode space and separator characters.
symbolChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode symbol characters, including mathematical and currency symbols.
punctuationChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode punctuation character, including various kinds of connectors, brackets and quotes.
numberChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode numeric character, including digits from various scripts, Roman numerals, etc.
markChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode mark character (accents and the like), which combines with preceding characters.
hexDigitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a hexadecimal digit, i.e. between “0” and “9”, or “a” and “f”, or “A” and “F”.
octDigitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse an octal digit, i.e. between “0” and “7”.
digitChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse an ASCII digit, i.e between “0” and “9”.
printChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a printable Unicode character: letter, number, mark, punctuation, symbol or space.
alphaNumChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse an alphabetic or numeric digit Unicode characters.
Note that the numeric digits outside the ASCII range are parsed by this
parser but not by digitChar
. Such digits may be part of identifiers but
are not used by the printer and reader to represent numbers.
letterChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse an alphabetic Unicode character: lower-case, upper-case, or title-case letter, or a letter of case-less scripts/modifier letter.
lowerChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a lower-case alphabetic Unicode character.
upperChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse an upper-case or title-case alphabetic Unicode character. Title case is used by a small number of letter ligatures like the single-character form of Lj.
spaceChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a Unicode space character, and the control characters: tab, newline, carriage return, form feed, and vertical tab.
controlChar :: (MonadParsec e s m, Token s ~ Char) => m (Token s) #
Parse a control character (a non-printing character of the Latin-1 subset of Unicode).
space1 :: (MonadParsec e s m, Token s ~ Char) => m () #
space :: (MonadParsec e s m, Token s ~ Char) => m () #
crlf :: (MonadParsec e s m, Token s ~ Char) => m (Tokens s) #
Parse a carriage return character followed by a newline character. Return the sequence of characters parsed.
module Text.Megaparsec
Compatibility reimplementations
Custom error handling
data CustomError e Source #
Custom error type that mimics FancyError of megaparsec-6 but retains information about unexpected and expected tokens.
Instances
Eq e => Eq (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat (==) :: CustomError e -> CustomError e -> Bool # (/=) :: CustomError e -> CustomError e -> Bool # | |
Ord e => Ord (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat compare :: CustomError e -> CustomError e -> Ordering # (<) :: CustomError e -> CustomError e -> Bool # (<=) :: CustomError e -> CustomError e -> Bool # (>) :: CustomError e -> CustomError e -> Bool # (>=) :: CustomError e -> CustomError e -> Bool # max :: CustomError e -> CustomError e -> CustomError e # min :: CustomError e -> CustomError e -> CustomError e # | |
Show e => Show (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat showsPrec :: Int -> CustomError e -> ShowS # show :: CustomError e -> String # showList :: [CustomError e] -> ShowS # | |
ShowErrorComponent e => ShowErrorComponent (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat showErrorComponent :: CustomError e -> String # |
mkCustomError :: SourcePos -> e -> ParseError t (CustomError e) Source #
Wrap a custom error type into a ParseError
.
addCustomError :: Ord e => ParseError Char (CustomError e) -> e -> ParseError Char (CustomError e) Source #
Add a custom error to an already existing error.
This retains the original information such as expected and unexpected tokens as well as the source position.