This repository has been archived on 2024-04-05. You can view files and clone it, but cannot push or open issues/pull-requests.
2023-09-24 04:15:11 +00:00
|
|
|
{-# LANGUAGE ImportQualifiedPost #-}
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
|
2023-09-08 03:57:12 +00:00
|
|
|
module Main (main) where
|
|
|
|
|
2023-09-24 04:15:11 +00:00
|
|
|
import Data.Text.Lazy.IO qualified as T
|
|
|
|
import Eval.Expr
|
|
|
|
import LLVMGen.Expr
|
|
|
|
import Parser.Expr
|
2023-09-08 04:04:01 +00:00
|
|
|
import System.Environment
|
2023-09-24 04:15:11 +00:00
|
|
|
import Types.Expr
|
2023-09-07 22:24:45 +00:00
|
|
|
|
2023-09-08 05:53:11 +00:00
|
|
|
getRight :: ParseResult -> Expr
|
|
|
|
getRight (Right r) = r
|
|
|
|
|
2023-09-08 06:31:07 +00:00
|
|
|
getResult :: String -> Int
|
2023-09-24 04:15:11 +00:00
|
|
|
getResult str = evalExpr (getRight (parseExpr str)) -- TODO: add error messages
|
2023-09-08 05:53:11 +00:00
|
|
|
|
2023-09-24 04:15:11 +00:00
|
|
|
main :: IO ()
|
2023-09-08 03:57:12 +00:00
|
|
|
main = do
|
2023-09-08 06:31:07 +00:00
|
|
|
fileName <- fmap head getArgs
|
|
|
|
contents <- readFile fileName
|
|
|
|
let result = getResult contents
|
|
|
|
print result
|
2023-09-24 04:15:11 +00:00
|
|
|
T.putStrLn (getLLVMStr (getRight (parseExpr contents)))
|