megaparsec-9.5.0: Monadic parser combinators

Copyright | © 2015–present Megaparsec contributors
License | FreeBSD
Maintainer | Mark Karpov <markkarpov92@gmail.com>
Stability | experimental
Portability | portable
Safe Haskell | Safe
Language | Haskell2010

Text.Megaparsec.Error

Contents

- Parse error type
- Pretty-printing

Description

Parse errors. The current version of Megaparsec supports typed errors instead of `String`-based ones. This gives a lot of flexibility in describing what exactly went wrong as well as a way to return arbitrary data in case of failure.

You probably do not want to import this module directly because Text.Megaparsec re-exports it anyway.

Synopsis

- data ErrorItem t
  - = Tokens (NonEmpty t)
  - | Label (NonEmpty Char)
  - | EndOfInput
- data ErrorFancy e
  - = ErrorFail String
  - | ErrorIndentation Ordering Pos Pos
  - | ErrorCustom e
- data ParseError s e
  - = TrivialError Int (Maybe (ErrorItem (Token s))) (Set (ErrorItem (Token s)))
  - | FancyError Int (Set (ErrorFancy e))
- mapParseError :: Ord e' => (e -> e') -> ParseError s e -> ParseError s e'
- errorOffset :: ParseError s e -> Int
- setErrorOffset :: Int -> ParseError s e -> ParseError s e
- data ParseErrorBundle s e = ParseErrorBundle {
  - bundleErrors :: NonEmpty (ParseError s e)
  - bundlePosState :: PosState s
  }
- attachSourcePos :: (Traversable t, TraversableStream s) => (a -> Int) -> t a -> PosState s -> (t (a, SourcePos), PosState s)
- class Ord a => ShowErrorComponent a where
  - showErrorComponent :: a -> String
  - errorComponentLen :: a -> Int
- errorBundlePretty :: forall s e. (VisualStream s, TraversableStream s, ShowErrorComponent e) => ParseErrorBundle s e -> String
- parseErrorPretty :: (VisualStream s, ShowErrorComponent e) => ParseError s e -> String
- parseErrorTextPretty :: forall s e. (VisualStream s, ShowErrorComponent e) => ParseError s e -> String
- showErrorItem :: VisualStream s => Proxy s -> ErrorItem (Token s) -> String

# Parse error type

data ErrorItem t Source #

A data type that is used to represent “unexpected/expected” items in `ParseError`. It is parametrized over the token type `t`.

Since: 5.0.0

Constructors

Tokens (NonEmpty t) | Non-empty stream of tokens
Label (NonEmpty Char) | Label (cannot be empty)
EndOfInput | End of input

#### Instances

Instances details

Functor ErrorItem Source # |
Instance details Defined in Text.Megaparsec.Error Methods fmap :: (a -> b) -> ErrorItem a -> ErrorItem b Source # (<$) :: a -> ErrorItem b -> ErrorItem a Source #
Data t => Data (ErrorItem t) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ErrorItem t -> c (ErrorItem t) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ErrorItem t) Source #

toConstr :: ErrorItem t -> Constr Source #

dataTypeOf :: ErrorItem t -> DataType Source #

dataCast1 :: Typeable t0 => (forall d. Data d => c (t0 d)) -> Maybe (c (ErrorItem t)) Source #

dataCast2 :: Typeable t0 => (forall d e. (Data d, Data e) => c (t0 d e)) -> Maybe (c (ErrorItem t)) Source #

gmapT :: (forall b. Data b => b -> b) -> ErrorItem t -> ErrorItem t Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ErrorItem t -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ErrorItem t -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ErrorItem t -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ErrorItem t -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ErrorItem t -> m (ErrorItem t) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorItem t -> m (ErrorItem t) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorItem t -> m (ErrorItem t) Source #

