@@ -13,6 +13,7 @@ import qualified Data.HashSet as HS
13import qualified Data.Map as M
13import qualified Data.Map as M
14import Control.Applicative ((<$), (<*), (*>), liftA, liftA2)
14import Control.Applicative ((<$), (<*), (*>), liftA, liftA2)
15import Control.Monad.State
15import Control.Monad.State
16+import System.Console.Readline
17lexer :: Token.TokenParser ()
18lexer :: Token.TokenParser ()
18lexer = Token.makeTokenParser tutD
19lexer = Token.makeTokenParser tutD
@@ -126,3 +127,15 @@ example9 = "relA := relation { SNO CHAR }"
126interpret :: RelVarContext -> String -> (Either RelationalError Relation, RelVarContext)
127interpret :: RelVarContext -> String -> (Either RelationalError Relation, RelVarContext)
127interpret context tutdstring = runState (eval (parseString tutdstring)) context
128interpret context tutdstring = runState (eval (parseString tutdstring)) context
130+reprLoop :: RelVarContext -> IO ()
131+reprLoop context = do
132+ maybeLine <- readline "TutorialD: "
134+ Nothing -> return ()
137+ case fst (interpret context line) of
138+ Right rel -> putStrLn $ show rel
139+ Left err -> putStrLn $ show err