From b1209b335370f9476758f3434a90b54442bdead0 Mon Sep 17 00:00:00 2001 From: Samuel Hammersberg Date: Fri, 24 Mar 2023 17:13:56 +0100 Subject: [PATCH] Updated the monomorphizer to the new tree. --- sample-programs/basic-1 | 13 +++---- src/Main.hs | 55 +++++++++++++--------------- src/Monomorphizer/Monomorphizer.hs | 2 +- src/Monomorphizer/MonomorphizerIr.hs | 4 +- 4 files changed, 34 insertions(+), 40 deletions(-) diff --git a/sample-programs/basic-1 b/sample-programs/basic-1 index a2531b0..f28dc2f 100644 --- a/sample-programs/basic-1 +++ b/sample-programs/basic-1 @@ -1,8 +1,5 @@ -posMul: _Int - > _Int - > _Int; -posMul a b = a + b; { - - - case b of { - 0 => 0; - _ => a + posMul a(b - 1) - }; - -} \ No newline at end of file +add : Int -> Int -> Int ; +add x y = x + y; + +main : Int ; +main = add 4 6 ; diff --git a/src/Main.hs b/src/Main.hs index 7ae149b..9f81671 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -2,30 +2,27 @@ module Main where --- import Codegen.Codegen (generateCode) -import GHC.IO.Handle.Text (hPutStrLn) -import Grammar.ErrM (Err) -import Grammar.Par (myLexer, pProgram) -import Grammar.Print (printTree) +import Codegen.Codegen (generateCode) +import GHC.IO.Handle.Text (hPutStrLn) +import Grammar.ErrM (Err) +import Grammar.Par (myLexer, pProgram) +import Grammar.Print (printTree) --- import Monomorphizer.Monomorphizer (monomorphize) +import Monomorphizer.Monomorphizer (monomorphize) -import Control.Monad (when) -import Data.List.Extra (isSuffixOf) +import Control.Monad (when) +import Data.List.Extra (isSuffixOf) -import Renamer.Renamer (rename) -import System.Directory ( - createDirectory, - doesPathExist, - getDirectoryContents, - removeDirectoryRecursive, - setCurrentDirectory, - ) -import System.Environment (getArgs) -import System.Exit (exitFailure, exitSuccess) -import System.IO (stderr) -import System.Process.Extra (spawnCommand, waitForProcess) -import TypeChecker.TypeChecker (typecheck) +import Renamer.Renamer (rename) +import System.Directory (createDirectory, doesPathExist, + getDirectoryContents, + removeDirectoryRecursive, + setCurrentDirectory) +import System.Environment (getArgs) +import System.Exit (exitFailure, exitSuccess) +import System.IO (stderr) +import System.Process.Extra (spawnCommand, waitForProcess) +import TypeChecker.TypeChecker (typecheck) main :: IO () main = @@ -50,18 +47,18 @@ main' debug s = do typechecked <- fromTypeCheckerErr $ typecheck renamed printToErr $ printTree typechecked - -- printToErr "\n-- Lambda Lifter --" + printToErr "\n-- Lambda Lifter --" -- let lifted = lambdaLift typechecked -- printToErr $ printTree lifted -- - -- printToErr "\n -- Printing compiler output to stdout --" - -- compiled <- fromCompilerErr $ generateCode (monomorphize typechecked) - -- putStrLn compiled + printToErr "\n -- Printing compiler output to stdout --" + compiled <- fromCompilerErr $ generateCode (monomorphize typechecked) + putStrLn compiled - -- check <- doesPathExist "output" - -- when check (removeDirectoryRecursive "output") - -- createDirectory "output" - -- writeFile "output/llvm.ll" compiled + check <- doesPathExist "output" + when check (removeDirectoryRecursive "output") + createDirectory "output" + writeFile "output/llvm.ll" compiled -- if debug then debugDotViz else putStrLn compiled -- interpred <- fromInterpreterErr $ interpret lifted diff --git a/src/Monomorphizer/Monomorphizer.hs b/src/Monomorphizer/Monomorphizer.hs index 70483ad..1b1d2f6 100644 --- a/src/Monomorphizer/Monomorphizer.hs +++ b/src/Monomorphizer/Monomorphizer.hs @@ -39,7 +39,7 @@ monoAbsType (GA.TVar _v) = error "NOT POLYMORHPIC TYPES" monoAbsType (GA.TAll _v _t) = error "NOT ALL TYPES" monoAbsType (GA.TEVar _v) = error "I DONT KNOW WHAT THIS IS" monoAbsType (GA.TFun t1 t2) = M.TFun (monoAbsType t1) (monoAbsType t2) -monoAbsType (GA.TIndexed _) = error "NOT INDEXED TYPES" +monoAbsType (GA.TData _ _) = error "NOT INDEXED TYPES" monoType :: T.Type -> M.Type monoType (T.TAll _ t) = monoType t diff --git a/src/Monomorphizer/MonomorphizerIr.hs b/src/Monomorphizer/MonomorphizerIr.hs index e4c4bad..6214cdc 100644 --- a/src/Monomorphizer/MonomorphizerIr.hs +++ b/src/Monomorphizer/MonomorphizerIr.hs @@ -1,7 +1,7 @@ module Monomorphizer.MonomorphizerIr (module Monomorphizer.MonomorphizerIr, module RE, module GA) where -import Grammar.Abs (Ident (..), Init (..), UIdent) -import qualified Grammar.Abs as GA (Ident (..), Init (..)) +import Grammar.Abs (Ident (..), UIdent) +import qualified Grammar.Abs as GA (Ident (..)) import qualified TypeChecker.TypeCheckerIr as RE type Id = (Ident, Type)