diff options
author | Camil Staps | 2023-11-27 19:00:20 +0100 |
---|---|---|
committer | Camil Staps | 2023-11-27 19:00:20 +0100 |
commit | 5a3007ea91a3ee57a4fc3e34c0edd59a90b525c3 (patch) | |
tree | 3addc1233eb1e80657fa36b6599e3ebe3d097d88 /snug-clean/src/Snug/Compile.dcl | |
parent | Update 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.dcl | 14 |
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] |