on master help sign in
Revert "upgrade megaparsec to 6.0.2 in preparation for GHC 8.2.1 support"
94a837eAgentM
project-m36.cabal+5−6
@@ -169,7 +169,6 @@ Executable tutd
169 mtl,
169 mtl,
170 uuid,
170 uuid,
171 deepseq-generics,
171 deepseq-generics,
172− scientific,
173 MonadRandom, MonadRandom,
172 MonadRandom, MonadRandom,
174 vector,
173 vector,
175 text,
174 text,
@@ -187,7 +186,7 @@ Executable tutd
187 directory,
186 directory,
188 filepath,
187 filepath,
189 temporary,
188 temporary,
190− megaparsec >= 6.0.2 && < 7.0,
189+ megaparsec >= 5.2.0 && < 5.3,
191 haskeline,
190 haskeline,
192 random, MonadRandom,
191 random, MonadRandom,
193 base64-bytestring,
192 base64-bytestring,
@@ -200,7 +199,7 @@ Executable tutd
200 TutorialD.Interpreter.DatabaseContextExpr,
199 TutorialD.Interpreter.DatabaseContextExpr,
201 TutorialD.Interpreter.RODatabaseContextOperator,
200 TutorialD.Interpreter.RODatabaseContextOperator,
202 TutorialD.Interpreter.TransactionGraphOperator,
201 TutorialD.Interpreter.TransactionGraphOperator,
203−-- TutorialD.Interpreter.DataTypes.Interval,
202+ TutorialD.Interpreter.DataTypes.Interval,
204 TutorialD.Interpreter.DataTypes.DateTime,
203 TutorialD.Interpreter.DataTypes.DateTime,
205 TutorialD.Interpreter.Import.BasicExamples,
204 TutorialD.Interpreter.Import.BasicExamples,
206 TutorialD.Interpreter.InformationOperator,
205 TutorialD.Interpreter.InformationOperator,
@@ -301,7 +300,7 @@ Test-Suite test-tutoriald-atomfunctionscript
301 type: exitcode-stdio-1.0
300 type: exitcode-stdio-1.0
302 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
301 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
303 main-is: test/TutorialD/Interpreter/AtomFunctionScript.hs
302 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
305 GHC-Options: -Wall
304 GHC-Options: -Wall
306 Hs-Source-Dirs: ./src/bin, ./test, .
305 Hs-Source-Dirs: ./src/bin, ./test, .
307 CPP-Options: -DPROJECTM36_VERSION="v0.1"
306 CPP-Options: -DPROJECTM36_VERSION="v0.1"
@@ -312,7 +311,7 @@ Test-Suite test-tutoriald-databasecontextfunctionscript
312 type: exitcode-stdio-1.0
311 type: exitcode-stdio-1.0
313 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
312 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
314 main-is: test/TutorialD/Interpreter/DatabaseContextFunctionScript.hs
313 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
316 GHC-Options: -Wall
315 GHC-Options: -Wall
317 Hs-Source-Dirs: ./src/bin, ./test, .
316 Hs-Source-Dirs: ./src/bin, ./test, .
318 CPP-Options: -DPROJECTM36_VERSION="v0.1"
317 CPP-Options: -DPROJECTM36_VERSION="v0.1"
@@ -444,7 +443,7 @@ Test-Suite test-websocket-server
444 Default-Language: Haskell2010
443 Default-Language: Haskell2010
445 type: exitcode-stdio-1.0
444 type: exitcode-stdio-1.0
446 main-is: test/Server/WebSocket.hs
445 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
448 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
447 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
449 Default-Extensions: OverloadedStrings
448 Default-Extensions: OverloadedStrings
450 GHC-Options: -Wall
449 GHC-Options: -Wall
src/bin/TutorialD/Interpreter.hs+3−3
@@ -25,6 +25,7 @@ import qualified ProjectM36.Client as C
25import ProjectM36.Relation (attributes)
25import ProjectM36.Relation (attributes)
26
26
27import Text.Megaparsec
27import Text.Megaparsec
28+import Text.Megaparsec.Text
28import Control.Monad.State
29import Control.Monad.State
29import System.Console.Haskeline
30import System.Console.Haskeline
30import System.Directory (getHomeDirectory)
31import System.Directory (getHomeDirectory)
@@ -32,7 +33,6 @@ import qualified Data.Text as T
32import System.IO (hPutStrLn, stderr)
33import System.IO (hPutStrLn, stderr)
33import Data.Monoid
34import Data.Monoid
34import Control.Exception
35import Control.Exception
35−import Data.Void
36
36
37{-
37{-
38context ops are read-only operations which only operate on the database context (relvars and constraints)
38context ops are read-only operations which only operate on the database context (relvars and constraints)
@@ -76,11 +76,11 @@ promptText eHeadName eSchemaName = "TutorialD (" <> transInfo <> "): "
76 where
76 where
77 transInfo = either (const "<unknown>") id eHeadName <> "/" <> either (const "<no schema>") id eSchemaName
77 transInfo = either (const "<unknown>") id eHeadName <> "/" <> either (const "<no schema>") id eSchemaName
78
78
79−parseTutorialD :: T.Text -> Either (ParseError Char Void) ParsedOperation
79+parseTutorialD :: T.Text -> Either (ParseError Char Dec) ParsedOperation
80parseTutorialD inputString = parse interpreterParserP "" inputString
80parseTutorialD inputString = parse interpreterParserP "" inputString
81
81
82--only parse tutoriald which doesn't result in file I/O
82--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
84safeParseTutorialD inputString = parse safeInterpreterParserP "" inputString
84safeParseTutorialD inputString = parse safeInterpreterParserP "" inputString
85
85
86data SafeEvaluationFlag = SafeEvaluation | UnsafeEvaluation deriving (Eq)
86data SafeEvaluationFlag = SafeEvaluation | UnsafeEvaluation deriving (Eq)
src/bin/TutorialD/Interpreter/Base.hs+9−11
@@ -1,8 +1,8 @@
1{-# LANGUAGE DeriveGeneric, CPP #-}
1{-# LANGUAGE DeriveGeneric, CPP #-}
2module TutorialD.Interpreter.Base where
2module TutorialD.Interpreter.Base where
3import Text.Megaparsec
3import Text.Megaparsec
4+import Text.Megaparsec.Text
4−import qualified Text.Megaparsec.Char.Lexer as Lex
5+import qualified Text.Megaparsec.Lexer as Lex
5−import Text.Megaparsec.Char
6import ProjectM36.Base
6import ProjectM36.Base
7import ProjectM36.AtomType
7import ProjectM36.AtomType
8import Data.Text hiding (count)
8import Data.Text hiding (count)
@@ -15,13 +15,11 @@ import System.IO
15import ProjectM36.Relation.Show.Term
15import ProjectM36.Relation.Show.Term
16import GHC.Generics
16import GHC.Generics
17import Data.Monoid
17import Data.Monoid
18+import Control.Monad (void)
18import qualified Data.UUID as U
19import qualified Data.UUID as U
19import ProjectM36.Relation
20import ProjectM36.Relation
20import Control.Monad.Random
21import Control.Monad.Random
21import Data.List.NonEmpty as NE
22import Data.List.NonEmpty as NE
22−import Data.Void
23−
24−type Parser = Parsec Void Text
25
23
26displayOpResult :: TutorialDOperatorResult -> IO ()
24displayOpResult :: TutorialDOperatorResult -> IO ()
27displayOpResult QuitResult = return ()
25displayOpResult QuitResult = return ()
@@ -46,10 +44,10 @@ spaceConsumer = Lex.space (void spaceChar) (Lex.skipLineComment "--") (Lex.skipB
46opChar :: Parser Char
44opChar :: Parser Char
47opChar = oneOf (":!#$%&*+./<=>?\\^|-~" :: String)-- remove "@" so it can be used as attribute marker without spaces
45opChar = oneOf (":!#$%&*+./<=>?\\^|-~" :: String)-- remove "@" so it can be used as attribute marker without spaces
48
46
49−reserved :: Text -> Parser ()
47+reserved :: String -> Parser ()
50reserved word = try (string word *> notFollowedBy opChar *> spaceConsumer)
48reserved word = try (string word *> notFollowedBy opChar *> spaceConsumer)
51
49
52−reservedOp :: Text -> Parser ()
50+reservedOp :: String -> Parser ()
53reservedOp op = try (string op *> notFollowedBy opChar *> spaceConsumer)
51reservedOp op = try (string op *> notFollowedBy opChar *> spaceConsumer)
54
52
55parens :: Parser a -> Parser a
53parens :: Parser a -> Parser a
@@ -65,8 +63,8 @@ identifier = do
65 spaceConsumer
63 spaceConsumer
66 pure (pack (istart:irest))
64 pure (pack (istart:irest))
67
65
68−symbol :: Text -> Parser Text
66+symbol :: String -> Parser Text
69−symbol sym = Lex.symbol spaceConsumer sym
67+symbol sym = pack <$> Lex.symbol spaceConsumer sym
70
68
71comma :: Parser Text
69comma :: Parser Text
72comma = symbol ","
70comma = symbol ","
@@ -92,7 +90,7 @@ whiteSpace = Token.whiteSpace lexer
92-}
90-}
93
91
94integer :: Parser Integer
92integer :: Parser Integer
95−integer = Lex.decimal
93+integer = Lex.integer
96
94
97float :: Parser Double
95float :: Parser Double
98float = Lex.float
96float = Lex.float
@@ -122,7 +120,7 @@ data TutorialDOperatorResult = QuitResult |
122 DisplayIOResult (IO ()) |
120 DisplayIOResult (IO ()) |
123 DisplayRelationResult Relation |
121 DisplayRelationResult Relation |
124 DisplayErrorResult StringType |
122 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
126 QuietSuccessResult
124 QuietSuccessResult
127 deriving (Generic)
125 deriving (Generic)
128
126
src/bin/TutorialD/Interpreter/DataTypes/DateTime.hs+5−5
@@ -1,10 +1,10 @@
1module TutorialD.Interpreter.DataTypes.DateTime where
1module TutorialD.Interpreter.DataTypes.DateTime where
2−import Text.Megaparsec
2+import Text.Parsec
3import ProjectM36.Base
3import ProjectM36.Base
4+import Text.Parsec.String
4import TutorialD.Interpreter.Base
5import TutorialD.Interpreter.Base
5import Data.Time.Clock
6import Data.Time.Clock
6import Data.Time.Format
7import Data.Time.Format
7−import qualified Data.Text as T
8
8
9dateTimeAtomP :: Parser Atom
9dateTimeAtomP :: Parser Atom
10dateTimeAtomP = do
10dateTimeAtomP = do
@@ -12,11 +12,11 @@ dateTimeAtomP = do
12 dateTime <- dateTimeStringP
12 dateTime <- dateTimeStringP
13 reserved "::datetime"
13 reserved "::datetime"
14 return dateTime
14 return dateTime
15− return $ DateTimeAtom dateTime'
15+ return $ Atom dateTime'
16
16
17dateTimeStringP :: Parser UTCTime
17dateTimeStringP :: Parser UTCTime
18dateTimeStringP = do
18dateTimeStringP = do
19 dateTimeString <- quotedString
19 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
21 Just utctime -> return $ (utctime :: UTCTime)
21 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 @@
1module TutorialD.Interpreter.DatabaseContextExpr where
1module TutorialD.Interpreter.DatabaseContextExpr where
2import Text.Megaparsec
2import Text.Megaparsec
3−import Text.Megaparsec.Char
3+import Text.Megaparsec.Text
4import ProjectM36.Base
4import ProjectM36.Base
5import TutorialD.Interpreter.Base
5import TutorialD.Interpreter.Base
6import qualified Data.Text as T
6import qualified Data.Text as T
src/bin/TutorialD/Interpreter/DatabaseContextIOOperator.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Base
5import TutorialD.Interpreter.Base
5import TutorialD.Interpreter.Base
6import TutorialD.Interpreter.Types
6import TutorialD.Interpreter.Types
7import Text.Megaparsec
7import Text.Megaparsec
8+import Text.Megaparsec.Text
8
9
9addAtomFunctionExprP :: Parser DatabaseContextIOExpr
10addAtomFunctionExprP :: Parser DatabaseContextIOExpr
10addAtomFunctionExprP = do
11addAtomFunctionExprP = do
src/bin/TutorialD/Interpreter/Export/CSV.hs+1
@@ -5,6 +5,7 @@ import TutorialD.Interpreter.RelationalExpr
5import TutorialD.Interpreter.Base
5import TutorialD.Interpreter.Base
6import ProjectM36.Base
6import ProjectM36.Base
7import ProjectM36.Error
7import ProjectM36.Error
8+import Text.Megaparsec.Text
8import qualified Data.ByteString.Lazy as BS
9import qualified Data.ByteString.Lazy as BS
9import Control.Exception (try)
10import Control.Exception (try)
10import qualified Data.Text as T
11import qualified Data.Text as T
src/bin/TutorialD/Interpreter/Import/BasicExamples.hs+1
@@ -4,6 +4,7 @@ import ProjectM36.DateExamples
4import ProjectM36.Base
4import ProjectM36.Base
5import ProjectM36.DatabaseContext
5import ProjectM36.DatabaseContext
6import TutorialD.Interpreter.Base
6import TutorialD.Interpreter.Base
7+import Text.Megaparsec.Text
7
8
8data ImportBasicExampleOperator = ImportBasicDateExampleOperator
9data ImportBasicExampleOperator = ImportBasicDateExampleOperator
9 deriving (Show)
10 deriving (Show)
src/bin/TutorialD/Interpreter/Import/CSV.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Error
5import ProjectM36.Relation.Parse.CSV
5import ProjectM36.Relation.Parse.CSV
6import qualified Data.ByteString.Lazy as BS
6import qualified Data.ByteString.Lazy as BS
7import qualified Data.Text as T
7import qualified Data.Text as T
8+import Text.Megaparsec.Text
8import TutorialD.Interpreter.Base
9import TutorialD.Interpreter.Base
9import Control.Exception
10import Control.Exception
10
11
src/bin/TutorialD/Interpreter/Import/TutorialD.hs+1
@@ -3,6 +3,7 @@ import ProjectM36.Base
3import TutorialD.Interpreter.Import.Base
3import TutorialD.Interpreter.Import.Base
4import TutorialD.Interpreter.Base
4import TutorialD.Interpreter.Base
5import TutorialD.Interpreter.DatabaseContextExpr
5import TutorialD.Interpreter.DatabaseContextExpr
6+import Text.Megaparsec.Text
6import Text.Megaparsec hiding (try)
7import Text.Megaparsec hiding (try)
7import ProjectM36.Error
8import ProjectM36.Error
8import qualified ProjectM36.Error as PM36E
9import qualified ProjectM36.Error as PM36E
src/bin/TutorialD/Interpreter/InformationOperator.hs+1
@@ -2,6 +2,7 @@
2module TutorialD.Interpreter.InformationOperator where
2module TutorialD.Interpreter.InformationOperator where
3import Data.Text
3import Data.Text
4import Text.Megaparsec
4import Text.Megaparsec
5+import Text.Megaparsec.Text
5import TutorialD.Interpreter.Base
6import TutorialD.Interpreter.Base
6
7
7-- this module provides information about the current interpreter
8-- this module provides information about the current interpreter
src/bin/TutorialD/Interpreter/RODatabaseContextOperator.hs+1
@@ -5,6 +5,7 @@ import ProjectM36.Error
5import ProjectM36.InclusionDependency
5import ProjectM36.InclusionDependency
6import qualified ProjectM36.Client as C
6import qualified ProjectM36.Client as C
7import Text.Megaparsec
7import Text.Megaparsec
8+import Text.Megaparsec.Text
8import TutorialD.Interpreter.Base
9import TutorialD.Interpreter.Base
9import TutorialD.Interpreter.RelationalExpr
10import TutorialD.Interpreter.RelationalExpr
10import TutorialD.Interpreter.DatabaseContextExpr
11import TutorialD.Interpreter.DatabaseContextExpr
src/bin/TutorialD/Interpreter/RelationalExpr.hs+6−8
@@ -1,11 +1,10 @@
1module TutorialD.Interpreter.RelationalExpr where
1module TutorialD.Interpreter.RelationalExpr where
2import Text.Megaparsec
2import Text.Megaparsec
3import Text.Megaparsec.Expr
3import Text.Megaparsec.Expr
4−import Text.Megaparsec.Char
5import ProjectM36.Base
4import ProjectM36.Base
5+import Text.Megaparsec.Text
6import TutorialD.Interpreter.Base
6import TutorialD.Interpreter.Base
7import TutorialD.Interpreter.Types
7import TutorialD.Interpreter.Types
8−import TutorialD.Interpreter.DataTypes.DateTime
9import qualified Data.Text as T
8import qualified Data.Text as T
10import qualified Data.Set as S
9import qualified Data.Set as S
11import qualified Data.Map as M
10import qualified Data.Map as M
@@ -216,10 +215,9 @@ constructedAtomExprP consume = do
216-- used only for primitive type parsing ?
215-- used only for primitive type parsing ?
217atomP :: Parser Atom
216atomP :: Parser Atom
218atomP = stringAtomP <|>
217atomP = stringAtomP <|>
218+ doubleAtomP <|>
219− intAtomP <|>
219+ intAtomP <|>
220− doubleAtomP <|>
221− boolAtomP <|>
220+ boolAtomP
222− dateTimeAtomP
223
221
224functionAtomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
222functionAtomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
225functionAtomExprP = do
223functionAtomExprP = do
@@ -235,11 +233,11 @@ stringAtomP :: Parser Atom
235stringAtomP = liftA TextAtom quotedString
233stringAtomP = liftA TextAtom quotedString
236
234
237doubleAtomP :: Parser Atom
235doubleAtomP :: Parser Atom
238−doubleAtomP = DoubleAtom <$> float
236+doubleAtomP = DoubleAtom <$> (try float)
239
237
240intAtomP :: Parser Atom
238intAtomP :: Parser Atom
241intAtomP = do
239intAtomP = do
242− i <- try (integer <* notFollowedBy (char '.'))
240+ i <- integer
243 return $ IntAtom (fromIntegral i)
241 return $ IntAtom (fromIntegral i)
244
242
245boolAtomP :: Parser Atom
243boolAtomP :: Parser Atom
src/bin/TutorialD/Interpreter/SchemaOperator.hs+1
@@ -1,5 +1,6 @@
1module TutorialD.Interpreter.SchemaOperator where
1module TutorialD.Interpreter.SchemaOperator where
2import Text.Megaparsec
2import Text.Megaparsec
3+import Text.Megaparsec.Text
3
4
4import ProjectM36.Base
5import ProjectM36.Base
5import ProjectM36.IsomorphicSchema
6import ProjectM36.IsomorphicSchema
src/bin/TutorialD/Interpreter/TransGraphRelationalOperator.hs+1−1
@@ -9,7 +9,7 @@ import TutorialD.Interpreter.Base
9import TutorialD.Interpreter.RelationalExpr
9import TutorialD.Interpreter.RelationalExpr
10
10
11import Text.Megaparsec
11import Text.Megaparsec
12−import Text.Megaparsec.Char
12+import Text.Megaparsec.Text
13
13
14import qualified Data.Text as T
14import qualified Data.Text as T
15
15
src/bin/TutorialD/Interpreter/TransactionGraphOperator.hs+1
@@ -1,6 +1,7 @@
1{-# LANGUAGE GADTs #-}
1{-# LANGUAGE GADTs #-}
2module TutorialD.Interpreter.TransactionGraphOperator where
2module TutorialD.Interpreter.TransactionGraphOperator where
3import TutorialD.Interpreter.Base
3import TutorialD.Interpreter.Base
4+import Text.Megaparsec.Text
4import Text.Megaparsec
5import Text.Megaparsec
5import ProjectM36.TransactionGraph
6import ProjectM36.TransactionGraph
6import ProjectM36.Client
7import ProjectM36.Client
src/bin/TutorialD/Interpreter/Types.hs+3−1
@@ -1,9 +1,11 @@
1--parse type and data constructors
1--parse type and data constructors
2module TutorialD.Interpreter.Types where
2module TutorialD.Interpreter.Types where
3import ProjectM36.Base
3import ProjectM36.Base
4+import Text.Megaparsec.Text
4import Text.Megaparsec
5import Text.Megaparsec
5import TutorialD.Interpreter.Base
6import TutorialD.Interpreter.Base
6import ProjectM36.DataTypes.Primitive
7import ProjectM36.DataTypes.Primitive
8+import qualified Data.Text as T
7
9
8-- | Upper case names are type names while lower case names are polymorphic typeconstructor arguments.
10-- | Upper case names are type names while lower case names are polymorphic typeconstructor arguments.
9-- data *Either a b* = Left a | Right b
11-- data *Either a b* = Left a | Right b
@@ -27,7 +29,7 @@ dataConstructorDefArgP = parens (DataConstructorDefTypeConstructorArg <$> typeCo
27-- Int, Text, etc.
29-- Int, Text, etc.
28primitiveTypeConstructorP :: Parser TypeConstructor
30primitiveTypeConstructorP :: Parser TypeConstructor
29primitiveTypeConstructorP = choice (map (\(PrimitiveTypeConstructorDef name typ, _) -> do
31primitiveTypeConstructorP = choice (map (\(PrimitiveTypeConstructorDef name typ, _) -> do
30− tName <- try $ symbol name
32+ tName <- try $ symbol (T.unpack name)
31 pure $ PrimitiveTypeConstructor tName typ)
33 pure $ PrimitiveTypeConstructor tName typ)
32 primitiveTypeConstructorMapping)
34 primitiveTypeConstructorMapping)
33
35