aboutsummaryrefslogtreecommitdiff
path: root/src/main.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-03-16 14:15:42 +0100
committerCharles <sircharlesaze@gmail.com>2020-03-16 14:15:42 +0100
commit8c8f6155f1b05230c271059c52a503211aec872b (patch)
tree53626fa32ad3f6178b42a9dc5db588ee01277cd5 /src/main.hs
parentd17423cba7c15a26f835a6fa578ecb48b80d8aab (diff)
downloadcomputorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.gz
computorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.bz2
computorv2-8c8f6155f1b05230c271059c52a503211aec872b.zip
file Renaming, basic REPL
Diffstat (limited to 'src/main.hs')
-rw-r--r--src/main.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main.hs b/src/main.hs
new file mode 100644
index 0000000..34a190a
--- /dev/null
+++ b/src/main.hs
@@ -0,0 +1,25 @@
+import System.IO
+import Statement
+import Parser.Statement
+import Parser.Core
+
+
+main = do
+ line <- prompt
+ loop line
+
+loop :: String -> IO ()
+loop "exit" = return ()
+loop line = do s <- parseIO line
+ putStrLn $ show s
+ main
+
+prompt :: IO String
+prompt = do putStr "> "
+ hFlush stdout
+ getLine
+
+parseIO :: String -> IO Statement
+parseIO input = case parseStrict statementP input of
+ Nothing -> fail "Couldn't parse input"
+ Just s -> return s