Generic (ErrorItem t) Source # |
Instance details Defined in Text.Megaparsec.Error Associated Types type Rep (ErrorItem t) :: Type -> Type Source # Methods from :: ErrorItem t -> Rep (ErrorItem t) x Source # to :: Rep (ErrorItem t) x -> ErrorItem t Source #
Read t => Read (ErrorItem t) Source # |
Instance details Defined in Text.Megaparsec.Error Methods readsPrec :: Int -> ReadS (ErrorItem t) Source # readList :: ReadS [ErrorItem t] Source # readPrec :: ReadPrec (ErrorItem t) Source # readListPrec :: ReadPrec [ErrorItem t] Source #
Show t => Show (ErrorItem t) Source # |
Instance details Defined in Text.Megaparsec.Error Methods showsPrec :: Int -> ErrorItem t -> ShowS Source # show :: ErrorItem t -> String Source # showList :: [ErrorItem t] -> ShowS Source #
NFData t => NFData (ErrorItem t) Source # |
Instance details Defined in Text.Megaparsec.Error Methods rnf :: ErrorItem t -> () Source #
Eq t => Eq (ErrorItem t) Source # |
Instance details Defined in Text.Megaparsec.Error Methods (==) :: ErrorItem t -> ErrorItem t -> Bool Source # (/=) :: ErrorItem t -> ErrorItem t -> Bool Source #
Ord t => Ord (ErrorItem t) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

compare :: ErrorItem t -> ErrorItem t -> Ordering Source #

(<) :: ErrorItem t -> ErrorItem t -> Bool Source #

(<=) :: ErrorItem t -> ErrorItem t -> Bool Source #

(>) :: ErrorItem t -> ErrorItem t -> Bool Source #

(>=) :: ErrorItem t -> ErrorItem t -> Bool Source #

max :: ErrorItem t -> ErrorItem t -> ErrorItem t Source #

min :: ErrorItem t -> ErrorItem t -> ErrorItem t Source #

type Rep (ErrorItem t) Source # |

Instance details

Defined in Text.Megaparsec.Error

type Rep (ErrorItem t) = D1 ('MetaData "ErrorItem" "Text.Megaparsec.Error" "megaparsec-9.5.0-1Fg8UTe6FifCT824Taw5r5" 'False) (C1 ('MetaCons "Tokens" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty t))) :+: (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty Char))) :+: C1 ('MetaCons "EndOfInput" 'PrefixI 'False) (U1 :: Type -> Type)))

data ErrorFancy e Source #

Additional error data, extendable by user. When no custom data is necessary, the type is typically indexed by `Void` to “cancel” the `ErrorCustom` constructor.

Since: 6.0.0

Constructors

ErrorFail String | `fail` has been used in parser monad
ErrorIndentation Ordering Pos Pos | Incorrect indentation error: desired ordering between reference level and actual level, reference indentation level, actual indentation level
ErrorCustom e | Custom error data

#### Instances

Instances details

Functor ErrorFancy Source # |
Instance details Defined in Text.Megaparsec.Error Methods fmap :: (a -> b) -> ErrorFancy a -> ErrorFancy b Source # (<$) :: a -> ErrorFancy b -> ErrorFancy a Source #
Data e => Data (ErrorFancy e) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ErrorFancy e -> c (ErrorFancy e) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ErrorFancy e) Source #

toConstr :: ErrorFancy e -> Constr Source #

dataTypeOf :: ErrorFancy e -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ErrorFancy e)) Source #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (ErrorFancy e)) Source #

gmapT :: (forall b. Data b => b -> b) -> ErrorFancy e -> ErrorFancy e Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ErrorFancy e -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ErrorFancy e -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ErrorFancy e -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ErrorFancy e -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ErrorFancy e -> m (ErrorFancy e) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorFancy e -> m (ErrorFancy e) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ErrorFancy e -> m (ErrorFancy e) Source #

Generic (ErrorFancy e) Source # |
Instance details Defined in Text.Megaparsec.Error Associated Types type Rep (ErrorFancy e) :: Type -> Type Source # Methods from :: ErrorFancy e -> Rep (ErrorFancy e) x Source # to :: Rep (ErrorFancy e) x -> ErrorFancy e Source #
Read e => Read (ErrorFancy e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods readsPrec :: Int -> ReadS (ErrorFancy e) Source # readList :: ReadS [ErrorFancy e] Source # readPrec :: ReadPrec (ErrorFancy e) Source # readListPrec :: ReadPrec [ErrorFancy e] Source #
Show e => Show (ErrorFancy e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods showsPrec :: Int -> ErrorFancy e -> ShowS Source # show :: ErrorFancy e -> String Source # showList :: [ErrorFancy e] -> ShowS Source #
NFData a => NFData (ErrorFancy a) Source # |
Instance details Defined in Text.Megaparsec.Error Methods rnf :: ErrorFancy a -> () Source #
Eq e => Eq (ErrorFancy e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods (==) :: ErrorFancy e -> ErrorFancy e -> Bool Source # (/=) :: ErrorFancy e -> ErrorFancy e -> Bool Source #
Ord e => Ord (ErrorFancy e) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

compare :: ErrorFancy e -> ErrorFancy e -> Ordering Source #

(<) :: ErrorFancy e -> ErrorFancy e -> Bool Source #

(<=) :: ErrorFancy e -> ErrorFancy e -> Bool Source #

(>) :: ErrorFancy e -> ErrorFancy e -> Bool Source #

(>=) :: ErrorFancy e -> ErrorFancy e -> Bool Source #

max :: ErrorFancy e -> ErrorFancy e -> ErrorFancy e Source #

min :: ErrorFancy e -> ErrorFancy e -> ErrorFancy e Source #

type Rep (ErrorFancy e) Source # |

Instance details

Defined in Text.Megaparsec.Error

type Rep (ErrorFancy e) = D1 ('MetaData "ErrorFancy" "Text.Megaparsec.Error" "megaparsec-9.5.0-1Fg8UTe6FifCT824Taw5r5" 'False) (C1 ('MetaCons "ErrorFail" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons "ErrorIndentation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ordering) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pos) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pos))) :+: C1 ('MetaCons "ErrorCustom" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 e))))

data ParseError s e Source #

``ParseError` s e` represents a parse error parametrized over the stream type `s` and the custom data `e`.

`Semigroup` and `Monoid` instances of the data type allow us to merge parse errors from different branches of parsing. When merging two `ParseError`s, the longest match is preferred; if positions are the same, custom data sets and collections of message items are combined. Note that fancy errors take precedence over trivial errors in merging.

Since: 7.0.0

Constructors

TrivialError Int (Maybe (ErrorItem (Token s))) (Set (ErrorItem (Token s))) | Trivial errors, generated by the Megaparsec's machinery. The data constructor includes the offset of error, unexpected token (if any), and expected tokens. Type of the first argument was changed in the version 7.0.0.
FancyError Int (Set (ErrorFancy e)) | Fancy, custom errors. Type of the first argument was changed in the version 7.0.0.

#### Instances

Instances details

(Data s, Data (Token s), Ord (Token s), Data e, Ord e) => Data (ParseError s e) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParseError s e -> c (ParseError s e) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ParseError s e) Source #

toConstr :: ParseError s e -> Constr Source #

dataTypeOf :: ParseError s e -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ParseError s e)) Source #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (ParseError s e)) Source #

gmapT :: (forall b. Data b => b -> b) -> ParseError s e -> ParseError s e Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseError s e -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseError s e -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ParseError s e -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseError s e -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseError s e -> m (ParseError s e) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseError s e -> m (ParseError s e) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseError s e -> m (ParseError s e) Source #

