summaryrefslogtreecommitdiff
path: root/lib/Language
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Language')
-rw-r--r--lib/Language/Elna/Glue.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Language/Elna/Glue.hs b/lib/Language/Elna/Glue.hs
index 79ae461..f5bd005 100644
--- a/lib/Language/Elna/Glue.hs
+++ b/lib/Language/Elna/Glue.hs
@@ -72,8 +72,9 @@ declaration
-> AST.Declaration
-> Glue (Maybe (AST.Identifier, Vector (Quadruple Variable)))
declaration globalTable (AST.ProcedureDeclaration procedureName parameters variableDeclarations statements)
- = traverseWithIndex registerVariable variableDeclarations
- >> traverseWithIndex registerParameter parameters
+ = Glue (modify' resetTemporaryCounter)
+ >> traverseWithIndex registerVariable variableDeclarations
+ >> traverseWithIndex registerParameter (reverse parameters)
>> nameQuadruplesTuple <$> traverse (statement globalTable) statements
where
traverseWithIndex f = traverse_ (uncurry f) . zip [0..]
@@ -91,6 +92,10 @@ declaration globalTable (AST.ProcedureDeclaration procedureName parameters varia
$ flip Vector.snoc StopQuadruple
$ fold quadrupleList
)
+ resetTemporaryCounter paste = paste
+ { temporaryCounter = 0
+ , localMap = mempty
+ }
declaration _ (AST.TypeDefinition _ _) = pure Nothing
statement :: SymbolTable -> AST.Statement -> Glue (Vector (Quadruple Variable))