Sockeye: Add stub for net builder
authorDaniel Schwyn <schwyda@student.ethz.ch>
Fri, 7 Jul 2017 14:34:23 +0000 (16:34 +0200)
committerDaniel Schwyn <schwyda@student.ethz.ch>
Fri, 7 Jul 2017 14:34:23 +0000 (16:34 +0200)
Signed-off-by: Daniel Schwyn <schwyda@student.ethz.ch>

tools/sockeye/Main.hs
tools/sockeye/SockeyeNetBuilder.hs [new file with mode: 0644]

index dcbd88a..8df616b 100644 (file)
@@ -28,6 +28,8 @@ import SockeyeASTBackend as ASTB
 
 import SockeyeParser
 import SockeyeChecker
+import SockeyeNetBuilder
+
 import qualified SockeyeBackendPrintAST as PrintAST
 import qualified SockeyeBackendProlog as Prolog
 
@@ -43,7 +45,8 @@ parseError = ExitFailure 2
 checkError :: ExitCode
 checkError = ExitFailure 3
 
-
+buildError :: ExitCode
+buildError = ExitFailure 4
 
 {- Compilation targets -}
 data Target = None | PrintAST | Prolog
@@ -142,6 +145,15 @@ checkAST parsedAst = do
             exitWith checkError
         Right intermAst -> return intermAst
 
+{- Builds the decoding net from the Sockeye AST -}
+buildNet :: ASTI.SockeyeSpec -> IO ASTB.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 None     _   = return ""
@@ -160,8 +172,9 @@ main = do
     opts <- compilerOpts args
     let inFile = optInputFile opts
     parsedAst <- parseFile inFile
-    intermAst <- checkAST parsedAst
-    putStrLn $ groom intermAst
+    ast <- checkAST parsedAst
+    netAst <- buildNet ast
+    putStrLn $ groom netAst
     -- out <- compile (optTarget opts) ast
     -- output (optOutputFile opts) out
     
\ No newline at end of file
diff --git a/tools/sockeye/SockeyeNetBuilder.hs b/tools/sockeye/SockeyeNetBuilder.hs
new file mode 100644 (file)
index 0000000..6464a7e
--- /dev/null
@@ -0,0 +1,33 @@
+{-
+    SockeyeNetBuilder.hs: Decoding net builder for Sockeye
+
+    Part of Sockeye
+
+    Copyright (c) 2017, ETH Zurich.
+
+    All rights reserved.
+
+    This file is distributed under the terms in the attached LICENSE file.
+    If you do not find this file, copies can be found by writing to:
+    ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
+    Attn: Systems Group.
+-}
+
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FlexibleContexts #-}
+
+module SockeyeNetBuilder
+( sockeyeBuildNet ) where
+
+import qualified SockeyeASTIntermediate as ASTI
+import qualified SockeyeASTBackend as ASTB
+
+newtype CheckFailure = CheckFailure
+    { message :: String }
+
+instance Show CheckFailure where
+    show f = unlines $ ["", message f]
+
+sockeyeBuildNet :: ASTI.SockeyeSpec -> Either CheckFailure ASTB.NetSpec
+sockeyeBuildNet _ = Left $ CheckFailure "Net Builder not yet implemented"
\ No newline at end of file