module Main where import System.Environment import Parser2 import ParserTables import Data.Dynamic import SableAst import SableCC.ParserTypes import Control.DeepSeq main = do [fileName] <- getArgs ast <- parseFile fileName putStrLn $ take 1000 $ show ast parseFile :: FilePath -> IO ParseUnit parseFile bFile = do putStrLn "reading Source" src <- readFile bFile putStrLn "running Lexer and parser" let !lexerTokens = runLexer $ deepseq src src !parserTokens = trimTokens $ deepseq lexerTokens lexerTokens ast1 = runParser $ deepseq parserTokens parserTokens ast2:: ParseUnit ast2 = fromDNode ast1 return ast2 instance NFData LexTokenID instance NFData ParserTokenID