| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Text.Megaparsec.Compat
Description
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"
Arguments
| :: 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 Methods (==) :: CustomError e -> CustomError e -> Bool # (/=) :: CustomError e -> CustomError e -> Bool # | |
| Ord e => Ord (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat Methods 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 Methods showsPrec :: Int -> CustomError e -> ShowS # show :: CustomError e -> String # showList :: [CustomError e] -> ShowS # | |
| ShowErrorComponent e => ShowErrorComponent (CustomError e) Source # | |
Defined in Text.Megaparsec.Compat Methods 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.