content: import Language.Python.Common
  import Language.Python.Version2 as V2
  import Language.Python.Version3 as V3
  import System.Exit
  import System.Environment
  
  data PythonVersion = Two | Three
     deriving (Eq, Show)
  
  type Parser = String -> String -> Either ParseError (ModuleSpan, [Token])
  
  main :: IO ()
  main = do
     args <- getArgs
     case args of
        (versionStr:inFile:_rest) ->
           case parseVersion versionStr of
              Nothing -> do
                 putStrLn $ "Unknown Python version: " ++ versionStr
                 exitFailure
              Just version -> do
                 contents <- readFile inFile
                 let parser = pickParser version
                 case parseAndPretty parser inFile contents of
                    Left error -> putStrLn $ prettyText error
                    Right ast -> putStrLn $ prettyText ast 
        _other -> putStrLn "Incorrect command line. Expected: <2|3|n> inputFileName"
  
  pickParser :: PythonVersion -> Parser
  pickParser Two = V2.parseModule
  pickParser Three = V3.parseModule
  
  parseAndPretty :: Parser -> FilePath -> String -> Either ParseError ModuleSpan
  parseAndPretty parser fileName contents =
     case parser contents fileName of
        Left e -> Left e
        Right (ast, _comments) -> Right ast
  
  parseVersion :: String -> Maybe PythonVersion
  parseVersion "2" = Just Two
  parseVersion "3" = Just Three
  parseVersion _other = Nothing
  