Copyright | © 2015–present Megaparsec contributors |
---|---|
License | FreeBSD |
Maintainer | Mark Karpov <markkarpov92@gmail.com> |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Text.Megaparsec.Pos
Contents
Description
Textual source position. The position includes name of file, line number, and column number.
You probably do not want to import this module directly because Text.Megaparsec re-exports it anyway.
Synopsis
- data Pos
- mkPos :: Int -> Pos
- unPos :: Pos -> Int
- pos1 :: Pos
- defaultTabWidth :: Pos
- newtype InvalidPosException = InvalidPosException Int
- data SourcePos = SourcePos {
- sourceName :: FilePath
- sourceLine :: !Pos
- sourceColumn :: !Pos
- initialPos :: FilePath -> SourcePos
- sourcePosPretty :: SourcePos -> String
Abstract position
Pos
is the type for positive integers. This is used to represent line
number, column number, and similar things like indentation level.
Semigroup
instance can be used to safely and efficiently add Pos
es
together.
Since: 5.0.0
Instances
Data Pos # | |
Defined in Text.Megaparsec.Pos Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pos -> c Pos gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pos dataTypeOf :: Pos -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pos) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pos) gmapT :: (forall b. Data b => b -> b) -> Pos -> Pos gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pos -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pos -> r gmapQ :: (forall d. Data d => d -> u) -> Pos -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Pos -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pos -> m Pos gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pos -> m Pos gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pos -> m Pos | |
Semigroup Pos # | |
Generic Pos # | |
Read Pos # | |
Defined in Text.Megaparsec.Pos | |
Show Pos # | |
NFData Pos # | |
Defined in Text.Megaparsec.Pos | |
Eq Pos # | |
Ord Pos # | |
type Rep Pos # | |
Defined in Text.Megaparsec.Pos type Rep Pos = D1 ('MetaData "Pos" "Text.Megaparsec.Pos" "megaparsec-9.6.0-6cDk6wja3Qf4Glh1AI6lFI" 'True) (C1 ('MetaCons "Pos" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) |
Construction of Pos
from Int
. The function throws
InvalidPosException
when given a non-positive argument.
Since: 6.0.0
defaultTabWidth :: Pos #
Value of tab width used by default. Always prefer this constant when you want to refer to the default tab width because actual value may change in future.
Currently:
defaultTabWidth = mkPos 8
Since: 5.0.0
newtype InvalidPosException #
The exception is thrown by mkPos
when its argument is not a positive
number.
Since: 5.0.0
Constructors
InvalidPosException Int | Contains the actual value that was passed to |
Instances
Data InvalidPosException # | |
Defined in Text.Megaparsec.Pos Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InvalidPosException -> c InvalidPosException gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InvalidPosException toConstr :: InvalidPosException -> Constr dataTypeOf :: InvalidPosException -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InvalidPosException) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InvalidPosException) gmapT :: (forall b. Data b => b -> b) -> InvalidPosException -> InvalidPosException gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InvalidPosException -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InvalidPosException -> r gmapQ :: (forall d. Data d => d -> u) -> InvalidPosException -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> InvalidPosException -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> InvalidPosException -> m InvalidPosException gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InvalidPosException -> m InvalidPosException gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InvalidPosException -> m InvalidPosException | |
Exception InvalidPosException # | |
Defined in Text.Megaparsec.Pos Methods toException :: InvalidPosException -> SomeException fromException :: SomeException -> Maybe InvalidPosException displayException :: InvalidPosException -> String | |
Generic InvalidPosException # | |
Defined in Text.Megaparsec.Pos Associated Types type Rep InvalidPosException :: Type -> Type Methods from :: InvalidPosException -> Rep InvalidPosException x to :: Rep InvalidPosException x -> InvalidPosException | |
Show InvalidPosException # | |
Defined in Text.Megaparsec.Pos Methods showsPrec :: Int -> InvalidPosException -> ShowS show :: InvalidPosException -> String showList :: [InvalidPosException] -> ShowS | |
NFData InvalidPosException # | |
Defined in Text.Megaparsec.Pos Methods rnf :: InvalidPosException -> () | |
Eq InvalidPosException # | |
Defined in Text.Megaparsec.Pos Methods (==) :: InvalidPosException -> InvalidPosException -> Bool (/=) :: InvalidPosException -> InvalidPosException -> Bool | |
type Rep InvalidPosException # | |
Defined in Text.Megaparsec.Pos type Rep InvalidPosException = D1 ('MetaData "InvalidPosException" "Text.Megaparsec.Pos" "megaparsec-9.6.0-6cDk6wja3Qf4Glh1AI6lFI" 'True) (C1 ('MetaCons "InvalidPosException" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) |
Source position
The data type SourcePos
represents source positions. It contains the
name of the source file, a line number, and a column number. Source line
and column positions change intensively during parsing, so we need to
make them strict to avoid memory leaks.
Constructors
SourcePos | |
Fields
|
Instances
Data SourcePos # | |
Defined in Text.Megaparsec.Pos Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourcePos -> c SourcePos gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourcePos toConstr :: SourcePos -> Constr dataTypeOf :: SourcePos -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourcePos) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourcePos) gmapT :: (forall b. Data b => b -> b) -> SourcePos -> SourcePos gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourcePos -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourcePos -> r gmapQ :: (forall d. Data d => d -> u) -> SourcePos -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> SourcePos -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos | |
Generic SourcePos # | |
Read SourcePos # | |
Defined in Text.Megaparsec.Pos | |
Show SourcePos # | |
NFData SourcePos # | |
Defined in Text.Megaparsec.Pos | |
Eq SourcePos # | |
Ord SourcePos # | |
Defined in Text.Megaparsec.Pos | |
type Rep SourcePos # | |
Defined in Text.Megaparsec.Pos type Rep SourcePos = D1 ('MetaData "SourcePos" "Text.Megaparsec.Pos" "megaparsec-9.6.0-6cDk6wja3Qf4Glh1AI6lFI" 'False) (C1 ('MetaCons "SourcePos" 'PrefixI 'True) (S1 ('MetaSel ('Just "sourceName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: (S1 ('MetaSel ('Just "sourceLine") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Pos) :*: S1 ('MetaSel ('Just "sourceColumn") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Pos)))) |
initialPos :: FilePath -> SourcePos #
Construct initial position (line 1, column 1) given name of source file.
sourcePosPretty :: SourcePos -> String #
Pretty-print a SourcePos
.
Since: 5.0.0