From 302b907d36a07770b90221eccdb9f4e8b1cfd55e Mon Sep 17 00:00:00 2001 From: Jochen Seyfried Date: Thu, 4 Jul 2024 19:00:28 +0200 Subject: [PATCH] Code cleanup Deleted imports and comments, fixed warnings and typos --- .idea/misc.xml | 6 ++++- .../abstractSyntaxTree/Class/FieldDecl.java | 1 - .../abstractSyntaxTree/Class/MethodDecl.java | 2 -- .../abstractSyntaxTree/Class/RefType.java | 1 - .../Datatype/BoolDatatype.java | 1 - .../Expression/BinaryExpression.java | 1 - .../Expression/BooleanConstantExpression.java | 2 -- .../Expression/InstVarExpression.java | 23 ++++++------------- .../Expression/LocalVarIdentifier.java | 2 -- .../Statement/BlockStatement.java | 4 +--- .../Statement/EmptyStatement.java | 3 +-- .../Statement/IfElseStatement.java | 1 - .../Statement/IfStatement.java | 1 - .../Statement/LocalVarDecl.java | 3 +-- .../Statement/ReturnStatement.java | 1 - .../Statement/WhileStatement.java | 1 - .../AssignStatementExpression.java | 3 +-- .../MethodCallStatementExpression.java | 10 +++----- .../NewStatementExpression.java | 2 -- .../StatementExpression/Receiver.java | 9 +------- .../StatementExpression/ReceivingMethod.java | 1 - 21 files changed, 20 insertions(+), 58 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index aec221f..2f37bd2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -24,7 +24,11 @@ - + + + \ No newline at end of file diff --git a/src/main/java/abstractSyntaxTree/Class/FieldDecl.java b/src/main/java/abstractSyntaxTree/Class/FieldDecl.java index 1d03201..85cc63e 100644 --- a/src/main/java/abstractSyntaxTree/Class/FieldDecl.java +++ b/src/main/java/abstractSyntaxTree/Class/FieldDecl.java @@ -7,7 +7,6 @@ import TypeCheck.TypeCheckHelper; import TypeCheck.TypeCheckResult; import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Node; -import abstractSyntaxTree.Program; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.Opcodes; diff --git a/src/main/java/abstractSyntaxTree/Class/MethodDecl.java b/src/main/java/abstractSyntaxTree/Class/MethodDecl.java index 0d0b270..88f76cf 100644 --- a/src/main/java/abstractSyntaxTree/Class/MethodDecl.java +++ b/src/main/java/abstractSyntaxTree/Class/MethodDecl.java @@ -6,9 +6,7 @@ import TypeCheck.TypeCheckResult; import abstractSyntaxTree.Node; import abstractSyntaxTree.Parameter.Parameter; import abstractSyntaxTree.Parameter.ParameterList; -import abstractSyntaxTree.Program; import abstractSyntaxTree.Statement.BlockStatement; -import abstractSyntaxTree.Statement.IStatement; import org.objectweb.asm.*; import java.util.*; diff --git a/src/main/java/abstractSyntaxTree/Class/RefType.java b/src/main/java/abstractSyntaxTree/Class/RefType.java index a1d02c8..757e3e3 100644 --- a/src/main/java/abstractSyntaxTree/Class/RefType.java +++ b/src/main/java/abstractSyntaxTree/Class/RefType.java @@ -3,7 +3,6 @@ package abstractSyntaxTree.Class; import TypeCheck.AbstractType; import TypeCheck.TypeCheckException; import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Node; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.Statement.BlockStatement; diff --git a/src/main/java/abstractSyntaxTree/Datatype/BoolDatatype.java b/src/main/java/abstractSyntaxTree/Datatype/BoolDatatype.java index d5a0518..b3f2085 100644 --- a/src/main/java/abstractSyntaxTree/Datatype/BoolDatatype.java +++ b/src/main/java/abstractSyntaxTree/Datatype/BoolDatatype.java @@ -2,7 +2,6 @@ package abstractSyntaxTree.Datatype; import TypeCheck.AbstractType; import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Class.RefType; import org.objectweb.asm.*; import java.util.Objects; diff --git a/src/main/java/abstractSyntaxTree/Expression/BinaryExpression.java b/src/main/java/abstractSyntaxTree/Expression/BinaryExpression.java index c277bce..89f8d0e 100644 --- a/src/main/java/abstractSyntaxTree/Expression/BinaryExpression.java +++ b/src/main/java/abstractSyntaxTree/Expression/BinaryExpression.java @@ -7,7 +7,6 @@ import TypeCheck.AbstractType; import abstractSyntaxTree.Parameter.ParameterList; import org.objectweb.asm.*; -import java.beans.Expression; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Objects; diff --git a/src/main/java/abstractSyntaxTree/Expression/BooleanConstantExpression.java b/src/main/java/abstractSyntaxTree/Expression/BooleanConstantExpression.java index 48313ec..82d117e 100644 --- a/src/main/java/abstractSyntaxTree/Expression/BooleanConstantExpression.java +++ b/src/main/java/abstractSyntaxTree/Expression/BooleanConstantExpression.java @@ -1,9 +1,7 @@ package abstractSyntaxTree.Expression; import TypeCheck.AbstractType; -import TypeCheck.TypeCheckException; import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Datatype.BoolDatatype; import abstractSyntaxTree.Parameter.ParameterList; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; diff --git a/src/main/java/abstractSyntaxTree/Expression/InstVarExpression.java b/src/main/java/abstractSyntaxTree/Expression/InstVarExpression.java index 934792d..850002d 100644 --- a/src/main/java/abstractSyntaxTree/Expression/InstVarExpression.java +++ b/src/main/java/abstractSyntaxTree/Expression/InstVarExpression.java @@ -4,11 +4,8 @@ import CodeGen.CodeGenHelper; import TypeCheck.AbstractType; import TypeCheck.TypeCheckException; import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Class.RefType; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.StatementExpression.ReceivingMethod; -import gen.DecafParser; -import jdk.jshell.spi.ExecutionControl; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -84,7 +81,7 @@ public class InstVarExpression extends AbstractType implements IExpression { typeOfReciever = typeContext.get(typeOfReciever).get(this.receivers.get(i).identifier); - descriptor = getFieldDescriptor(typeContext, typeOfReciever); + descriptor = getFieldDescriptor(typeOfReciever); // Load the variable onto the stack mv.visitFieldInsn(Opcodes.GETFIELD, classOfField, receivers.get(i).identifier, descriptor); @@ -100,12 +97,6 @@ public class InstVarExpression extends AbstractType implements IExpression { // Get the class of the receiver typeOfReciever = localVars.get(this.receivers.get(i).identifier); - /* - descriptor = getFieldDescriptor(typeContext, typeOfReciever, typeOfReciever); - - mv.visitFieldInsn(Opcodes.GETFIELD, thisClass, fieldName, descriptor); - */ - continue; } } // Not the first receiver @@ -121,7 +112,7 @@ public class InstVarExpression extends AbstractType implements IExpression { typeOfReciever = typeContext.get(typeOfReciever).get(this.receivers.get(i).identifier); - descriptor = getFieldDescriptor(typeContext, typeOfReciever); + descriptor = getFieldDescriptor(typeOfReciever); // Load the variable onto the stack mv.visitFieldInsn(Opcodes.GETFIELD, classOfField, receivers.get(i).identifier, descriptor); @@ -133,7 +124,7 @@ public class InstVarExpression extends AbstractType implements IExpression { } else { typeOfReciever = localVars.get(this.receivers.get(i).identifier); - descriptor = getFieldDescriptor(typeContext, typeOfReciever); + descriptor = getFieldDescriptor(typeOfReciever); mv.visitFieldInsn(Opcodes.GETFIELD, typeOfReciever, fieldName, descriptor); } @@ -151,7 +142,7 @@ public class InstVarExpression extends AbstractType implements IExpression { typeOfReciever = typeContext.get(typeOfReciever).get(fieldName); - descriptor = getFieldDescriptor(typeContext, typeOfReciever); + descriptor = getFieldDescriptor(typeOfReciever); // Load the variable onto the stack mv.visitFieldInsn(Opcodes.GETFIELD, classOfField, fieldName, descriptor); @@ -163,7 +154,7 @@ public class InstVarExpression extends AbstractType implements IExpression { } else { typeOfReciever = localVars.get(fieldName); - descriptor = getFieldDescriptor(typeContext, typeOfReciever); + descriptor = getFieldDescriptor(typeOfReciever); mv.visitFieldInsn(Opcodes.GETFIELD, typeOfReciever, fieldName, descriptor); } @@ -179,14 +170,14 @@ public class InstVarExpression extends AbstractType implements IExpression { } String fieldType = typeContext.get(thisClass).get(fieldName); - descriptor = getFieldDescriptor(typeContext, fieldType); + descriptor = getFieldDescriptor(fieldType); //Load the field onto the stack mv.visitFieldInsn(Opcodes.GETFIELD, thisClass, fieldName, descriptor); } } - private String getFieldDescriptor(HashMap> typeContext, String fieldType) { + private String getFieldDescriptor(String fieldType) { StringBuilder descriptor = new StringBuilder(); diff --git a/src/main/java/abstractSyntaxTree/Expression/LocalVarIdentifier.java b/src/main/java/abstractSyntaxTree/Expression/LocalVarIdentifier.java index 17089d5..39e4c82 100644 --- a/src/main/java/abstractSyntaxTree/Expression/LocalVarIdentifier.java +++ b/src/main/java/abstractSyntaxTree/Expression/LocalVarIdentifier.java @@ -3,7 +3,6 @@ package abstractSyntaxTree.Expression; import CodeGen.CodeGenHelper; import TypeCheck.AbstractType; import TypeCheck.TypeCheckException; -import TypeCheck.TypeCheckHelper; import TypeCheck.TypeCheckResult; import org.objectweb.asm.*; @@ -12,7 +11,6 @@ import java.util.LinkedHashMap; import abstractSyntaxTree.Parameter.ParameterList; import org.objectweb.asm.MethodVisitor; -import java.util.HashMap; import java.util.Objects; public class LocalVarIdentifier extends AbstractType implements IExpression{ diff --git a/src/main/java/abstractSyntaxTree/Statement/BlockStatement.java b/src/main/java/abstractSyntaxTree/Statement/BlockStatement.java index 2c241c2..16bbbb6 100644 --- a/src/main/java/abstractSyntaxTree/Statement/BlockStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/BlockStatement.java @@ -3,8 +3,6 @@ package abstractSyntaxTree.Statement; import TypeCheck.TypeCheckException; import TypeCheck.TypeCheckResult; import TypeCheck.AbstractType; -import abstractSyntaxTree.Class.FieldDecl; -import abstractSyntaxTree.Parameter.Parameter; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.StatementExpression.AssignStatementExpression; import abstractSyntaxTree.StatementExpression.MethodCallStatementExpression; @@ -77,7 +75,7 @@ public class BlockStatement extends AbstractType implements IStatement { } if (typeOfCurrentStatement.type.contains(",")) { - // else if has 2 returns, all code paths must retrun a value. + // else if has 2 returns, all code paths must return a value. String[] substrings = typeOfCurrentStatement.type.split(","); String firstType = substrings[0]; diff --git a/src/main/java/abstractSyntaxTree/Statement/EmptyStatement.java b/src/main/java/abstractSyntaxTree/Statement/EmptyStatement.java index 76ebd77..7814e7b 100644 --- a/src/main/java/abstractSyntaxTree/Statement/EmptyStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/EmptyStatement.java @@ -7,8 +7,7 @@ import org.objectweb.asm.MethodVisitor; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; -import java.util.Objects; + public class EmptyStatement extends AbstractType implements IStatement{ diff --git a/src/main/java/abstractSyntaxTree/Statement/IfElseStatement.java b/src/main/java/abstractSyntaxTree/Statement/IfElseStatement.java index ec57c9b..6c907c9 100644 --- a/src/main/java/abstractSyntaxTree/Statement/IfElseStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/IfElseStatement.java @@ -9,7 +9,6 @@ import org.objectweb.asm.*; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; import java.util.Objects; public class IfElseStatement extends AbstractType implements IStatement{ diff --git a/src/main/java/abstractSyntaxTree/Statement/IfStatement.java b/src/main/java/abstractSyntaxTree/Statement/IfStatement.java index e6e816a..51bf090 100644 --- a/src/main/java/abstractSyntaxTree/Statement/IfStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/IfStatement.java @@ -9,7 +9,6 @@ import org.objectweb.asm.*; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; import java.util.Objects; public class IfStatement extends AbstractType implements IStatement{ diff --git a/src/main/java/abstractSyntaxTree/Statement/LocalVarDecl.java b/src/main/java/abstractSyntaxTree/Statement/LocalVarDecl.java index 70d4f39..9061de1 100644 --- a/src/main/java/abstractSyntaxTree/Statement/LocalVarDecl.java +++ b/src/main/java/abstractSyntaxTree/Statement/LocalVarDecl.java @@ -8,7 +8,6 @@ import TypeCheck.TypeCheckResult; import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Expression.LocalVarIdentifier; import abstractSyntaxTree.Parameter.ParameterList; -import abstractSyntaxTree.StatementExpression.AssignStatementExpression; import abstractSyntaxTree.StatementExpression.MethodCallStatementExpression; import abstractSyntaxTree.StatementExpression.NewStatementExpression; import org.objectweb.asm.MethodVisitor; @@ -80,7 +79,7 @@ public class LocalVarDecl extends AbstractType implements IStatement{ } } else { - // Set a default value for the variable --> less problems + // Set a default value for the variable --> fewer problems switch (type) { case "int", "boolean", "char": mv.visitInsn(Opcodes.ICONST_0); diff --git a/src/main/java/abstractSyntaxTree/Statement/ReturnStatement.java b/src/main/java/abstractSyntaxTree/Statement/ReturnStatement.java index 7190bf8..2df086a 100644 --- a/src/main/java/abstractSyntaxTree/Statement/ReturnStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/ReturnStatement.java @@ -12,7 +12,6 @@ import org.objectweb.asm.*; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; import java.util.Objects; public class ReturnStatement extends AbstractType implements IStatement{ diff --git a/src/main/java/abstractSyntaxTree/Statement/WhileStatement.java b/src/main/java/abstractSyntaxTree/Statement/WhileStatement.java index daf5b7d..7adf4ed 100644 --- a/src/main/java/abstractSyntaxTree/Statement/WhileStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/WhileStatement.java @@ -9,7 +9,6 @@ import org.objectweb.asm.*; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; import java.util.Objects; public class WhileStatement extends AbstractType implements IStatement { diff --git a/src/main/java/abstractSyntaxTree/StatementExpression/AssignStatementExpression.java b/src/main/java/abstractSyntaxTree/StatementExpression/AssignStatementExpression.java index 111b33a..8fa9144 100644 --- a/src/main/java/abstractSyntaxTree/StatementExpression/AssignStatementExpression.java +++ b/src/main/java/abstractSyntaxTree/StatementExpression/AssignStatementExpression.java @@ -11,7 +11,6 @@ import abstractSyntaxTree.Expression.InstVarExpression; import abstractSyntaxTree.Expression.LocalVarIdentifier; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.Statement.IStatement; -import abstractSyntaxTree.Statement.WhileStatement; import org.objectweb.asm.*; import java.util.HashMap; @@ -43,7 +42,7 @@ public class AssignStatementExpression extends AbstractType implements IExpressi String identifier = localVarIdentifier.getIdentifier(); leftType.type = localVars.get(identifier); - // local var may be actually instvar of this + // local var may be actually instVar of this if(leftType.type == null){ leftType.type = typeContext.get(thisClass).get(identifier); } diff --git a/src/main/java/abstractSyntaxTree/StatementExpression/MethodCallStatementExpression.java b/src/main/java/abstractSyntaxTree/StatementExpression/MethodCallStatementExpression.java index 02ed107..5b27717 100644 --- a/src/main/java/abstractSyntaxTree/StatementExpression/MethodCallStatementExpression.java +++ b/src/main/java/abstractSyntaxTree/StatementExpression/MethodCallStatementExpression.java @@ -3,13 +3,10 @@ package abstractSyntaxTree.StatementExpression; import TypeCheck.AbstractType; import TypeCheck.TypeCheckException; import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Class.MethodDecl; -import abstractSyntaxTree.Class.RefType; import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.Statement.IStatement; import jdk.jshell.spi.ExecutionControl; -import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -17,8 +14,8 @@ import java.util.*; public class MethodCallStatementExpression extends AbstractType implements IExpression, IStatement { String methodName; - List arguments; // Need typecheckresults - Receiver receiver; // InstVarExpression und NewStatementExpression Braucht typecheckResult + List arguments; + Receiver receiver; List receivingMethods; public String thisClass; @@ -44,7 +41,7 @@ public class MethodCallStatementExpression extends AbstractType implements IExpr String currentType = ""; - // receiver is instvar + // receiver is instVar if (receiver != null) { if (receiver.instVarExpression != null) { receiver.instVarExpression.thisClass = this.thisClass; @@ -150,7 +147,6 @@ public class MethodCallStatementExpression extends AbstractType implements IExpr } - // ()I private String getMethodDescriptor(String methodName, LinkedHashMap localVars, HashMap>> methodContext, List arguments, String returnOfPreviousMethod, String owner) { StringBuilder descriptor = new StringBuilder("("); diff --git a/src/main/java/abstractSyntaxTree/StatementExpression/NewStatementExpression.java b/src/main/java/abstractSyntaxTree/StatementExpression/NewStatementExpression.java index c002f07..b892fc4 100644 --- a/src/main/java/abstractSyntaxTree/StatementExpression/NewStatementExpression.java +++ b/src/main/java/abstractSyntaxTree/StatementExpression/NewStatementExpression.java @@ -6,10 +6,8 @@ import TypeCheck.TypeCheckHelper; import TypeCheck.TypeCheckResult; import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Expression.InstVarExpression; -import abstractSyntaxTree.Parameter.Parameter; import abstractSyntaxTree.Parameter.ParameterList; import abstractSyntaxTree.Statement.IStatement; -import abstractSyntaxTree.Statement.WhileStatement; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; diff --git a/src/main/java/abstractSyntaxTree/StatementExpression/Receiver.java b/src/main/java/abstractSyntaxTree/StatementExpression/Receiver.java index e7942ec..6408dad 100644 --- a/src/main/java/abstractSyntaxTree/StatementExpression/Receiver.java +++ b/src/main/java/abstractSyntaxTree/StatementExpression/Receiver.java @@ -1,16 +1,9 @@ package abstractSyntaxTree.StatementExpression; -import TypeCheck.TypeCheckException; -import TypeCheck.TypeCheckResult; -import abstractSyntaxTree.Expression.IExpression; + import abstractSyntaxTree.Expression.InstVarExpression; import abstractSyntaxTree.Node; -import abstractSyntaxTree.Parameter.ParameterList; -import abstractSyntaxTree.Statement.IStatement; -import org.objectweb.asm.MethodVisitor; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Objects; public class Receiver implements Node { diff --git a/src/main/java/abstractSyntaxTree/StatementExpression/ReceivingMethod.java b/src/main/java/abstractSyntaxTree/StatementExpression/ReceivingMethod.java index 34dbb6b..e8770af 100644 --- a/src/main/java/abstractSyntaxTree/StatementExpression/ReceivingMethod.java +++ b/src/main/java/abstractSyntaxTree/StatementExpression/ReceivingMethod.java @@ -5,7 +5,6 @@ import abstractSyntaxTree.Expression.IExpression; import abstractSyntaxTree.Expression.LocalVarIdentifier; import abstractSyntaxTree.Node; import abstractSyntaxTree.Parameter.ParameterList; -import abstractSyntaxTree.Statement.LocalVarDecl; import java.util.HashMap; import java.util.List;