@@ -1,35 +0,0 @@
1−module TutorialD.Interpreter.DataTypes.Interval where
2−import Text.Parsec
3−import Text.Parsec.String
4−import ProjectM36.Base hiding (Finite)
5−import ProjectM36.DataTypes.Interval ()
6−import TutorialD.Interpreter.Base
7−import TutorialD.Interpreter.DataTypes.DateTime
8−import Data.Interval
9−import Data.Time.Clock
10−
11−intervalP :: (Ord a) => Parser (Extended a) -> Parser (Interval a)
12−intervalP unitP = do
13− lBoundClosed <- string "(" *> return False <|>
14− string "[" *> return True
15− lBound <- unitP
16− reservedOp ","
17− uBound <- unitP
18−
19− uBoundClosed <- string ")" *> return False <|>
20− string "]" *> return True
21−
22− return $ interval (lBound, lBoundClosed) (uBound, uBoundClosed)
23−
24−intervalDateTimeUnitP :: Parser (Extended UTCTime)
25−intervalDateTimeUnitP = Finite <$> dateTimeStringP <|>
26− (reserved "inf" *> return PosInf) <|>
27− (reserved "-inf" *> return NegInf)
28−
29−intervalDateTimeAtomP :: Parser Atom
30−intervalDateTimeAtomP = do
31− reserved "interval_datetime("
32− intv <- intervalP intervalDateTimeUnitP
33− reserved ")"
34− return $ Atom intv
35−