ddc-base-0.4.2.1: DDC/Data/Token.hs
module DDC.Data.Token
( Token(..)
, takeParsecSourcePos
, tokenLine
, tokenColumn)
where
import DDC.Data.SourcePos
import qualified Text.Parsec.Pos as P
-- | Wrapper for primitive token type that gives it a source position.
data Token t
= Token
{ tokenTok :: t
, tokenSourcePos :: SourcePos }
deriving (Eq, Show)
-- | Take the parsec style source position from a token.
takeParsecSourcePos :: Token k -> P.SourcePos
takeParsecSourcePos (Token _ sp)
= case sp of
SourcePos source l c
-> P.newPos source l c
-- | Take the line number of a token.
tokenLine :: Token t -> Int
tokenLine (Token _ (SourcePos _ l _)) = l
-- | Take the column number of a token.
tokenColumn :: Token t -> Int
tokenColumn (Token _ (SourcePos _ _ c)) = c