Added Typchecker and Semantic analyzer

This commit is contained in:
Bruder John 2024-05-08 11:41:38 +02:00
parent d0448b01cd
commit 6e8079807a
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,29 @@
package semantic;
import parser.ASTNode;
import parser.ClassDeclarationNode;
import parser.ProgramNode;
import java.util.List;
public class SemanticAnalyzer {
public void analyze(ASTNode node) {
if (node == null) return;
if (node instanceof ClassDeclarationNode) {
ClassDeclarationNode classDeclarationNode = (ClassDeclarationNode) node;
if(classDeclarationNode.identifier == null){
System.out.println("Klasse besitzt keinen Identifier");
}
} else if (node instanceof ProgramNode) {
ProgramNode programNode = (ProgramNode) node;
List<ClassDeclarationNode> classes = programNode.classes;
for (ClassDeclarationNode classDeklarationNode: classes) {
analyze(classDeklarationNode);
}
}
}
}

View File

@ -0,0 +1,12 @@
package typechecker;
import parser.generated.SimpleJavaParser;
public class TypeChecker {
public Void visitYourExpression(SimpleJavaParser.ClassDeclarationContext ctx) {
// Hier kannst du die Art des Ausdrucks überprüfen und den entsprechenden Typ festlegen
// Beispiel: Wenn es sich um eine Zuweisung handelt, überprüfe den Typ des Ausdrucks auf der rechten Seite und überprüfe, ob er mit dem Typ der Variablen auf der linken Seite kompatibel ist.
return null;
}
}