Sockeye: Remove debug imports
[barrelfish] / tools / sockeye / Main.hs
index 7846418..c93cf21 100644 (file)
@@ -22,16 +22,15 @@ import System.Exit
 import System.Environment
 import System.IO
 
-import SockeyeASTFrontend as ASTF
-import SockeyeASTIntermediate as ASTI
-import SockeyeASTBackend as ASTB
+import qualified SockeyeASTParser as ParseAST
+import qualified SockeyeAST as AST
+import qualified SockeyeASTDecodingNet as NetAST
 
 import SockeyeParser
 import SockeyeChecker
-import qualified SockeyeBackendPrintAST as PrintAST
-import qualified SockeyeBackendProlog as Prolog
+import SockeyeNetBuilder
 
-import Text.Groom(groom)
+import qualified SockeyeBackendProlog as Prolog
 
 {- Exit codes -}
 usageError :: ExitCode
@@ -43,10 +42,11 @@ parseError = ExitFailure 2
 checkError :: ExitCode
 checkError = ExitFailure 3
 
-
+buildError :: ExitCode
+buildError = ExitFailure 4
 
 {- Compilation targets -}
-data Target = None | PrintAST | Prolog
+data Target = None | Prolog
 
 {- Possible options for the Sockeye Compiler -}
 data Options = Options { optInputFile  :: FilePath
@@ -88,9 +88,6 @@ options =
     [ Option "P" ["Prolog"]
         (NoArg (\opts -> return $ optSetTarget Prolog opts))
         "Generate a prolog file that can be loaded into the SKB (default)."
-    , Option "A" ["AST"]
-        (NoArg (\opts -> return $ optSetTarget PrintAST opts))
-        "Print the AST."
     , Option "C" ["Check"]
         (NoArg (\opts -> return $ optSetTarget None opts))
         "Just check the file, do not compile."
@@ -124,7 +121,7 @@ compilerOpts argv =
             exitWith $ usageError
 
 {- Runs the parser -}
-parseFile :: FilePath -> IO (ASTF.SockeyeSpec)
+parseFile :: FilePath -> IO (ParseAST.SockeyeSpec)
 parseFile file = do
     src <- readFile file
     case parseSockeye file src of
@@ -134,19 +131,26 @@ parseFile file = do
         Right ast -> return ast
 
 {- Runs the checker -}
-checkAST :: ASTF.SockeyeSpec -> IO ASTI.SockeyeSpec
+checkAST :: ParseAST.SockeyeSpec -> IO AST.SockeyeSpec
 checkAST parsedAst = do
     case checkSockeye parsedAst of 
         Left fail -> do
-            hPutStrLn stderr $ "Checks failed:"
             hPutStr stderr $ show fail
             exitWith checkError
         Right intermAst -> return intermAst
 
+{- Builds the decoding net from the Sockeye AST -}
+buildNet :: AST.SockeyeSpec -> IO NetAST.NetSpec
+buildNet ast = do
+    case sockeyeBuildNet ast of 
+        Left fail -> do
+            hPutStr stderr $ show fail
+            exitWith buildError
+        Right netAst -> return netAst
+
 {- Compiles the AST with the appropriate backend -}
-compile :: Target -> ASTB.NetSpec -> IO String
+compile :: Target -> NetAST.NetSpec -> IO String
 compile None     _   = return ""
-compile PrintAST ast = return $ PrintAST.compile ast
 compile Prolog   ast = return $ Prolog.compile ast
 
 {- Outputs the compilation result -}
@@ -161,8 +165,8 @@ main = do
     opts <- compilerOpts args
     let inFile = optInputFile opts
     parsedAst <- parseFile inFile
-    intermAst <- checkAST parsedAst
-    putStrLn $ groom intermAst
-    -- out <- compile (optTarget opts) ast
-    -- output (optOutputFile opts) out
+    ast <- checkAST parsedAst
+    netAst <- buildNet ast
+    out <- compile (optTarget opts) netAst
+    output (optOutputFile opts) out
     
\ No newline at end of file