Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Main where
- import qualified Parser
- import StringBuffer
- import Lexer
- import FastString
- import SrcLoc
- import DynFlags
- import StaticFlagParser
- import HscTypes
- import GHC
- import GHC.SYB.Utils
- import System
- import IO
- doParse infile dflags = do
- buf <- hGetStringBuffer infile
- let loc = mkSrcLoc (mkFastString infile) 1 0
- return $ unP Parser.parseModule (mkPState buf loc dflags)
- parseFile infile =
- defaultErrorHandler defaultDynFlags $
- {-defaultCleanupHandler $-}
- runGhc (Just "/usr/lib/ghc-6.10.2/") $ do
- hsc_env <- getSession
- let dflags0 = hsc_dflags hsc_env
- let dflags = dflags0{
- verbosity = 99
- }
- setSessionDynFlags dflags
- handleSourceError (\e -> do
- printExceptionAndWarnings e
- liftIO $ exitWith (ExitFailure 1)) $ do
- liftIO $ doParse infile dflags
- main :: IO ()
- main = do
- args <- getArgs
- let [infile, outfile] = args
- hSetBuffering stdout NoBuffering
- res <- parseFile infile
- case res of
- POk _ x -> bracket (openFile outfile WriteMode) hClose
- (\h -> hPutStrLn h $ showData Parser 2 x)
- PFailed loc err -> do hPutStrLn stderr $ "Failure when parsing " ++ show infile ++ ": " -- ++ show err
- {-exitWith (ExitFailure (-1))-}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement