Endabgabe #20

Merged
i22035 merged 137 commits from Endabgabe into main 2024-07-05 11:59:47 +00:00
35 changed files with 32 additions and 8 deletions
Showing only changes of commit dbde4e8047 - Show all commits

View File

@ -4,5 +4,6 @@ public enum TypeEnum {
VOID,
INT,
CHAR,
BOOL
BOOL,
NULL
}

View File

@ -254,6 +254,11 @@ public class SemanticAnalyzer implements SemanticVisitor {
return new TypeCheckResult(true, type);
} else if (currentScope.getLocalVar(toCheck.identifier) != null) {
var type = currentScope.getLocalVar(toCheck.identifier);
MemberAccessNode memberAccessNode = new MemberAccessNode(false);
memberAccessNode.identifiers.add(currentClass.identifier);
memberAccessNode.identifiers.add(toCheck.identifier);
toCheck.memberAccess = memberAccessNode;
toCheck.setTypeNode(type);
return new TypeCheckResult(true, type);
}
}
@ -328,7 +333,16 @@ public class SemanticAnalyzer implements SemanticVisitor {
if (toCheck.target != null) {
if(toCheck.target.memberAccess == null){
MemberAccessNode memberAccessNode = new MemberAccessNode(false);
memberAccessNode.identifiers.add(currentClass.identifier);
var identifierType = currentFields.get(toCheck.target.identifier);
if(identifierType == null){
identifierType = currentScope.getLocalVar(toCheck.target.identifier);
}
if(identifierType instanceof ReferenceType referenceType){
memberAccessNode.identifiers.add(referenceType.getIdentifier());
} else {
memberAccessNode.identifiers.add(currentClass.identifier);
}
memberAccessNode.identifiers.add(toCheck.target.identifier);
toCheck.target.memberAccess = memberAccessNode;
}
@ -688,6 +702,9 @@ public class SemanticAnalyzer implements SemanticVisitor {
case BOOLEAN_VALUE -> {
return new TypeCheckResult(true, new BaseType(TypeEnum.BOOL));
}
case NULL_VALUE -> {
return new TypeCheckResult(true, currentNullType);
}
default -> {
return new TypeCheckResult(false, null);
}

View File

@ -1,8 +1,14 @@
public class If {
public If() {
int intValue = 5;
if(intValue == 5) {
intValue--;
}
public class Class1 {
public int test(){
Class2 class2 = new Class2();
int a = class2.test();
return a;
}
}
public class Class2
{
public int test(){
return 6+2*2;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.