rename interfaces in typed ast to Typed$(oldName)

This commit is contained in:
404Simon 2024-05-07 23:41:30 +02:00
parent e915f1817d
commit b61af71076
32 changed files with 146 additions and 148 deletions

View File

@ -1,4 +0,0 @@
package de.maishai.typedast;
public interface Expression extends Node{
}

View File

@ -1,4 +0,0 @@
package de.maishai.typedast;
public interface Statement extends Node{
}

View File

@ -0,0 +1,4 @@
package de.maishai.typedast;
public interface TypedExpression extends TypedNode {
}

View File

@ -4,7 +4,7 @@ import de.maishai.typedast.typedclass.TypedClass;
import java.util.Map; import java.util.Map;
public interface Node { public interface TypedNode {
Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes); Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes);
Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST); TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST);
} }

View File

@ -0,0 +1,4 @@
package de.maishai.typedast;
public interface TypedStatement extends TypedNode {
}

View File

@ -2,19 +2,19 @@ package de.maishai.typedast.typedclass;
import de.maishai.ast.AssignSign; import de.maishai.ast.AssignSign;
import de.maishai.ast.records.Assignment; import de.maishai.ast.records.Assignment;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedAssignment implements Statement { public class TypedAssignment implements TypedStatement {
private TypedId loc; private TypedId loc;
private AssignSign assignSign; private AssignSign assignSign;
private Expression value; private TypedExpression value;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -33,12 +33,12 @@ public class TypedAssignment implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Assignment untyped = (Assignment) unTypedAST; Assignment untyped = (Assignment) unTypedAST;
TypedAssignment typedAssignment = new TypedAssignment(); TypedAssignment typedAssignment = new TypedAssignment();
typedAssignment.setLoc((TypedId) loc.convertToTypedAST(localVar, classes, untyped.loc())); typedAssignment.setLoc((TypedId) loc.convertToTypedAST(localVar, classes, untyped.loc()));
typedAssignment.setAssignSign(untyped.assignment()); typedAssignment.setAssignSign(untyped.assignment());
typedAssignment.setValue((Expression) value.convertToTypedAST(localVar, classes, untyped.value())); typedAssignment.setValue((TypedExpression) value.convertToTypedAST(localVar, classes, untyped.value()));
return typedAssignment; return typedAssignment;
} }
} }

View File

