packages feed

Aurochs-0.1: Aurochs.hs

import Prelude hiding (lookup)
import Text.ParserCombinators.Parsec
import Control.Monad
import System.Environment
import System.IO
import Data.Map
import Data
import Parse
import Gen

aurochs source cs = case parse parseAurochs source cs of
                      Right (header, table, name, gs, extra) -> Right $ genProg header table name gs extra
                      Left err -> Left err

main = do args <- getArgs
          if length args < 2
           then do print "Argument format error, correct usage: aurochs (output) (input)"
                   return ()
           else do let (output : input : _) = args
                   o <- openFile output WriteMode
                   i <- openFile input ReadMode
                   cs <- hGetContents i
                   case aurochs input cs of
                     Right doc -> hPutStr o (show doc)
                     Left err -> print err
                   hClose i
                   hClose o
                   return ()