Add stub for prolog backend
authorDaniel Schwyn <danielschwyn@gmail.com>
Wed, 17 May 2017 16:05:36 +0000 (18:05 +0200)
committerDaniel Schwyn <schwyda@student.ethz.ch>
Tue, 13 Jun 2017 12:21:16 +0000 (14:21 +0200)
Signed-off-by: Daniel Schwyn <schwyda@student.ethz.ch>

tools/sockeye2/Main.hs
tools/sockeye2/SockeyeBackendProlog.hs [new file with mode: 0644]

index 6ba1a24..cec1564 100644 (file)
@@ -24,9 +24,10 @@ import SockeyeAST as AST
 import SockeyeParser
 import SockeyeChecker
 import qualified SockeyeBackendPrintAST as PrintAST
+import qualified SockeyeBackendProlog as Prolog
 
 {- Compilation targets -}
-data Target = None | PrintAST
+data Target = None | PrintAST | Prolog
 
 {- Possible options for the Sockeye Compiler -}
 data Options = Options { optInputFile  :: FilePath
@@ -37,7 +38,7 @@ data Options = Options { optInputFile  :: FilePath
 {- Default options -}
 defaultOptions :: Options
 defaultOptions = Options { optInputFile  = ""
-                         , optTarget     = PrintAST
+                         , optTarget     = Prolog
                          , optOutputFile = Nothing
                          }
 
@@ -65,20 +66,23 @@ usage errors = do
 {- Setup option parser -}
 options :: [OptDescr (Options -> IO Options)]
 options = 
-    [ Option "A" ["ast"]
+    [ 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 (default)"
-    , Option "C" ["check"]
+        "Print the AST."
+    , Option "C" ["Check"]
         (NoArg (\opts -> return $ optSetTarget None opts))
-        "Just check the file, do not compile"
+        "Just check the file, do not compile."
     , Option "o" ["output-file"]
         (ReqArg (\f opts -> return $ optSetOutputFile (Just f) opts) "FILE")
-        "If no output file is specified the compilation result is written to stdout"
+        "If no output file is specified the compilation result is written to stdout."
     , Option "h" ["help"]
         (NoArg (\_ -> do
                     usage []
                     exitWith ExitSuccess))
-        "Show help"
+        "Show help."
     ]
 
 {- evaluates the compiler options -}
@@ -126,6 +130,7 @@ checkAST ast = do
 compile :: Target -> AST.NetSpec -> IO String
 compile None     _   = return ""
 compile PrintAST ast = return $ PrintAST.compile ast
+compile Prolog   ast = return $ Prolog.compile ast
 
 {- Outputs the compilation result -}
 output :: Maybe FilePath -> String -> IO ()
diff --git a/tools/sockeye2/SockeyeBackendProlog.hs b/tools/sockeye2/SockeyeBackendProlog.hs
new file mode 100644 (file)
index 0000000..18dc057
--- /dev/null
@@ -0,0 +1,22 @@
+{-
+  SockeyeBackendProlog.hs: Backend for generating Prolog facts 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.
+-}
+
+module SockeyeBackendProlog
+( compile ) where
+
+import qualified SockeyeAST as AST
+
+compile :: AST.NetSpec -> String
+compile _ = "Prolog backend is under construction..."