on master help sign in
add empty whitespace parser/noop for databaseExpr parser
79de2e2AgentM
ProjectM36/Base.hs+1
@@ -328,6 +328,7 @@ instance Binary InclusionDependency
328
328
329-- | Database context expressions modify the database context.
329-- | Database context expressions modify the database context.
330data DatabaseExpr where
330data DatabaseExpr where
331+ NoOperation :: DatabaseExpr
331 Define :: RelVarName -> [AttributeExpr] -> DatabaseExpr
332 Define :: RelVarName -> [AttributeExpr] -> DatabaseExpr
332 Undefine :: RelVarName -> DatabaseExpr --forget existence of relvar X
333 Undefine :: RelVarName -> DatabaseExpr --forget existence of relvar X
333 Assign :: RelVarName -> RelationalExpr -> DatabaseExpr
334 Assign :: RelVarName -> RelationalExpr -> DatabaseExpr
ProjectM36/RelationalExpression.hs+2
@@ -167,6 +167,8 @@ deleteRelVar relVarName = do
167 return Nothing
167 return Nothing
168
168
169evalContextExpr :: DatabaseExpr -> DatabaseState (Maybe RelationalError)
169evalContextExpr :: DatabaseExpr -> DatabaseState (Maybe RelationalError)
170+evalContextExpr NoOperation = pure Nothing
171+
170evalContextExpr (Define relVarName attrExprs) = do
172evalContextExpr (Define relVarName attrExprs) = do
171 relvars <- liftM relationVariables get
173 relvars <- liftM relationVariables get
172 tConss <- liftM typeConstructorMapping get
174 tConss <- liftM typeConstructorMapping get
ProjectM36/StaticOptimizer.hs+3−2
@@ -91,9 +91,10 @@ applyStaticRelationalOptimization e@(NotEquals _ _) = return $ Right e
91applyStaticRelationalOptimization e@(Extend _ _) = return $ Right e
91applyStaticRelationalOptimization e@(Extend _ _) = return $ Right e
92
92
93applyStaticDatabaseOptimization :: DatabaseExpr -> DatabaseState (Either RelationalError DatabaseExpr)
93applyStaticDatabaseOptimization :: DatabaseExpr -> DatabaseState (Either RelationalError DatabaseExpr)
94−applyStaticDatabaseOptimization (Define name attrs) = return $ Right (Define name attrs)
94+applyStaticDatabaseOptimization x@NoOperation = pure $ Right x
95+applyStaticDatabaseOptimization x@(Define _ _) = pure $ Right x
95
96
96−applyStaticDatabaseOptimization (Undefine name) = return $ Right (Undefine name)
97+applyStaticDatabaseOptimization x@(Undefine _) = pure $ Right x
97
98
98applyStaticDatabaseOptimization (Assign name expr) = do
99applyStaticDatabaseOptimization (Assign name expr) = do
99 optimizedExpr <- applyStaticRelationalOptimization expr
100 optimizedExpr <- applyStaticRelationalOptimization expr
TutorialD/Interpreter/DatabaseExpr.hs+4
@@ -29,6 +29,10 @@ databaseExprP = insertP
29 <|> removeNotificationP
29 <|> removeNotificationP
30 <|> addTypeConstructorP
30 <|> addTypeConstructorP
31 <|> removeTypeConstructorP
31 <|> removeTypeConstructorP
32+ <|> nothingP
33+
34+nothingP :: Parser DatabaseExpr
35+nothingP = (whiteSpace <* eof) >> pure NoOperation
32
36
33assignP :: Parser DatabaseExpr
37assignP :: Parser DatabaseExpr
34assignP = do
38assignP = do
TutorialD/Interpreter/Import/TutorialD.hs+1−1
@@ -17,7 +17,7 @@ importTutorialD pathIn = do
17 case tutdData of
17 case tutdData of
18 Left err -> return $ Left (ImportError $ T.pack (show err))
18 Left err -> return $ Left (ImportError $ T.pack (show err))
19 Right tutdData' -> do
19 Right tutdData' -> do
20− let dbexprsErr = map (parse databaseExprP "") (lines tutdData')
20+ let dbexprsErr = map (parse databaseExprP "import") (lines tutdData')
21 errs = lefts dbexprsErr
21 errs = lefts dbexprsErr
22 case errs of
22 case errs of
23 err2:_ -> return $ Left (ParseError (T.pack (show err2)))
23 err2:_ -> return $ Left (ParseError (T.pack (show err2)))
TutorialD/Interpreter/RelationalExpr.hs+1−1
@@ -23,7 +23,7 @@ makeRelationP :: Parser RelationalExpr
23makeRelationP = do
23makeRelationP = do
24 reserved "relation"
24 reserved "relation"
25 attrExprs <- try (liftA Just makeAttributeExprsP) <|> pure Nothing
25 attrExprs <- try (liftA Just makeAttributeExprsP) <|> pure Nothing
26− tupleExprs <- braces (sepBy tupleExprP comma)
26+ tupleExprs <- try (braces (sepBy tupleExprP comma)) <|> pure []
27 pure $ MakeRelationFromExprs attrExprs tupleExprs
27 pure $ MakeRelationFromExprs attrExprs tupleExprs
28
28
29--used in relation creation
29--used in relation creation