summaryrefslogtreecommitdiff
path: root/src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java
diff options
context:
space:
mode:
authorElias Haugsbakk <[email protected]>2026-09-20 23:54:32 +0200
committerElias Haugsbakk <[email protected]>2026-09-20 23:54:32 +0200
commit01c95f485b294db81f3c99a037e003929f0eb278 (patch)
treec20d059988fd728a8211d5feb70310a60db5db9e /src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java
parentc5009b0cf424b99ae6d27e14fdd21666500b21b8 (diff)
fix code warnings
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java')
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/semanticAnalysis/Analyzer.java34
1 files changed, 8 insertions, 26 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 -> {