diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-11-06 22:23:49 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-11-06 22:23:49 +0100 |
| commit | 060496fc6ee331e2710ff8ade23317a0a79cbd6c (patch) | |
| tree | 9af7b8f8767449bea7ae9a76e244141118ae5e75 /lib/Language/Elna/Frontend/NameAnalysis.hs | |
| parent | e2d4b76c0bbad6c0740f5322e862a02971802e87 (diff) | |
| download | elna-060496fc6ee331e2710ff8ade23317a0a79cbd6c.tar.gz | |
Parse local variables
Diffstat (limited to 'lib/Language/Elna/Frontend/NameAnalysis.hs')
| -rw-r--r-- | lib/Language/Elna/Frontend/NameAnalysis.hs | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/lib/Language/Elna/Frontend/NameAnalysis.hs b/lib/Language/Elna/Frontend/NameAnalysis.hs index 89b1b3b..97a79e3 100644 --- a/lib/Language/Elna/Frontend/NameAnalysis.hs +++ b/lib/Language/Elna/Frontend/NameAnalysis.hs @@ -158,9 +158,9 @@ expression globalTable (AST.ProductExpression lhs rhs) expression globalTable (AST.DivisionExpression lhs rhs) = expression globalTable lhs >> expression globalTable rhs -{- expression globalTable (AST.VariableExpression variableExpression) = +expression globalTable (AST.VariableExpression variableExpression) = variableAccess globalTable variableExpression --} + statement :: SymbolTable -> AST.Statement -> NameAnalysis () statement _ AST.EmptyStatement = pure () statement globalTable (AST.CallStatement name arguments) @@ -172,9 +172,9 @@ statement globalTable (AST.IfStatement ifCondition ifStatement elseStatement) = condition globalTable ifCondition >> statement globalTable ifStatement >> maybe (pure ()) (statement globalTable) elseStatement --- statement globalTable (AST.AssignmentStatement lvalue rvalue) --- = variableAccess globalTable lvalue --- >> expression globalTable rvalue +statement globalTable (AST.AssignmentStatement lvalue rvalue) + = variableAccess globalTable lvalue + >> expression globalTable rvalue --statement globalTable (AST.WhileStatement whileCondition loop) -- = condition globalTable whileCondition -- >> statement globalTable loop @@ -198,13 +198,13 @@ condition globalTable (AST.LessOrEqualCondition lhs rhs) condition globalTable (AST.GreaterOrEqualCondition lhs rhs) = expression globalTable lhs >> expression globalTable rhs -{- + variableAccess :: SymbolTable -> AST.VariableAccess -> NameAnalysis () -variableAccess globalTable (AST.ArrayAccess arrayExpression indexExpression) - = variableAccess globalTable arrayExpression - >> expression globalTable indexExpression variableAccess globalTable (AST.VariableAccess identifier) = checkSymbol globalTable identifier +{- variableAccess globalTable (AST.ArrayAccess arrayExpression indexExpression) + = variableAccess globalTable arrayExpression + >> expression globalTable indexExpression enter :: Identifier -> Info -> SymbolTable -> NameAnalysis SymbolTable enter identifier info table @@ -216,9 +216,4 @@ identifierAlreadyDefinedError = NameAnalysis . lift . throwE . IdentifierAlreadyDefinedError - -variableDeclaration :: AST.VariableDeclaration -> NameAnalysis (Identifier, Info) -variableDeclaration (AST.VariableDeclaration identifier typeExpression) - = (identifier,) . VariableInfo False - <$> dataType typeExpression -} |
