git @ Cat's Eye Technologies Wagon / master src / Main.hs
master

Tree @master (Download .tar.gz)

Main.hs @masterraw · history · blame

-- Copyright (c) 2024, Chris Pressey, Cat's Eye Technologies.
-- This file is distributed under a 2-clause BSD license.  See LICENSES/ dir.
-- SPDX-License-Identifier: LicenseRef-BSD-2-Clause-X-Wagon

module Main where

import System.Environment
import System.Exit
import System.IO

import qualified Language.Wagon.ConcatEval as ConcatEval
import qualified Language.Wagon.SymInterp as SymInterp
import qualified Language.Wagon.Depict as Depict


main = do
    args <- getArgs
    case args of
        ["run", fileName] -> do
            text <- readFile fileName
            putStrLn $ show $ ConcatEval.run text
            return ()
        ["eval", fileName] -> do
            text <- readFile fileName
            putStrLn $ show $ SymInterp.run text
            return ()
        ["depict", fileName] -> do
            text <- readFile fileName
            putStrLn $ Depict.depict text
            return ()
        _ -> do
            abortWith "Usage: wagon (run|eval|depict) <wagon-program-text-filename>"

abortWith msg = do
    hPutStrLn stderr msg
    exitWith (ExitFailure 1)