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 Source # | |||||
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 Source # | |||||
Generic Pos Source # | |||||
Defined in Text.Megaparsec.Pos Associated Types
| |||||
Read Pos Source # | |||||
Defined in Text.Megaparsec.Pos | |||||
Show Pos Source # | |||||
NFData Pos Source # | |||||
Defined in Text.Megaparsec.Pos | |||||
Eq Pos Source # | |||||
Ord Pos Source # | |||||
type Rep Pos Source # | |||||
Defined in Text.Megaparsec.Pos type Rep Pos = D1 ('MetaData "Pos" "Text.Megaparsec.Pos" "megaparsec-9.6.1-BUu0XskOUIN11T3kjPZyaw" '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 Source #
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 Source #
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 Source # | |||||
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 Source # | |||||
Defined in Text.Megaparsec.Pos Methods toException :: InvalidPosException -> SomeException fromException :: SomeException -> Maybe InvalidPosException displayException :: InvalidPosException -> String | |||||
Generic InvalidPosException Source # | |||||
Defined in Text.Megaparsec.Pos Associated Types
Methods from :: InvalidPosException -> Rep InvalidPosException x to :: Rep InvalidPosException x -> InvalidPosException | |||||
Show InvalidPosException Source # | |||||
Defined in Text.Megaparsec.Pos Methods showsPrec :: Int -> InvalidPosException -> ShowS show :: InvalidPosException -> String showList :: [InvalidPosException] -> ShowS | |||||
NFData InvalidPosException Source # | |||||
Defined in Text.Megaparsec.Pos Methods rnf :: InvalidPosException -> () | |||||
Eq InvalidPosException Source # | |||||
Defined in Text.Megaparsec.Pos Methods (==) :: InvalidPosException -> InvalidPosException -> Bool (/=) :: InvalidPosException -> InvalidPosException -> Bool | |||||
type Rep InvalidPosException Source # | |||||
Defined in Text.Megaparsec.Pos type Rep InvalidPosException = D1 ('MetaData "InvalidPosException" "Text.Megaparsec.Pos" "megaparsec-9.6.1-BUu0XskOUIN11T3kjPZyaw" '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 Source # | |||||
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 Source # | |||||
Defined in Text.Megaparsec.Pos Associated Types
| |||||
Read SourcePos Source # | |||||
Defined in Text.Megaparsec.Pos | |||||
Show SourcePos Source # | |||||
NFData SourcePos Source # | |||||
Defined in Text.Megaparsec.Pos | |||||
Eq SourcePos Source # | |||||
Ord SourcePos Source # | |||||
Defined in Text.Megaparsec.Pos | |||||
type Rep SourcePos Source # | |||||
Defined in Text.Megaparsec.Pos type Rep SourcePos = D1 ('MetaData "SourcePos" "Text.Megaparsec.Pos" "megaparsec-9.6.1-BUu0XskOUIN11T3kjPZyaw" '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 Source #
Construct initial position (line 1, column 1) given name of source file.
sourcePosPretty :: SourcePos -> String Source #
Pretty-print a SourcePos
.
Since: 5.0.0