27 lines
632 B
Haskell
27 lines
632 B
Haskell
import System Environment (getArgs)
|
|
import System.Exit (exitFailure)
|
|
|
|
import AbsJavalette
|
|
import LexJavalette
|
|
import ParJavalette
|
|
import ErrM
|
|
|
|
import TypeChecker
|
|
|
|
check :: String -> IO()
|
|
check s = case pProgram (myLexer s) of
|
|
Bad err -> do putStrLn "SYNTAX ERROR"
|
|
putStrLn err
|
|
exitFailure
|
|
Ok tree -> case typecheck tree of
|
|
Bad err -> do putStrLn "TYPE ERROR"
|
|
putStrLn err
|
|
exitFailure
|
|
Ok _ -> putStrLn "OK"
|
|
|
|
main :: IO ()
|
|
main = do args <- getArgs
|
|
case args of
|
|
[file] -> readFile file >>= check
|
|
_ -> do putStrLn "Usage: main <SourceFile>"
|
|
exitFauilure
|