diff options
Diffstat (limited to 'lib/Language')
| -rw-r--r-- | lib/Language/Elna/Glue.hs | 9 |
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)) |
