on master help sign in
Revert "upgrade megaparsec to 6.0.2 in preparation for GHC 8.2.1 support"

This reverts commit 4bab7417082b3037f6f59688fc9bb41e49fe2e27.

commit94a837edc5b90f1c17050a1314ad30fe9a32b89c authorAgentM <agentm@themactionfaction.com> dateMon 7 Aug 2017, 20:15 (9 years ago) parent00c9dc7
17 files changed+42−36
project-m36.cabal+5−6 src/bin/TutorialD/Interpreter.hs+3−3 src/bin/TutorialD/Interpreter/Base.hs+9−11 src/bin/TutorialD/Interpreter/DataTypes/DateTime.hs+5−5 src/bin/TutorialD/Interpreter/DatabaseContextExpr.hs+1−1 src/bin/TutorialD/Interpreter/DatabaseContextIOOperator.hs+1 src/bin/TutorialD/Interpreter/Export/CSV.hs+1 src/bin/TutorialD/Interpreter/Import/BasicExamples.hs+1 src/bin/TutorialD/Interpreter/Import/CSV.hs+1 src/bin/TutorialD/Interpreter/Import/TutorialD.hs+1 src/bin/TutorialD/Interpreter/InformationOperator.hs+1 src/bin/TutorialD/Interpreter/RODatabaseContextOperator.hs+1 src/bin/TutorialD/Interpreter/RelationalExpr.hs+6−8 src/bin/TutorialD/Interpreter/SchemaOperator.hs+1 src/bin/TutorialD/Interpreter/TransGraphRelationalOperator.hs+1−1 src/bin/TutorialD/Interpreter/TransactionGraphOperator.hs+1 src/bin/TutorialD/Interpreter/Types.hs+3−1
project-m36.cabal+5−6
@@ -169,7 +169,6 @@ Executable tutd
169169 mtl,
170170 uuid,
171171 deepseq-generics,
172− scientific,
173172 MonadRandom, MonadRandom,
174173 vector,
175174 text,
@@ -187,7 +186,7 @@ Executable tutd
187186 directory,
188187 filepath,
189188 temporary,
190− megaparsec >= 6.0.2 && < 7.0,
189+ megaparsec >= 5.2.0 && < 5.3,
191190 haskeline,
192191 random, MonadRandom,
193192 base64-bytestring,
@@ -200,7 +199,7 @@ Executable tutd
200199 TutorialD.Interpreter.DatabaseContextExpr,
201200 TutorialD.Interpreter.RODatabaseContextOperator,
202201 TutorialD.Interpreter.TransactionGraphOperator,
203−-- TutorialD.Interpreter.DataTypes.Interval,
202+ TutorialD.Interpreter.DataTypes.Interval,
204203 TutorialD.Interpreter.DataTypes.DateTime,
205204 TutorialD.Interpreter.Import.BasicExamples,
206205 TutorialD.Interpreter.InformationOperator,
@@ -301,7 +300,7 @@ Test-Suite test-tutoriald-atomfunctionscript
301300 type: exitcode-stdio-1.0
302301 Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator
303302 main-is: test/TutorialD/Interpreter/AtomFunctionScript.hs
304− Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups, time
303+ Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups
305304 GHC-Options: -Wall
306305 Hs-Source-Dirs: ./src/bin, ./test, .
307306 CPP-Options: -DPROJECTM36_VERSION="v0.1"
@@ -312,7 +311,7 @@ Test-Suite test-tutoriald-databasecontextfunctionscript
312311 type: exitcode-stdio-1.0
313312 Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator
314313 main-is: test/TutorialD/Interpreter/DatabaseContextFunctionScript.hs
315− Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups, time
314+ Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups
316315 GHC-Options: -Wall
317316 Hs-Source-Dirs: ./src/bin, ./test, .
318317 CPP-Options: -DPROJECTM36_VERSION="v0.1"
@@ -444,7 +443,7 @@ Test-Suite test-websocket-server
444443 Default-Language: Haskell2010
445444 type: exitcode-stdio-1.0
446445 main-is: test/Server/WebSocket.hs
447− Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, uuid-aeson, project-m36, random, MonadRandom, network-transport-tcp, semigroups, time
446+ Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, uuid-aeson, project-m36, random, MonadRandom, network-transport-tcp, semigroups
448447 Other-Modules: TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.TransactionGraphOperator, ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator
449448 Default-Extensions: OverloadedStrings
450449 GHC-Options: -Wall
src/bin/TutorialD/Interpreter.hs+3−3
@@ -25,6 +25,7 @@ import qualified ProjectM36.Client as C
2525import ProjectM36.Relation (attributes)
2626
2727import Text.Megaparsec
28+import Text.Megaparsec.Text
2829import Control.Monad.State
2930import System.Console.Haskeline
3031import System.Directory (getHomeDirectory)
@@ -32,7 +33,6 @@ import qualified Data.Text as T
3233import System.IO (hPutStrLn, stderr)
3334import Data.Monoid
3435import Control.Exception
35−import Data.Void
3636
3737{-
3838context ops are read-only operations which only operate on the database context (relvars and constraints)
@@ -76,11 +76,11 @@ promptText eHeadName eSchemaName = "TutorialD (" <> transInfo <> "): "
7676 where
7777 transInfo = either (const "<unknown>") id eHeadName <> "/" <> either (const "<no schema>") id eSchemaName
7878
79−parseTutorialD :: T.Text -> Either (ParseError Char Void) ParsedOperation
79+parseTutorialD :: T.Text -> Either (ParseError Char Dec) ParsedOperation
8080parseTutorialD inputString = parse interpreterParserP "" inputString
8181
8282--only parse tutoriald which doesn't result in file I/O
83−safeParseTutorialD :: T.Text -> Either (ParseError Char Void) ParsedOperation
83+safeParseTutorialD :: T.Text -> Either (ParseError Char Dec) ParsedOperation
8484safeParseTutorialD inputString = parse safeInterpreterParserP "" inputString
8585
8686data SafeEvaluationFlag = SafeEvaluation | UnsafeEvaluation deriving (Eq)
src/bin/TutorialD/Interpreter/Base.hs+9−11
@@ -1,8 +1,8 @@
11{-# LANGUAGE DeriveGeneric, CPP #-}
22module TutorialD.Interpreter.Base where
33import Text.Megaparsec
4−import qualified Text.Megaparsec.Char.Lexer as Lex
5−import Text.Megaparsec.Char
4+import Text.Megaparsec.Text
5+import qualified Text.Megaparsec.Lexer as Lex
66import ProjectM36.Base
77import ProjectM36.AtomType
88import Data.Text hiding (count)
@@ -15,13 +15,11 @@ import System.IO
1515import ProjectM36.Relation.Show.Term
1616import GHC.Generics
1717import Data.Monoid
18+import Control.Monad (void)
1819import qualified Data.UUID as U
1920import ProjectM36.Relation
2021import Control.Monad.Random
2122import Data.List.NonEmpty as NE
22−import Data.Void
23−
24−type Parser = Parsec Void Text
2523
2624displayOpResult :: TutorialDOperatorResult -> IO ()
2725displayOpResult QuitResult = return ()
@@ -46,10 +44,10 @@ spaceConsumer = Lex.space (void spaceChar) (Lex.skipLineComment "--") (Lex.skipB
4644opChar :: Parser Char
4745opChar = oneOf (":!#$%&*+./<=>?\\^|-~" :: String)-- remove "@" so it can be used as attribute marker without spaces
4846
49−reserved :: Text -> Parser ()
47+reserved :: String -> Parser ()
5048reserved word = try (string word *> notFollowedBy opChar *> spaceConsumer)
5149
52−reservedOp :: Text -> Parser ()
50+reservedOp :: String -> Parser ()
5351reservedOp op = try (string op *> notFollowedBy opChar *> spaceConsumer)
5452
5553parens :: Parser a -> Parser a
@@ -65,8 +63,8 @@ identifier = do
6563 spaceConsumer
6664 pure (pack (istart:irest))
6765
68−symbol :: Text -> Parser Text
69−symbol sym = Lex.symbol spaceConsumer sym
66+symbol :: String -> Parser Text
67+symbol sym = pack <$> Lex.symbol spaceConsumer sym
7068
7169comma :: Parser Text
7270comma = symbol ","
@@ -92,7 +90,7 @@ whiteSpace = Token.whiteSpace lexer
9290-}
9391
9492integer :: Parser Integer
95−integer = Lex.decimal
93+integer = Lex.integer
9694
9795float :: Parser Double
9896float = Lex.float
@@ -122,7 +120,7 @@ data TutorialDOperatorResult = QuitResult |
122120 DisplayIOResult (IO ()) |
123121 DisplayRelationResult Relation |
124122 DisplayErrorResult StringType |
125− DisplayParseErrorResult Int (ParseError Char Void) | -- Int refers to length of prompt text
123+ DisplayParseErrorResult Int (ParseError Char Dec) | -- Int refers to length of prompt text
126124 QuietSuccessResult
127125 deriving (Generic)
128126
src/bin/TutorialD/Interpreter/DataTypes/DateTime.hs+5−5
@@ -1,10 +1,10 @@
11module TutorialD.Interpreter.DataTypes.DateTime where
2−import Text.Megaparsec
2+import Text.Parsec
33import ProjectM36.Base
4+import Text.Parsec.String
45import TutorialD.Interpreter.Base
56import Data.Time.Clock
67import Data.Time.Format
7−import qualified Data.Text as T
88
99dateTimeAtomP :: Parser Atom
1010dateTimeAtomP = do
@@ -12,11 +12,11 @@ dateTimeAtomP = do
1212 dateTime <- dateTimeStringP
1313 reserved "::datetime"
1414 return dateTime
15− return $ DateTimeAtom dateTime'
15+ return $ Atom dateTime'
1616
1717dateTimeStringP :: Parser UTCTime
1818dateTimeStringP = do
1919 dateTimeString <- quotedString
20− case parseTimeM False defaultTimeLocale "%Y-%m-%d %H:%M:%S" (T.unpack dateTimeString) of
20+ case parseTimeM False defaultTimeLocale "%Y-%m-%d %H:%M:%S" dateTimeString of
2121 Just utctime -> return $ (utctime :: UTCTime)
22− Nothing -> fail $ "Failed to parse datetime from " ++ T.unpack dateTimeString
22+ Nothing -> fail $ "Failed to parse datetime from " ++ dateTimeString
src/bin/TutorialD/Interpreter/DatabaseContextExpr.hs+1−1
@@ -1,6 +1,6 @@
11module TutorialD.Interpreter.DatabaseContextExpr where
22import Text.Megaparsec
3−import Text.Megaparsec.Char
3+import Text.Megaparsec.Text
44import ProjectM36.Base
55import TutorialD.Interpreter.Base
66import qualified Data.Text as T
src/bin/TutorialD/Interpreter/DatabaseContextIOOperator.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Base
55import TutorialD.Interpreter.Base
66import TutorialD.Interpreter.Types
77import Text.Megaparsec
8+import Text.Megaparsec.Text
89
910addAtomFunctionExprP :: Parser DatabaseContextIOExpr
1011addAtomFunctionExprP = do
src/bin/TutorialD/Interpreter/Export/CSV.hs+1
@@ -5,6 +5,7 @@ import TutorialD.Interpreter.RelationalExpr
55import TutorialD.Interpreter.Base
66import ProjectM36.Base
77import ProjectM36.Error
8+import Text.Megaparsec.Text
89import qualified Data.ByteString.Lazy as BS
910import Control.Exception (try)
1011import qualified Data.Text as T
src/bin/TutorialD/Interpreter/Import/BasicExamples.hs+1
@@ -4,6 +4,7 @@ import ProjectM36.DateExamples
44import ProjectM36.Base
55import ProjectM36.DatabaseContext
66import TutorialD.Interpreter.Base
7+import Text.Megaparsec.Text
78
89data ImportBasicExampleOperator = ImportBasicDateExampleOperator
910 deriving (Show)
src/bin/TutorialD/Interpreter/Import/CSV.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Error
55import ProjectM36.Relation.Parse.CSV
66import qualified Data.ByteString.Lazy as BS
77import qualified Data.Text as T
8+import Text.Megaparsec.Text
89import TutorialD.Interpreter.Base
910import Control.Exception
1011
src/bin/TutorialD/Interpreter/Import/TutorialD.hs+1
@@ -3,6 +3,7 @@ import ProjectM36.Base
33import TutorialD.Interpreter.Import.Base
44import TutorialD.Interpreter.Base
55import TutorialD.Interpreter.DatabaseContextExpr
6+import Text.Megaparsec.Text
67import Text.Megaparsec hiding (try)
78import ProjectM36.Error
89import qualified ProjectM36.Error as PM36E
src/bin/TutorialD/Interpreter/InformationOperator.hs+1
@@ -2,6 +2,7 @@
22module TutorialD.Interpreter.InformationOperator where
33import Data.Text
44import Text.Megaparsec
5+import Text.Megaparsec.Text
56import TutorialD.Interpreter.Base
67
78-- this module provides information about the current interpreter
src/bin/TutorialD/Interpreter/RODatabaseContextOperator.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Error
55import ProjectM36.InclusionDependency
66import qualified ProjectM36.Client as C
77import Text.Megaparsec
8+import Text.Megaparsec.Text
89import TutorialD.Interpreter.Base
910import TutorialD.Interpreter.RelationalExpr
1011import TutorialD.Interpreter.DatabaseContextExpr
src/bin/TutorialD/Interpreter/RelationalExpr.hs+6−8
@@ -1,11 +1,10 @@
11module TutorialD.Interpreter.RelationalExpr where
22import Text.Megaparsec
33import Text.Megaparsec.Expr
4−import Text.Megaparsec.Char
54import ProjectM36.Base
5+import Text.Megaparsec.Text
66import TutorialD.Interpreter.Base
77import TutorialD.Interpreter.Types
8−import TutorialD.Interpreter.DataTypes.DateTime
98import qualified Data.Text as T
109import qualified Data.Set as S
1110import qualified Data.Map as M
@@ -216,10 +215,9 @@ constructedAtomExprP consume = do
216215-- used only for primitive type parsing ?
217216atomP :: Parser Atom
218217atomP = stringAtomP <|>
219− intAtomP <|>
220− doubleAtomP <|>
221− boolAtomP <|>
222− dateTimeAtomP
218+ doubleAtomP <|>
219+ intAtomP <|>
220+ boolAtomP
223221
224222functionAtomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
225223functionAtomExprP = do
@@ -235,11 +233,11 @@ stringAtomP :: Parser Atom
235233stringAtomP = liftA TextAtom quotedString
236234
237235doubleAtomP :: Parser Atom
238−doubleAtomP = DoubleAtom <$> float
236+doubleAtomP = DoubleAtom <$> (try float)
239237
240238intAtomP :: Parser Atom
241239intAtomP = do
242− i <- try (integer <* notFollowedBy (char '.'))
240+ i <- integer
243241 return $ IntAtom (fromIntegral i)
244242
245243boolAtomP :: Parser Atom
src/bin/TutorialD/Interpreter/SchemaOperator.hs+1
@@ -1,5 +1,6 @@
11module TutorialD.Interpreter.SchemaOperator where
22import Text.Megaparsec
3+import Text.Megaparsec.Text
34
45import ProjectM36.Base
56import ProjectM36.IsomorphicSchema
src/bin/TutorialD/Interpreter/TransGraphRelationalOperator.hs+1−1
@@ -9,7 +9,7 @@ import TutorialD.Interpreter.Base
99import TutorialD.Interpreter.RelationalExpr
1010
1111import Text.Megaparsec
12−import Text.Megaparsec.Char
12+import Text.Megaparsec.Text
1313
1414import qualified Data.Text as T
1515
src/bin/TutorialD/Interpreter/TransactionGraphOperator.hs+1
@@ -1,6 +1,7 @@
11{-# LANGUAGE GADTs #-}
22module TutorialD.Interpreter.TransactionGraphOperator where
33import TutorialD.Interpreter.Base
4+import Text.Megaparsec.Text
45import Text.Megaparsec
56import ProjectM36.TransactionGraph
67import ProjectM36.Client
src/bin/TutorialD/Interpreter/Types.hs+3−1
@@ -1,9 +1,11 @@
11--parse type and data constructors
22module TutorialD.Interpreter.Types where
33import ProjectM36.Base
4+import Text.Megaparsec.Text
45import Text.Megaparsec
56import TutorialD.Interpreter.Base
67import ProjectM36.DataTypes.Primitive
8+import qualified Data.Text as T
79
810-- | Upper case names are type names while lower case names are polymorphic typeconstructor arguments.
911-- data *Either a b* = Left a | Right b
@@ -27,7 +29,7 @@ dataConstructorDefArgP = parens (DataConstructorDefTypeConstructorArg <$> typeCo
2729-- Int, Text, etc.
2830primitiveTypeConstructorP :: Parser TypeConstructor
2931primitiveTypeConstructorP = choice (map (\(PrimitiveTypeConstructorDef name typ, _) -> do
30− tName <- try $ symbol name
32+ tName <- try $ symbol (T.unpack name)
3133 pure $ PrimitiveTypeConstructor tName typ)
3234 primitiveTypeConstructorMapping)
3335