module DDC.Data.Token
( Token(..)
, takeParsecSourcePos
, tokenLine
, tokenColumn)
where
import DDC.Data.SourcePos
import qualified Text.Parsec.Pos as P
data Token t
= Token
{ tokenTok :: t
, tokenSourcePos :: SourcePos }
deriving (Eq, Show)
takeParsecSourcePos :: Token k -> P.SourcePos
takeParsecSourcePos (Token _ sp)
= case sp of
SourcePos source l c
-> P.newPos source l c
tokenLine :: Token t -> Int
tokenLine (Token _ (SourcePos _ l _)) = l
tokenColumn :: Token t -> Int
tokenColumn (Token _ (SourcePos _ _ c)) = c