content: module Main_bsc2bsv(main) where
  
  import System.Environment
  import qualified Control.Exception as CE
  
  import FStringCompat
  import Parse
  import Parser.Classic(pPackage, errSyntax)
  import PVPrint
  import CVPrint()
  import Lex
  import Error(internalError, showErrorList)
  
  main :: IO ()
  main =
      do args <- getArgs
         case args of
           [] -> getContents >>= bsc2bsv "-"
           [fn] -> readFile fn >>= bsc2bsv fn
           _ -> error "usage: bsc2bsv filename"
  
  bsc2bsv :: String -> String -> IO ()
  bsc2bsv filename text =
      do let lflags = LFlags { lf_is_stdlib = False,
                               lf_allow_sv_kws = True }
             tokens = lexStart lflags (mkFString filename) text
         case parse pPackage tokens of
           Left  (ss, tokens') -> let es = [errSyntax [s | s@(_:_) <- ss] tokens']
                                  in  CE.throw $ CE.ErrorCall (showErrorList es)
           Right ((package,_):_) ->
             putStrLn $ pvpReadable package
           Right [] -> internalError "bsc2bsv: parse succeeded with no packages"
  