@@ -1,5 +1,4 @@
1−{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds, PatternGuards #-}
2−{-# LANGUAGE StandaloneDeriving #-}
1+{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds, PatternGuards, OverlappingInstances, StandaloneDeriving #-}
32module Idris.ParseHelpers where
43
54import Prelude hiding (pi)
@@ -43,13 +42,19 @@ import Debug.Trace
4342type IdrisParser = StateT IState IdrisInnerParser
4443
4544newtype IdrisInnerParser a = IdrisInnerParser { runInnerParser :: Parser a }
46− deriving (Monad, Functor, MonadPlus, Applicative, Alternative, CharParsing, LookAheadParsing{-, Parsing-}, DeltaParsing, MarkParsing Delta, Monoid)
45+ deriving (Monad, Functor, MonadPlus, Applicative, Alternative, CharParsing, LookAheadParsing, DeltaParsing, MarkParsing Delta, Monoid, TokenParsing)
4746
4847deriving instance Parsing IdrisInnerParser
4948
50−instance TokenParsing IdrisInnerParser where
49+instance TokenParsing IdrisParser where
5150 someSpace = many (simpleWhiteSpace <|> singleLineComment <|> multiLineComment) *> pure ()
52−
51+ token p = do s <- get
52+ (FC fn (sl, sc) _) <- getFC --TODO: Update after fixing getFC
53+ r <- p
54+ (FC fn _ (el, ec)) <- getFC
55+ whiteSpace
56+ put (s { lastTokenSpan = Just (FC fn (sl, sc) (el, ec)) })
57+ return r
5358-- | Generalized monadic parsing constraint type
5459type MonadicParsing m = (DeltaParsing m, LookAheadParsing m, TokenParsing m, Monad m)
5560
@@ -333,7 +338,7 @@ getFC :: MonadicParsing m => m FC
333338getFC = do s <- position
334339 let (dir, file) = splitFileName (fileName s)
335340 let f = if dir == addTrailingPathSeparator "." then file else fileName s
336− return $ FC f (lineNum s) (columnNum s)
341+ return $ FC f (lineNum s, columnNum s) (lineNum s, columnNum s) -- TODO: Change to actual spanning
337342
338343{-* Syntax helpers-}
339344-- | Bind constraints to term