aboutsummaryrefslogtreecommitdiff
path: root/snug-clean/src/Snug/Compile.dcl
diff options
context:
space:
mode:
authorCamil Staps2023-11-27 19:00:20 +0100
committerCamil Staps2023-11-27 19:00:20 +0100
commit5a3007ea91a3ee57a4fc3e34c0edd59a90b525c3 (patch)
tree3addc1233eb1e80657fa36b6599e3ebe3d097d88 /snug-clean/src/Snug/Compile.dcl
parentUpdate to base 2.0 (diff)
WIP on code generation for case expressions
Diffstat (limited to 'snug-clean/src/Snug/Compile.dcl')
-rw-r--r--snug-clean/src/Snug/Compile.dcl14
1 files changed, 14 insertions, 0 deletions
diff --git a/snug-clean/src/Snug/Compile.dcl b/snug-clean/src/Snug/Compile.dcl
index 9ad66ff..ef223b8 100644
--- a/snug-clean/src/Snug/Compile.dcl
+++ b/snug-clean/src/Snug/Compile.dcl
@@ -1,5 +1,6 @@
definition module Snug.Compile
+from Control.Monad.State import :: StateT
from Data.Error import :: MaybeError
from Data.Map import :: Map
@@ -24,4 +25,17 @@ from Snug.Syntax import :: ConstructorDef, :: ConstructorIdent, :: Definition,
, type :: !Type
}
+:: CompileM a :== StateT CompileState (MaybeError String) a
+
+:: CompileState
+
+:: Locals :== Map SymbolIdent LocalLocation
+
+:: Local =
+ { location :: !LocalLocation
+ , type :: !Type
+ }
+
+:: LocalLocation
+
compile :: !Namespace ![Definition] -> MaybeError String [Line]