@ -2,17 +2,17 @@ package de.maishai.typedast.typedclass;
import de.maishai.ast.Operator; import de.maishai.ast.Operator;
import de.maishai.ast.records.Binary; import de.maishai.ast.records.Binary;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedBinary implements Expression { public class TypedBinary implements TypedExpression {
private Expression left; private TypedExpression left;
private Operator op; private Operator op;
private Expression right; private TypedExpression right;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
if(op == Operator.ADD || op == Operator.SUB || op == Operator.MUL) { if(op == Operator.ADD || op == Operator.SUB || op == Operator.MUL) {
@ -43,13 +43,13 @@ public class TypedBinary implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Binary binary = (Binary) unTypedAST; Binary binary = (Binary) unTypedAST;
TypedBinary typedBinary = new TypedBinary(); TypedBinary typedBinary = new TypedBinary();
typedBinary.setLeft((Expression) this.left.convertToTypedAST(localVar, classes, binary.left())); typedBinary.setLeft((TypedExpression) this.left.convertToTypedAST(localVar, classes, binary.left()));
typedBinary.setOp(binary.op()); typedBinary.setOp(binary.op());
typedBinary.setRight((Expression) this.right.convertToTypedAST(localVar, classes, binary.right())); typedBinary.setRight((TypedExpression) this.right.convertToTypedAST(localVar, classes, binary.right()));
return typedBinary; return typedBinary;
} }

View File

@ -1,9 +1,9 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Block; import de.maishai.ast.records.Block;
import de.maishai.ast.records.LocalVariable; import de.maishai.ast.records.LocalVariable;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
@ -11,9 +11,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedBlock implements Node { public class TypedBlock implements TypedNode {
private List<TypedLocalVariable> vars; private List<TypedLocalVariable> vars;
private List<Statement> stmts; private List<TypedStatement> stmts;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -21,7 +21,7 @@ public class TypedBlock implements Node {
for (TypedLocalVariable var : vars) { for (TypedLocalVariable var : vars) {
var.typeCheck(localVar, classes); var.typeCheck(localVar, classes);
} }
for (Statement stmt : stmts) { for (TypedStatement stmt : stmts) {
stmt.typeCheck(localVar, classes); stmt.typeCheck(localVar, classes);
typeOfLastStmt = stmt.typeCheck(localVar, classes); typeOfLastStmt = stmt.typeCheck(localVar, classes);
} }
@ -30,7 +30,7 @@ public class TypedBlock implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Block untyped = (Block) unTypedAST; Block untyped = (Block) unTypedAST;
TypedBlock typedBlock = new TypedBlock(); TypedBlock typedBlock = new TypedBlock();

View File

@ -1,14 +1,14 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.BoolLiteral; import de.maishai.ast.records.BoolLiteral;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedBoolLiteral implements Expression { public class TypedBoolLiteral implements TypedExpression {
private Boolean value; private Boolean value;
@ -18,7 +18,7 @@ public class TypedBoolLiteral implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
BoolLiteral untyped = (BoolLiteral) unTypedAST; BoolLiteral untyped = (BoolLiteral) unTypedAST;
TypedBoolLiteral typedBoolLiteral = new TypedBoolLiteral(); TypedBoolLiteral typedBoolLiteral = new TypedBoolLiteral();
typedBoolLiteral.setValue(untyped.value()); typedBoolLiteral.setValue(untyped.value());

View File

@ -1,20 +1,20 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedBreak implements Statement { public class TypedBreak implements TypedStatement {
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
return Type.VOID; return Type.VOID;
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
return new TypedBreak(); return new TypedBreak();
} }
} }

View File

@ -1,14 +1,14 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.CharLiteral; import de.maishai.ast.records.CharLiteral;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedCharLiteral implements Expression { public class TypedCharLiteral implements TypedExpression {
private char value; private char value;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -16,7 +16,7 @@ public class TypedCharLiteral implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
CharLiteral untyped = (CharLiteral) unTypedAST; CharLiteral untyped = (CharLiteral) unTypedAST;
TypedCharLiteral typedCharLiteral = new TypedCharLiteral(); TypedCharLiteral typedCharLiteral = new TypedCharLiteral();
typedCharLiteral.setValue(untyped.value()); typedCharLiteral.setValue(untyped.value());

View File

@ -1,7 +1,7 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.typedast.CodeGenUtils; import de.maishai.typedast.CodeGenUtils;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import org.objectweb.asm.ClassWriter; import org.objectweb.asm.ClassWriter;
@ -13,7 +13,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedClass implements Node { public class TypedClass implements TypedNode {
private Boolean isPublic; private Boolean isPublic;
private TypedId typedId; private TypedId typedId;
private List<TypedField> typedFields; private List<TypedField> typedFields;
@ -37,7 +37,7 @@ public class TypedClass implements Node {
return Type.REFERENCE(typedId.getName()); return Type.REFERENCE(typedId.getName());
} }
public Node startConversion(de.maishai.ast.records.Class c) { public TypedNode startConversion(de.maishai.ast.records.Class c) {
Map<String, Type> local = new HashMap<>(); Map<String, Type> local = new HashMap<>();
Map<String, TypedClass> classMap = new HashMap<>(); Map<String, TypedClass> classMap = new HashMap<>();
@ -45,7 +45,7 @@ public class TypedClass implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
TypedClass typedClass = new TypedClass(); TypedClass typedClass = new TypedClass();
for (TypedField field : typedFields) { for (TypedField field : typedFields) {

View File

@ -4,7 +4,7 @@ import de.maishai.ast.records.Block;
import de.maishai.ast.records.Constructor; import de.maishai.ast.records.Constructor;
import de.maishai.ast.records.Parameter; import de.maishai.ast.records.Parameter;
import de.maishai.typedast.CodeGenUtils; import de.maishai.typedast.CodeGenUtils;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -19,7 +19,7 @@ import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Data @Data
public class TypedConstructor implements Node { public class TypedConstructor implements TypedNode {
private Boolean isPublic; private Boolean isPublic;
private TypedId typedId; private TypedId typedId;
@ -43,7 +43,7 @@ public class TypedConstructor implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Constructor untyped = (Constructor) unTypedAST; Constructor untyped = (Constructor) unTypedAST;
TypedConstructor typedConstructor = new TypedConstructor(); TypedConstructor typedConstructor = new TypedConstructor();
typedConstructor.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untyped.id())); typedConstructor.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untyped.id()));

View File

@ -1,14 +1,13 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Continue; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Statement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedContinue implements Statement { public class TypedContinue implements TypedStatement {
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -16,7 +15,7 @@ public class TypedContinue implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
return new TypedContinue(); return new TypedContinue();
} }
} }

View File

@ -1,17 +1,17 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.DoWhile; import de.maishai.ast.records.DoWhile;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedDoWhile implements Statement { public class TypedDoWhile implements TypedStatement {
private TypedBlock typedBlock; private TypedBlock typedBlock;
private Expression cond; private TypedExpression cond;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
if(cond.typeCheck(localVar, classes) != Type.BOOL){ if(cond.typeCheck(localVar, classes) != Type.BOOL){
@ -22,12 +22,12 @@ public class TypedDoWhile implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
DoWhile untyped = (DoWhile) unTypedAST; DoWhile untyped = (DoWhile) unTypedAST;
TypedDoWhile typedDoWhile = new TypedDoWhile(); TypedDoWhile typedDoWhile = new TypedDoWhile();
typedDoWhile.setTypedBlock( (TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block())); typedDoWhile.setTypedBlock( (TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));
typedDoWhile.setCond((Expression) cond.convertToTypedAST(localVar, classes, untyped.cond())); typedDoWhile.setCond((TypedExpression) cond.convertToTypedAST(localVar, classes, untyped.cond()));
return typedDoWhile; return typedDoWhile;
} }

View File

@ -1,7 +1,7 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Field; import de.maishai.ast.records.Field;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import de.maishai.typedast.TypeMapper; import de.maishai.typedast.TypeMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -15,7 +15,7 @@ import java.util.Map;
@AllArgsConstructor @AllArgsConstructor
@RequiredArgsConstructor @RequiredArgsConstructor
@Data @Data
public class TypedField implements Node { public class TypedField implements TypedNode {
private TypedId typedId; private TypedId typedId;
private Type type; private Type type;
@ -29,7 +29,7 @@ public class TypedField implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Field untypedField = (Field) unTypedAST; Field untypedField = (Field) unTypedAST;
TypedField typedField = new TypedField(); TypedField typedField = new TypedField();
typedField.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untypedField.name())); typedField.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untypedField.name()));

View File

@ -1,16 +1,16 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.FieldId; import de.maishai.ast.records.FieldId;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedFieldId implements Expression { public class TypedFieldId implements TypedExpression {
private Boolean field; private Boolean field;
private Expression recipient; private TypedExpression recipient;
private TypedId typedId; private TypedId typedId;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -23,11 +23,11 @@ public class TypedFieldId implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
FieldId untypedFieldId = (FieldId) unTypedAST; FieldId untypedFieldId = (FieldId) unTypedAST;
TypedFieldId typedFieldId = new TypedFieldId(); TypedFieldId typedFieldId = new TypedFieldId();
typedFieldId.setField(untypedFieldId.field()); typedFieldId.setField(untypedFieldId.field());
typedFieldId.setRecipient((Expression) recipient.convertToTypedAST(localVar, classes, untypedFieldId.recipient())); typedFieldId.setRecipient((TypedExpression) recipient.convertToTypedAST(localVar, classes, untypedFieldId.recipient()));
typedFieldId.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untypedFieldId.id())); typedFieldId.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untypedFieldId.id()));
return typedFieldId; return typedFieldId;

View File

@ -1,9 +1,9 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.For; import de.maishai.ast.records.For;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -14,10 +14,10 @@ import java.util.Map;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TypedFor implements Statement { public class TypedFor implements TypedStatement {
private Expression assign; private TypedExpression assign;
private Expression cond; private TypedExpression cond;
private Expression inc; private TypedExpression inc;
private TypedBlock typedBlock; private TypedBlock typedBlock;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -30,12 +30,12 @@ public class TypedFor implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
For untyped = (For) unTypedAST; For untyped = (For) unTypedAST;
TypedFor typedFor = new TypedFor(); TypedFor typedFor = new TypedFor();
typedFor.setAssign((Expression) assign.convertToTypedAST(localVar, classes, untyped.assign())); typedFor.setAssign((TypedExpression) assign.convertToTypedAST(localVar, classes, untyped.assign()));
typedFor.setCond((Expression) cond.convertToTypedAST(localVar, classes, untyped.cond())); typedFor.setCond((TypedExpression) cond.convertToTypedAST(localVar, classes, untyped.cond()));
typedFor.setInc((Expression) inc.convertToTypedAST(localVar, classes, untyped.inc())); typedFor.setInc((TypedExpression) inc.convertToTypedAST(localVar, classes, untyped.inc()));
typedFor.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block())); typedFor.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));
return typedFor; return typedFor;

View File

@ -1,8 +1,8 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Id; import de.maishai.ast.records.Id;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -11,7 +11,7 @@ import java.util.Map;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
public class TypedId implements Expression { public class TypedId implements TypedExpression {
private String name; private String name;
@Override @Override
@ -24,7 +24,7 @@ public class TypedId implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Id untypedId = (Id) unTypedAST; Id untypedId = (Id) unTypedAST;
return new TypedId(untypedId.name()); return new TypedId(untypedId.name());
} }

View File

@ -1,17 +1,17 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.IfElse; import de.maishai.ast.records.IfElse;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedIfElse implements Statement { public class TypedIfElse implements TypedStatement {
private Expression typedCon; private TypedExpression typedCon;
private TypedBlock ifTypedBlock; private TypedBlock ifTypedBlock;
private TypedBlock elseTypedBlock; private TypedBlock elseTypedBlock;
@ -29,11 +29,11 @@ public class TypedIfElse implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
IfElse ifElse = (IfElse) unTypedAST; IfElse ifElse = (IfElse) unTypedAST;
TypedIfElse typedIfElse = new TypedIfElse(); TypedIfElse typedIfElse = new TypedIfElse();
typedIfElse.setTypedCon((Expression) typedCon.convertToTypedAST(localVar, classes, ifElse.cond())); typedIfElse.setTypedCon((TypedExpression) typedCon.convertToTypedAST(localVar, classes, ifElse.cond()));
typedIfElse.setIfTypedBlock((TypedBlock) ifTypedBlock.convertToTypedAST(localVar, classes, ifElse.ifBlock())); typedIfElse.setIfTypedBlock((TypedBlock) ifTypedBlock.convertToTypedAST(localVar, classes, ifElse.ifBlock()));
typedIfElse.setElseTypedBlock((TypedBlock) elseTypedBlock.convertToTypedAST(localVar, classes, ifElse.elseBlock())); typedIfElse.setElseTypedBlock((TypedBlock) elseTypedBlock.convertToTypedAST(localVar, classes, ifElse.elseBlock()));

View File

@ -1,8 +1,8 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.IntLiteral; import de.maishai.ast.records.IntLiteral;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -13,7 +13,7 @@ import java.util.Map;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TypedIntLiteral implements Expression { public class TypedIntLiteral implements TypedExpression {
private Integer value; private Integer value;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -21,7 +21,7 @@ public class TypedIntLiteral implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
IntLiteral untyped = (IntLiteral) unTypedAST; IntLiteral untyped = (IntLiteral) unTypedAST;
return new TypedIntLiteral(untyped.value()); return new TypedIntLiteral(untyped.value());
} }

View File

@ -1,7 +1,7 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.LocalVariable; import de.maishai.ast.records.LocalVariable;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import de.maishai.typedast.TypeMapper; import de.maishai.typedast.TypeMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -12,7 +12,7 @@ import java.util.Map;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public final class TypedLocalVariable implements Node { public final class TypedLocalVariable implements TypedNode {
private TypedId typedId; private TypedId typedId;
private Type type; private Type type;
@ -26,7 +26,7 @@ public final class TypedLocalVariable implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
LocalVariable untypedLocalVariable = (LocalVariable) unTypedAST; LocalVariable untypedLocalVariable = (LocalVariable) unTypedAST;
TypedLocalVariable typedLocalVariable = new TypedLocalVariable(); TypedLocalVariable typedLocalVariable = new TypedLocalVariable();

View File

@ -1,7 +1,7 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.MainMethod; import de.maishai.ast.records.MainMethod;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -12,7 +12,7 @@ import java.util.Map;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TypedMainMethod implements Node { public class TypedMainMethod implements TypedNode {
private TypedBlock typedBlock; private TypedBlock typedBlock;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -20,7 +20,7 @@ public class TypedMainMethod implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
MainMethod untyped = (MainMethod) unTypedAST; MainMethod untyped = (MainMethod) unTypedAST;
TypedMainMethod typedMainMethod = new TypedMainMethod(); TypedMainMethod typedMainMethod = new TypedMainMethod();
typedMainMethod.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block())); typedMainMethod.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));

View File

@ -1,9 +1,8 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Block;
import de.maishai.ast.records.Method; import de.maishai.ast.records.Method;
import de.maishai.ast.records.Parameter; import de.maishai.ast.records.Parameter;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import de.maishai.typedast.TypeMapper; import de.maishai.typedast.TypeMapper;
import lombok.Data; import lombok.Data;
@ -12,7 +11,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedMethod implements Node { public class TypedMethod implements TypedNode {
private Boolean isPublic; private Boolean isPublic;
private TypedId typedId; private TypedId typedId;
private Type returnType; private Type returnType;
@ -32,7 +31,7 @@ public class TypedMethod implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Method untypedMethod = (Method) unTypedAST; Method untypedMethod = (Method) unTypedAST;
TypedMethod typedMethod = new TypedMethod(); TypedMethod typedMethod = new TypedMethod();

View File

@ -1,8 +1,8 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
@ -10,11 +10,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedMethodCall implements Expression, Statement { public class TypedMethodCall implements TypedExpression, TypedStatement {
private Boolean field; private Boolean field;
private Expression recipient; private TypedExpression recipient;
private TypedId typedId; private TypedId typedId;
private List<Expression> args; private List<TypedExpression> args;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -23,7 +23,7 @@ public class TypedMethodCall implements Expression, Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
//TODO: Implement this //TODO: Implement this
return null; return null;
} }

View File

@ -8,9 +8,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedNew implements Expression, Statement { public class TypedNew implements TypedExpression, TypedStatement {
private Type type; private Type type;
private List<Expression> args; private List<TypedExpression> args;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
// new A(1, 2, 3) // new A(1, 2, 3)
@ -33,7 +33,7 @@ public class TypedNew implements Expression, Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
New untyped = (New) unTypedAST; New untyped = (New) unTypedAST;
TypedNew typedNew = new TypedNew(); TypedNew typedNew = new TypedNew();

View File

@ -1,6 +1,6 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -11,7 +11,7 @@ import java.util.Map;
@AllArgsConstructor @AllArgsConstructor
@RequiredArgsConstructor @RequiredArgsConstructor
@Data @Data
public class TypedParameter implements Node { public class TypedParameter implements TypedNode {
private TypedId typedId; private TypedId typedId;
private Type type; private Type type;
@ -25,7 +25,7 @@ public class TypedParameter implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
return null; return null;
} }

View File

@ -1,6 +1,6 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
@ -8,7 +8,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedProgram implements Node { public class TypedProgram implements TypedNode {
private List<TypedClass> typedClasses; private List<TypedClass> typedClasses;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -19,7 +19,7 @@ public class TypedProgram implements Node {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
//TODO: Implement this //TODO: Implement this
return null; return null;
} }

View File

@ -2,16 +2,16 @@ package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Return; import de.maishai.ast.records.Return;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedReturn implements Statement { public class TypedReturn implements TypedStatement {
private Expression ret; private TypedExpression ret;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -19,10 +19,10 @@ public class TypedReturn implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Return untyped = (Return) unTypedAST; Return untyped = (Return) unTypedAST;
TypedReturn typedReturn = new TypedReturn(); TypedReturn typedReturn = new TypedReturn();
typedReturn.setRet((Expression) ret.convertToTypedAST(localVar, classes, untyped.ret())); typedReturn.setRet((TypedExpression) ret.convertToTypedAST(localVar, classes, untyped.ret()));
return typedReturn; return typedReturn;
} }
} }

View File

@ -1,14 +1,14 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Method; import de.maishai.ast.records.Method;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedReturnVoid implements Statement { public class TypedReturnVoid implements TypedStatement {
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -16,7 +16,7 @@ public class TypedReturnVoid implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Method untyped = (Method) unTypedAST; Method untyped = (Method) unTypedAST;
if(untyped.type() != de.maishai.ast.ReturnType.VOID){ if(untyped.type() != de.maishai.ast.ReturnType.VOID){
throw new RuntimeException("Return type is not void"); throw new RuntimeException("Return type is not void");

View File

@ -2,16 +2,16 @@ package de.maishai.typedast.typedclass;
import de.maishai.ast.UnaryOperator; import de.maishai.ast.UnaryOperator;
import de.maishai.ast.records.Unary; import de.maishai.ast.records.Unary;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedUnary implements Expression { public class TypedUnary implements TypedExpression {
private UnaryOperator op; private UnaryOperator op;
private Expression right; private TypedExpression right;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -32,11 +32,11 @@ public class TypedUnary implements Expression {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
Unary untyped = (Unary) unTypedAST; Unary untyped = (Unary) unTypedAST;
TypedUnary typedUnary = new TypedUnary(); TypedUnary typedUnary = new TypedUnary();
typedUnary.setOp(untyped.op()); typedUnary.setOp(untyped.op());
typedUnary.setRight((Expression) right.convertToTypedAST(localVar, classes, untyped.right())); typedUnary.setRight((TypedExpression) right.convertToTypedAST(localVar, classes, untyped.right()));
return typedUnary; return typedUnary;
} }
} }

View File

@ -1,17 +1,17 @@
package de.maishai.typedast.typedclass; package de.maishai.typedast.typedclass;
import de.maishai.ast.records.While; import de.maishai.ast.records.While;
import de.maishai.typedast.Expression; import de.maishai.typedast.TypedExpression;
import de.maishai.typedast.Node; import de.maishai.typedast.TypedNode;
import de.maishai.typedast.Statement; import de.maishai.typedast.TypedStatement;
import de.maishai.typedast.Type; import de.maishai.typedast.Type;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class TypedWhile implements Statement { public class TypedWhile implements TypedStatement {
private Expression cond; private TypedExpression cond;
private TypedBlock typedBlock; private TypedBlock typedBlock;
@Override @Override
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) { public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
@ -22,10 +22,10 @@ public class TypedWhile implements Statement {
} }
@Override @Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) { public TypedNode convertToTypedAST(Map<String, Type> localVar, Map<String, TypedClass> classes, de.maishai.ast.records.Node unTypedAST) {
While untyped = (While) unTypedAST; While untyped = (While) unTypedAST;
TypedWhile typedWhile = new TypedWhile(); TypedWhile typedWhile = new TypedWhile();
typedWhile.setCond((Expression) cond.convertToTypedAST(localVar, classes, untyped.cond())); typedWhile.setCond((TypedExpression) cond.convertToTypedAST(localVar, classes, untyped.cond()));
typedWhile.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block())); typedWhile.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));
return typedWhile; return typedWhile;
} }