(Stream s, Ord e) => Monoid (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods mempty :: ParseError s e Source # mappend :: ParseError s e -> ParseError s e -> ParseError s e Source # mconcat :: [ParseError s e] -> ParseError s e Source #
(Stream s, Ord e) => Semigroup (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods (<>) :: ParseError s e -> ParseError s e -> ParseError s e Source # sconcat :: NonEmpty (ParseError s e) -> ParseError s e Source # stimes :: Integral b => b -> ParseError s e -> ParseError s e Source #
(Show s, Show (Token s), Show e, ShowErrorComponent e, VisualStream s, Typeable s, Typeable e) => Exception (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods toException :: ParseError s e -> SomeException Source # fromException :: SomeException -> Maybe (ParseError s e) Source # displayException :: ParseError s e -> String Source #
Generic (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Associated Types type Rep (ParseError s e) :: Type -> Type Source # Methods from :: ParseError s e -> Rep (ParseError s e) x Source # to :: Rep (ParseError s e) x -> ParseError s e Source #
(Show (Token s), Show e) => Show (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods showsPrec :: Int -> ParseError s e -> ShowS Source # show :: ParseError s e -> String Source # showList :: [ParseError s e] -> ShowS Source #
(NFData (Token s), NFData e) => NFData (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods rnf :: ParseError s e -> () Source #
(Eq (Token s), Eq e) => Eq (ParseError s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods (==) :: ParseError s e -> ParseError s e -> Bool Source # (/=) :: ParseError s e -> ParseError s e -> Bool Source #
type Rep (ParseError s e) Source # |

Instance details

Defined in Text.Megaparsec.Error

type Rep (ParseError s e) = D1 ('MetaData "ParseError" "Text.Megaparsec.Error" "megaparsec-9.5.0-1Fg8UTe6FifCT824Taw5r5" 'False) (C1 ('MetaCons "TrivialError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ErrorItem (Token s)))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (ErrorItem (Token s)))))) :+: C1 ('MetaCons "FancyError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (ErrorFancy e)))))

mapParseError :: Ord e' => (e -> e') -> ParseError s e -> ParseError s e' Source #

Modify the custom data component in a parse error. This could be done via `fmap` if not for the `Ord` constraint.

Since: 7.0.0

errorOffset :: ParseError s e -> Int Source #

Get the offset of a `ParseError`.

Since: 7.0.0

setErrorOffset :: Int -> ParseError s e -> ParseError s e Source #

Set the offset of a `ParseError`.

Since: 8.0.0

data ParseErrorBundle s e Source #

A non-empty collection of `ParseError`s equipped with `PosState` that allows us to pretty-print the errors efficiently and correctly.

Since: 7.0.0

Constructors

ParseErrorBundle |

Fields

- bundleErrors :: NonEmpty (ParseError s e)

  A collection of `ParseError`s that is sorted by parse error offsets

- bundlePosState :: PosState s

  The state that is used for line/column calculation

#### Instances

Instances details

(Data s, Data (Token s), Ord (Token s), Data e, Ord e) => Data (ParseErrorBundle s e) Source # |

Instance details

Defined in Text.Megaparsec.Error

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParseErrorBundle s e -> c (ParseErrorBundle s e) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ParseErrorBundle s e) Source #

toConstr :: ParseErrorBundle s e -> Constr Source #

dataTypeOf :: ParseErrorBundle s e -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ParseErrorBundle s e)) Source #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (ParseErrorBundle s e)) Source #

gmapT :: (forall b. Data b => b -> b) -> ParseErrorBundle s e -> ParseErrorBundle s e Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseErrorBundle s e -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseErrorBundle s e -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ParseErrorBundle s e -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseErrorBundle s e -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseErrorBundle s e -> m (ParseErrorBundle s e) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseErrorBundle s e -> m (ParseErrorBundle s e) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseErrorBundle s e -> m (ParseErrorBundle s e) Source #

(Show s, Show (Token s), Show e, ShowErrorComponent e, VisualStream s, TraversableStream s, Typeable s, Typeable e) => Exception (ParseErrorBundle s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods toException :: ParseErrorBundle s e -> SomeException Source # fromException :: SomeException -> Maybe (ParseErrorBundle s e) Source # displayException :: ParseErrorBundle s e -> String Source #
Generic (ParseErrorBundle s e) Source # |
Instance details Defined in Text.Megaparsec.Error Associated Types type Rep (ParseErrorBundle s e) :: Type -> Type Source # Methods from :: ParseErrorBundle s e -> Rep (ParseErrorBundle s e) x Source # to :: Rep (ParseErrorBundle s e) x -> ParseErrorBundle s e Source #
(Show s, Show (Token s), Show e) => Show (ParseErrorBundle s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods showsPrec :: Int -> ParseErrorBundle s e -> ShowS Source # show :: ParseErrorBundle s e -> String Source # showList :: [ParseErrorBundle s e] -> ShowS Source #
(NFData s, NFData (Token s), NFData e) => NFData (ParseErrorBundle s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods rnf :: ParseErrorBundle s e -> () Source #
(Eq s, Eq (Token s), Eq e) => Eq (ParseErrorBundle s e) Source # |
Instance details Defined in Text.Megaparsec.Error Methods (==) :: ParseErrorBundle s e -> ParseErrorBundle s e -> Bool Source # (/=) :: ParseErrorBundle s e -> ParseErrorBundle s e -> Bool Source #
type Rep (ParseErrorBundle s e) Source # |

Instance details

Defined in Text.Megaparsec.Error

type Rep (ParseErrorBundle s e) = D1 ('MetaData "ParseErrorBundle" "Text.Megaparsec.Error" "megaparsec-9.5.0-1Fg8UTe6FifCT824Taw5r5" 'False) (C1 ('MetaCons "ParseErrorBundle" 'PrefixI 'True) (S1 ('MetaSel ('Just "bundleErrors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (ParseError s e))) :*: S1 ('MetaSel ('Just "bundlePosState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PosState s))))

attachSourcePos Source #

Arguments

:: (Traversable t, TraversableStream s) |
=> (a -> Int) | How to project offset from an item (e.g. `errorOffset`)
-> t a | The collection of items
-> PosState s | Initial `PosState`
-> (t (a, SourcePos), PosState s) | The collection with `SourcePos`es added and the final `PosState`

Attach `SourcePos`es to items in a `Traversable` container given that there is a projection allowing us to get an offset per item.

Items must be in ascending order with respect to their offsets.

Since: 7.0.0

# Pretty-printing

class Ord a => ShowErrorComponent a where Source #

The type class defines how to print a custom component of `ParseError`.

Since: 5.0.0

Minimal complete definition

showErrorComponent

Methods

showErrorComponent :: a -> String Source #

Pretty-print a component of `ParseError`.

errorComponentLen :: a -> Int Source #

Length of the error component in characters, used for highlighting of parse errors in input string.

Since: 7.0.0

#### Instances

Instances details

ShowErrorComponent Void Source # |
Instance details Defined in Text.Megaparsec.Error Methods showErrorComponent :: Void -> String Source # errorComponentLen :: Void -> Int Source #

errorBundlePretty Source #

Arguments

:: forall s e. (VisualStream s, TraversableStream s, ShowErrorComponent e) |
=> ParseErrorBundle s e | Parse error bundle to display
-> String | Textual rendition of the bundle

Pretty-print a `ParseErrorBundle`. All `ParseError`s in the bundle will be pretty-printed in order together with the corresponding offending lines by doing a single pass over the input stream. The rendered `String` always ends with a newline.

Since: 7.0.0

parseErrorPretty Source #

Arguments

:: (VisualStream s, ShowErrorComponent e) |
=> ParseError s e | Parse error to render
-> String | Result of rendering

Pretty-print a `ParseError`. The rendered `String` always ends with a newline.

Since: 5.0.0

parseErrorTextPretty Source #

Arguments

:: forall s e. (VisualStream s, ShowErrorComponent e) |
=> ParseError s e | Parse error to render
-> String | Result of rendering

Pretty-print a textual part of a `ParseError`, that is, everything except for its position. The rendered `String` always ends with a newline.

Since: 5.1.0

showErrorItem :: VisualStream s => Proxy s -> ErrorItem (Token s) -> String Source #

Pretty-print an `ErrorItem`.

Since: 9.4.0