@@ -25,6 +25,9 @@ import Idris.Primitives
25import Idris.Imports
25import Idris.Imports
26import Idris.Error
26import Idris.Error
28import Paths_idris
31import Paths_idris
30-- Main program reads command line options, parses the main program, and gets
33-- Main program reads command line options, parses the main program, and gets
@@ -43,6 +46,7 @@ runIdris opts =
43 let ibcsubdir = opt getIBCSubDir opts
46 let ibcsubdir = opt getIBCSubDir opts
44 let importdirs = opt getImportDir opts
47 let importdirs = opt getImportDir opts
45 let bcs = opt getBC opts
48 let bcs = opt getBC opts
49+ let vm = opt getFOVM opts
47 when (Ver `elem` opts) $ liftIO showver
51 when (Ver `elem` opts) $ liftIO showver
48 when (Usage `elem` opts) $ liftIO usage
52 when (Usage `elem` opts) $ liftIO usage
@@ -52,6 +56,10 @@ runIdris opts =
52 setVerbose runrepl
56 setVerbose runrepl
53 when (Verbose `elem` opts) $ setVerbose True
57 when (Verbose `elem` opts) $ setVerbose True
54 mapM_ makeOption opts
58 mapM_ makeOption opts
59+ -- if we have the --fovm flag, drop into the first order VM testing
62+ xs -> liftIO $ mapM_ fovm xs
55 -- if we have the --bytecode flag, drop into the bytecode assembler
63 -- if we have the --bytecode flag, drop into the bytecode assembler
56 case bcs of
64 case bcs of
57 [] -> return ()
65 [] -> return ()
@@ -92,6 +100,10 @@ getBC :: Opt -> Maybe String
92getBC (BCAsm str) = Just str
100getBC (BCAsm str) = Just str
93getBC _ = Nothing
101getBC _ = Nothing
103+getFOVM :: Opt -> Maybe String
104+getFOVM (FOVM str) = Just str
95getOutput :: Opt -> Maybe String
107getOutput :: Opt -> Maybe String
96getOutput (Output str) = Just str
108getOutput (Output str) = Just str
97getOutput _ = Nothing
109getOutput _ = Nothing
@@ -144,6 +156,7 @@ parseArgs ("--verbose":ns) = liftM (Verbose : ) (parseArgs ns)
144parseArgs ("--ibcsubdir":n:ns) = liftM (IBCSubDir n : ) (parseArgs ns)
156parseArgs ("--ibcsubdir":n:ns) = liftM (IBCSubDir n : ) (parseArgs ns)
145parseArgs ("-i":n:ns) = liftM (ImportDir n : ) (parseArgs ns)
157parseArgs ("-i":n:ns) = liftM (ImportDir n : ) (parseArgs ns)
146parseArgs ("--bytecode":n:ns) = liftM (\x -> NoREPL : BCAsm n : x) (parseArgs ns)
158parseArgs ("--bytecode":n:ns) = liftM (\x -> NoREPL : BCAsm n : x) (parseArgs ns)
159+parseArgs ("--fovm":n:ns) = liftM (\x -> NoREPL : FOVM n : x) (parseArgs ns)
147parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
160parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
149ver = showVersion version
162ver = showVersion version