on master help sign in
Merge branch 'master' of https://github.com/jmorag/Idris-dev into megaparsec7
commit0b669c7b9d9c55465258a23a6faa44d25cccf413 authorJorge Acereda <jacereda@gmail.com> dateThu 10 Jan 2019, 19:08 (8 years ago) parentf445c51a20cb92
9 files changed+25−24
idris.cabal+2−1 src/Idris/Package/Parser.hs+1−2 src/Idris/Parser.hs−1 src/Idris/Parser/Expr.hs+2−2 src/Idris/Parser/Helpers.hs+1−1 src/Idris/Parser/Ops.hs+1−2 src/Idris/Parser/Stack.hs+9−8 src/Idris/REPL/Parser.hs+5−6 stack.yaml+4−1
idris.cabal+2−1
@@ -289,10 +289,11 @@ Library
289289 , fingertree >= 0.1.4.1 && < 0.2
290290 , haskeline >= 0.7 && < 0.8
291291 , ieee754 >= 0.7 && < 0.9
292− , megaparsec >= 6.2 && < 7
292+ , megaparsec >= 7.0.4 && < 8
293293 , mtl >= 2.1 && < 2.3
294294 , network >= 2.7 && < 2.9
295295 , optparse-applicative >= 0.13 && < 0.15
296+ , parser-combinators >= 1.0.0
296297 , pretty < 1.2
297298 , process < 1.7
298299 , regex-tdfa >= 1.2
src/Idris/Package/Parser.hs+1−2
@@ -27,14 +27,13 @@ import System.Exit
2727import System.FilePath (isValid, takeExtension, takeFileName)
2828import Text.Megaparsec ((<?>))
2929import qualified Text.Megaparsec as P
30−import qualified Text.Megaparsec.Char as P
3130import qualified Text.PrettyPrint.ANSI.Leijen as PP
3231
3332type PParser = Parser PkgDesc
3433
3534parseDesc :: FilePath -> IO PkgDesc
3635parseDesc fp = do
37− when (not $ takeExtension fp == ".ipkg") $ do
36+ unless (takeExtension fp == ".ipkg") $ do
3837 putStrLn $ unwords ["The presented iPKG file does not have a '.ipkg' extension:", show fp]
3938 exitWith (ExitFailure 1)
4039 res <- doesFileExist fp
src/Idris/Parser.hs−1
@@ -60,7 +60,6 @@ import qualified System.Directory as Dir (doesFileExist, getModificationTime,
6060import System.FilePath
6161import Text.Megaparsec ((<?>))
6262import qualified Text.Megaparsec as P
63−import qualified Text.Megaparsec.Char as P
6463import qualified Text.PrettyPrint.ANSI.Leijen as PP
6564
6665{-
src/Idris/Parser/Expr.hs+2−2
@@ -20,6 +20,7 @@ import Prelude hiding (pi)
2020import Control.Applicative
2121import Control.Arrow (left)
2222import Control.Monad
23+import qualified Control.Monad.Combinators.Expr as P
2324import Control.Monad.State.Strict
2425import Data.Function (on)
2526import Data.List
@@ -27,7 +28,6 @@ import Data.Maybe
2728import Text.Megaparsec ((<?>))
2829import qualified Text.Megaparsec as P
2930import qualified Text.Megaparsec.Char as P
30−import qualified Text.Megaparsec.Expr as P
3131
3232-- | Allow implicit type declarations
3333allowImp :: SyntaxInfo -> SyntaxInfo
@@ -1406,7 +1406,7 @@ VerbatimString_t ::=
14061406 -}
14071407verbatimStringLiteral :: Parsing m => m String
14081408verbatimStringLiteral = token $ do P.try $ string "\"\"\""
1409− str <- P.manyTill P.anyChar $ P.try (string "\"\"\"")
1409+ str <- P.manyTill P.anySingle $ P.try (string "\"\"\"")
14101410 moreQuotes <- P.many $ P.char '"'
14111411 return $ str ++ moreQuotes
14121412
src/Idris/Parser/Helpers.hs+1−1
@@ -397,7 +397,7 @@ popIndent = do ist <- get
397397
398398-- | Gets current indentation
399399indent :: Parsing m => m Int
400−indent = P.unPos . P.sourceColumn <$> P.getPosition
400+indent = P.unPos . P.sourceColumn <$> P.getSourcePos
401401
402402-- | Gets last indentation
403403lastIndent :: (MonadState IState m) => m Int
src/Idris/Parser/Ops.hs+1−2
@@ -17,14 +17,13 @@ import Prelude hiding (pi)
1717
1818import Control.Applicative
1919import Control.Monad
20+import qualified Control.Monad.Combinators.Expr as P
2021import Control.Monad.State.Strict
2122import Data.Char (isAlpha)
2223import Data.List
2324import Data.List.NonEmpty (fromList)
2425import Text.Megaparsec ((<?>))
2526import qualified Text.Megaparsec as P
26−import qualified Text.Megaparsec.Char as P
27−import qualified Text.Megaparsec.Expr as P
2827
2928-- | Creates table for fixity declarations to build expression parser
3029-- using pre-build and user-defined operator/fixity declarations
src/Idris/Parser/Stack.hs+9−8
@@ -57,23 +57,24 @@ type Parsing m = (P.MonadParsec Void String m, MonadWriter FC m)
5757runparser :: Parser st res -> st -> String -> String -> Either ParseError res
5858runparser p i inputname s =
5959 case P.parse (runWriterT (evalStateT p i)) inputname s of
60− Left err -> Left $ ParseError s err
60+ Left err -> Left $ ParseError err
6161 Right v -> Right $ fst v
6262
6363{- * Parse errors -}
6464
65−data ParseError = ParseError String (P.ParseError (P.Token String) Void)
65+newtype ParseError = ParseError (P.ParseErrorBundle String Void)
6666
6767instance Message ParseError where
68− messageExtent (ParseError _ err) = sourcePositionFC pos
68+ messageExtent (ParseError err) = sourcePositionFC pos
6969 where
70− (pos NonEmpty.:| _) = P.errorPos err
71− messageText (ParseError _ err) = PP.text . init . P.parseErrorTextPretty $ err
72− messageSource (ParseError src _) = Just src
70+ (pos, _) = P.reachOffsetNoLine (P.errorOffset err') (P.bundlePosState err)
71+ err' = NonEmpty.head . P.bundleErrors $ err
72+ messageText (ParseError err) = PP.text . init . P.errorBundlePretty $ err
73+ messageSource (ParseError err) = Just . P.sourceName . P.pstateSourcePos . P.bundlePosState $ err
7374
7475-- | A fully formatted parse error, with caret and bar, etc.
7576prettyError :: ParseError -> String
76−prettyError (ParseError s err) = P.parseErrorPretty' s err
77+prettyError (ParseError err) = P.errorBundlePretty err
7778
7879{- * Mark and restore -}
7980
@@ -104,7 +105,7 @@ sourcePositionFC (P.SourcePos name line column) =
104105-- This is useful when the position is needed in a way unrelated to the
105106-- heirarchy of parsers. Prefer using @withExtent@ and friends.
106107getFC :: Parsing m => m FC
107−getFC = sourcePositionFC <$> P.getPosition
108+getFC = sourcePositionFC <$> P.getSourcePos
108109
109110-- | Add an extent (widen) our current parsing context.
110111addExtent :: MonadWriter FC m => FC -> m ()
src/Idris/REPL/Parser.hs+5−6
@@ -33,7 +33,6 @@ import Data.List.Split (splitOn)
3333import System.Console.ANSI (Color(..))
3434import System.FilePath ((</>))
3535import qualified Text.Megaparsec as P
36−import qualified Text.Megaparsec.Char as P
3736
3837parseCmd :: IState -> String -> String -> Either IP.ParseError (Either String Command)
3938parseCmd i inputname = IP.runparser pCmd i inputname . trim
@@ -68,7 +67,7 @@ parserCommandsForHelp =
6867 , nameArgCmd ["miss", "missing"] Missing "Show missing clauses"
6968 , (["doc"], NameArg, "Show internal documentation", cmd_doc)
7069 , (["mkdoc"], NamespaceArg, "Generate IdrisDoc for namespace(s) and dependencies"
71− , genArg "namespace" (P.many P.anyChar) MakeDoc)
70+ , genArg "namespace" (P.many P.anySingle) MakeDoc)
7271 , (["apropos"], SeqArgs (OptionalArg PkgArgs) NameArg, " Search names, types, and documentation"
7372 , cmd_apropos)
7473 , (["s", "search"], SeqArgs (OptionalArg PkgArgs) ExprArg
@@ -198,7 +197,7 @@ pCmd = P.choice [ do c <- cmd names; parser c
198197 where nop = do P.eof; return (Right NOP)
199198 unrecognized = do
200199 IP.lchar ':'
201− cmd <- P.many P.anyChar
200+ cmd <- P.many P.anySingle
202201 let cmd' = takeWhile (/=' ') cmd
203202 return (Left $ "Unrecognized command: " ++ cmd')
204203
@@ -260,7 +259,7 @@ nameArg = genArg "name" IP.name
260259fnNameArg = genArg "functionname" IP.fnName
261260
262261strArg :: (String -> Command) -> String -> IP.IdrisParser (Either String Command)
263−strArg = genArg "string" (P.many P.anyChar)
262+strArg = genArg "string" (P.many P.anySingle)
264263
265264moduleArg :: (FilePath -> Command) -> String -> IP.IdrisParser (Either String Command)
266265moduleArg = genArg "module" (fmap toPath IP.identifier)
@@ -342,7 +341,7 @@ cmd_execute name = do
342341
343342cmd_dynamic :: String -> IP.IdrisParser (Either String Command)
344343cmd_dynamic name = do
345− let optArg = do l <- P.many P.anyChar
344+ let optArg = do l <- P.many P.anySingle
346345 if (l /= "")
347346 then return $ Right (DynamicLink l)
348347 else return $ Right ListDynamic
@@ -440,7 +439,7 @@ cmd_unlet name = Right . Undefine <$> P.many IP.name
440439cmd_loadto :: String -> IP.IdrisParser (Either String Command)
441440cmd_loadto name = do
442441 toline <- fromInteger <$> IP.natural
443− f <- P.many P.anyChar
442+ f <- P.many P.anySingle
444443 return (Right (Load f (Just toline)))
445444
446445cmd_colour :: String -> IP.IdrisParser (Either String Command)
stack.yaml+4−1
@@ -4,7 +4,10 @@ resolver: lts-12.21
44packages:
55 - location: .
66
7−extra-deps: []
7+extra-deps:
8+ - megaparsec-7.0.4
9+ - parser-combinators-1.0.0
10+
811
912flags:
1013 idris: