diff options
| author | Elias Haugsbakk <[email protected]> | 2026-09-20 23:54:32 +0200 |
|---|---|---|
| committer | Elias Haugsbakk <[email protected]> | 2026-09-20 23:54:32 +0200 |
| commit | 01c95f485b294db81f3c99a037e003929f0eb278 (patch) | |
| tree | c20d059988fd728a8211d5feb70310a60db5db9e /src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis | |
| parent | c5009b0cf424b99ae6d27e14fdd21666500b21b8 (diff) | |
fix code warnings
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis')
| -rw-r--r-- | src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java | 34 | ||||
| -rw-r--r-- | src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Symbol.java | 2 |
2 files changed, 9 insertions, 27 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java b/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java index 7d301ed..3c775d6 100644 --- a/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java +++ b/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java @@ -16,14 +16,14 @@ import no.eliashaugsbakk.kompilator.parsing.node.statement.Statement; public class Analyzer { private final AST ast; - private Map<String, Symbol> symbolTable = new HashMap<>(); + private final Map<String, Symbol> symbolTable = new HashMap<>(); public Analyzer(AST ast) { this.ast = ast; } public void analyze() throws SemanticException { - Program program = (Program) ast.getRoot(); + Program program = (Program) ast.root(); for (Statement stmt : program.statements) { analyzeStatement(stmt); @@ -31,14 +31,11 @@ public class Analyzer { } private void analyzeStatement(Statement stmt) throws SemanticException { - if (stmt instanceof ExpressionStatement exprStmt) { - typeOf(exprStmt.expression); - } else if (stmt instanceof Assignment assignment) { - analyzeAssignment(assignment); - } else if (stmt instanceof IdentifierDeclaration decl) { - analyzeIdentifierDeclaration(decl); - } else { - throw new SemanticException("Unrecognized statement"); + switch (stmt) { + case ExpressionStatement exprStmt -> typeOf(exprStmt.expression); + case Assignment assignment -> analyzeAssignment(assignment); + case IdentifierDeclaration decl -> analyzeIdentifierDeclaration(decl); + case null, default -> throw new SemanticException("Unrecognized statement"); } } @@ -103,21 +100,6 @@ public class Analyzer { } /** - * Analyzes identifier usage (variable reference). - */ - private void analyzeIdentifier(Identifier identifier) throws SemanticException { - // Check if identifier is declared - if (!symbolTable.containsKey(identifier.name)) { - throw new SemanticException("Identifier does not exist: " + identifier.name); - } - - // Check if identifier is initialized - if (!symbolTable.get(identifier.name).initialized) { - throw new SemanticException("Identifier is not initialized: " + identifier.name); - } - } - - /** * Analyzes function call. */ private void analyzeFunctionCall(FunctionCall call) throws SemanticException { @@ -165,7 +147,7 @@ public class Analyzer { private Type typeOf(Expression expr) throws SemanticException { switch (expr) { case null -> throw new SemanticException("Expression cannot be null"); - case StringLiteral stringLiteral -> { + case StringLiteral _ -> { return new Type("string", false); } case Identifier id -> { diff --git a/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Symbol.java b/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Symbol.java index c86d2f7..425f639 100644 --- a/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Symbol.java +++ b/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Symbol.java @@ -5,7 +5,7 @@ import no.eliashaugsbakk.kompilator.parsing.Type; class Symbol { final String name; final Type type; - boolean mutable; + final boolean mutable; boolean initialized; Symbol(String name, Type type, boolean mutable, boolean initialized) { |
