summaryrefslogtreecommitdiff
path: root/src/Transfer/CompilerAPI.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-26 21:05:50 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-26 21:05:50 +0000
commita1da4b7c4808b3da1a0dba5a85b5e35134d9222c (patch)
treee4210dc3161ffa1114ad77431458a7a4b1529956 /src/Transfer/CompilerAPI.hs
parentfb1d9b7d2c3c8261fc5a2ce3698e6749458b207a (diff)
removed Transfer interpreter
Diffstat (limited to 'src/Transfer/CompilerAPI.hs')
-rw-r--r--src/Transfer/CompilerAPI.hs75
1 files changed, 0 insertions, 75 deletions
diff --git a/src/Transfer/CompilerAPI.hs b/src/Transfer/CompilerAPI.hs
deleted file mode 100644
index 38cb58dd0..000000000
--- a/src/Transfer/CompilerAPI.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-module Transfer.CompilerAPI where
-
-import Transfer.Syntax.Lex
-import Transfer.Syntax.Par
-import Transfer.Syntax.Print
-import Transfer.Syntax.Abs
-import Transfer.Syntax.Layout
-
-import Transfer.ErrM
-import Transfer.SyntaxToCore
-
-import Transfer.PathUtil
-
-import Data.List
-import System.Directory
-
-
--- | Compile a source module file to a a code file.
-compileFile :: [FilePath] -- ^ directories to look for imported modules in
- -> FilePath -- ^ source module file
- -> IO FilePath -- ^ path to the core file that was written
-compileFile path f = do
- ds <- loadModule path f
- s <- compile ds
- writeFile coreFile s
- return coreFile
- where coreFile = replaceFilenameSuffix f "trc"
-
--- | Compile a self-contained list of declarations to a core program.
-compile :: Monad m => [Decl] -> m String
-compile m = return (printTree $ declsToCore m)
-
--- | Load a source module file and all its dependencies.
-loadModule :: [FilePath] -- ^ directories to look for imported modules in
- -> FilePath -- ^ source module file
- -> IO [Decl]
-loadModule = loadModule_ []
- where
- loadModule_ ms path f =
- do
- s <- readFile f
- Module is ds <- case pModule (myLLexer s) of
- Bad e -> fail $ "Parse error in " ++ f ++ ": " ++ e
- Ok m -> return m
- let load = [ i | Import (Ident i) <- is ] \\ ms
- let path' = directoryOf f : path
- files <- mapM (findFile path' . (++".tra")) load
- dss <- mapM (loadModule_ (load++ms) path) files
- return $ concat (dss++[ds])
-
-myLLexer :: String -> [Token]
-myLLexer = resolveLayout True . myLexer
-
--- | Find a file in one of the given directories.
--- Fails if the file was not found.
-findFile :: [FilePath] -- ^ directories to look in
- -> FilePath -- ^ file name to find
- -> IO FilePath
-findFile path f =
- do
- mf <- findFileM path f
- case mf of
- Nothing -> fail $ f ++ " not found in path: " ++ show path
- Just f' -> return f'
-
--- | Find a file in one of the given directories.
-findFileM :: [FilePath] -- ^ directories to look in
- -> FilePath -- ^ file name to find
- -> IO (Maybe FilePath)
-findFileM [] _ = return Nothing
-findFileM (p:ps) f =
- do
- let f' = p ++ "/" ++ f
- e <- doesFileExist f'
- if e then return (Just f') else findFileM ps f