diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-03-27 16:32:44 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-03-27 16:32:44 +0000 |
| commit | 1c1acf1b971d13a496a92b9d8d6b14fde85e28f3 (patch) | |
| tree | 7fc40594193cbf6435feb5425ee2e4feb2652d32 /devel/compiler/Top.hs | |
| parent | 273dc7120f9ce0b469dc081d6a3382f096a4f97b (diff) | |
top-level toy compiler - far from complete
Diffstat (limited to 'devel/compiler/Top.hs')
| -rw-r--r-- | devel/compiler/Top.hs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/devel/compiler/Top.hs b/devel/compiler/Top.hs new file mode 100644 index 000000000..64a8a6f70 --- /dev/null +++ b/devel/compiler/Top.hs @@ -0,0 +1,34 @@ +module Main where + +import IO ( stdin, hGetContents ) +import System ( getArgs, getProgName ) + +import LexSrc +import ParSrc +import SkelSrc +import PrintSrc +import AbsSrc + +import Compile +import PrEnv + +import ErrM + +type ParseFun a = [Token] -> Err a + +myLLexer = myLexer + +runFile :: ParseFun Grammar -> FilePath -> IO () +runFile p f = readFile f >>= run p + +run :: ParseFun Grammar -> String -> IO () +run p s = let ts = myLLexer s in case p ts of + Bad s -> do putStrLn "Parse Failed...\n" + putStrLn s + Ok tree -> prEnv $ compile tree + +main :: IO () +main = do args <- getArgs + case args of + fs -> mapM_ (runFile pGrammar) fs + |
