packages feed

SableCC2Hs-0.0.0.2: haskell/Test2.hs

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