mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-10-06 16:21:40 +00:00
rename interfaces in typed ast to Typed$(oldName)
This commit is contained in:
parent
e915f1817d
commit
b61af71076
@ -1,4 +0,0 @@
|
||||
package de.maishai.typedast;
|
||||
|
||||
public interface Expression extends Node{
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package de.maishai.typedast;
|
||||
|
||||
public interface Statement extends Node{
|
||||
}
|
4
src/main/java/de/maishai/typedast/TypedExpression.java
Normal file
4
src/main/java/de/maishai/typedast/TypedExpression.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.maishai.typedast;
|
||||
|
||||
public interface TypedExpression extends TypedNode {
|
||||
}
|
@ -4,7 +4,7 @@ import de.maishai.typedast.typedclass.TypedClass;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface Node {
|
||||
public interface TypedNode {
|
||||
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);
|
||||
}
|
4
src/main/java/de/maishai/typedast/TypedStatement.java
Normal file
4
src/main/java/de/maishai/typedast/TypedStatement.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.maishai.typedast;
|
||||
|
||||
public interface TypedStatement extends TypedNode {
|
||||
}
|
@ -2,19 +2,19 @@ package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.AssignSign;
|
||||
import de.maishai.ast.records.Assignment;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedAssignment implements Statement {
|
||||
public class TypedAssignment implements TypedStatement {
|
||||
private TypedId loc;
|
||||
private AssignSign assignSign;
|
||||
private Expression value;
|
||||
private TypedExpression value;
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -33,12 +33,12 @@ public class TypedAssignment implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedAssignment typedAssignment = new TypedAssignment();
|
||||
typedAssignment.setLoc((TypedId) loc.convertToTypedAST(localVar, classes, untyped.loc()));
|
||||
typedAssignment.setAssignSign(untyped.assignment());
|
||||
typedAssignment.setValue((Expression) value.convertToTypedAST(localVar, classes, untyped.value()));
|
||||
typedAssignment.setValue((TypedExpression) value.convertToTypedAST(localVar, classes, untyped.value()));
|
||||
return typedAssignment;
|
||||
}
|
||||
}
|
||||
|
@ -2,17 +2,17 @@ package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.records.Binary;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedBinary implements Expression {
|
||||
private Expression left;
|
||||
public class TypedBinary implements TypedExpression {
|
||||
private TypedExpression left;
|
||||
private Operator op;
|
||||
private Expression right;
|
||||
private TypedExpression right;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
if(op == Operator.ADD || op == Operator.SUB || op == Operator.MUL) {
|
||||
@ -43,13 +43,13 @@ public class TypedBinary implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
|
||||
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.setRight((Expression) this.right.convertToTypedAST(localVar, classes, binary.right()));
|
||||
typedBinary.setRight((TypedExpression) this.right.convertToTypedAST(localVar, classes, binary.right()));
|
||||
|
||||
return typedBinary;
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
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.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
@ -11,9 +11,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedBlock implements Node {
|
||||
public class TypedBlock implements TypedNode {
|
||||
private List<TypedLocalVariable> vars;
|
||||
private List<Statement> stmts;
|
||||
private List<TypedStatement> stmts;
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -21,7 +21,7 @@ public class TypedBlock implements Node {
|
||||
for (TypedLocalVariable var : vars) {
|
||||
var.typeCheck(localVar, classes);
|
||||
}
|
||||
for (Statement stmt : stmts) {
|
||||
for (TypedStatement stmt : stmts) {
|
||||
stmt.typeCheck(localVar, classes);
|
||||
typeOfLastStmt = stmt.typeCheck(localVar, classes);
|
||||
}
|
||||
@ -30,7 +30,7 @@ public class TypedBlock implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedBlock typedBlock = new TypedBlock();
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.BoolLiteral;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedBoolLiteral implements Expression {
|
||||
public class TypedBoolLiteral implements TypedExpression {
|
||||
|
||||
private Boolean value;
|
||||
|
||||
@ -18,7 +18,7 @@ public class TypedBoolLiteral implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedBoolLiteral typedBoolLiteral = new TypedBoolLiteral();
|
||||
typedBoolLiteral.setValue(untyped.value());
|
||||
|
@ -1,20 +1,20 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedBreak implements Statement {
|
||||
public class TypedBreak implements TypedStatement {
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
return Type.VOID;
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.CharLiteral;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedCharLiteral implements Expression {
|
||||
public class TypedCharLiteral implements TypedExpression {
|
||||
private char value;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -16,7 +16,7 @@ public class TypedCharLiteral implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedCharLiteral typedCharLiteral = new TypedCharLiteral();
|
||||
typedCharLiteral.setValue(untyped.value());
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.typedast.CodeGenUtils;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
@ -13,7 +13,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedClass implements Node {
|
||||
public class TypedClass implements TypedNode {
|
||||
private Boolean isPublic;
|
||||
private TypedId typedId;
|
||||
private List<TypedField> typedFields;
|
||||
@ -37,7 +37,7 @@ public class TypedClass implements Node {
|
||||
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, TypedClass> classMap = new HashMap<>();
|
||||
|
||||
@ -45,7 +45,7 @@ public class TypedClass implements Node {
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
for (TypedField field : typedFields) {
|
||||
|
@ -4,7 +4,7 @@ import de.maishai.ast.records.Block;
|
||||
import de.maishai.ast.records.Constructor;
|
||||
import de.maishai.ast.records.Parameter;
|
||||
import de.maishai.typedast.CodeGenUtils;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -19,7 +19,7 @@ import java.util.Map;
|
||||
@RequiredArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class TypedConstructor implements Node {
|
||||
public class TypedConstructor implements TypedNode {
|
||||
|
||||
private Boolean isPublic;
|
||||
private TypedId typedId;
|
||||
@ -43,7 +43,7 @@ public class TypedConstructor implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedConstructor typedConstructor = new TypedConstructor();
|
||||
typedConstructor.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untyped.id()));
|
||||
|
@ -1,14 +1,13 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.Continue;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedContinue implements Statement {
|
||||
public class TypedContinue implements TypedStatement {
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -16,7 +15,7 @@ public class TypedContinue implements Statement {
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.DoWhile;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedDoWhile implements Statement {
|
||||
public class TypedDoWhile implements TypedStatement {
|
||||
private TypedBlock typedBlock;
|
||||
private Expression cond;
|
||||
private TypedExpression cond;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
if(cond.typeCheck(localVar, classes) != Type.BOOL){
|
||||
@ -22,12 +22,12 @@ public class TypedDoWhile implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
|
||||
TypedDoWhile typedDoWhile = new TypedDoWhile();
|
||||
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;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
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.TypeMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -15,7 +15,7 @@ import java.util.Map;
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
@Data
|
||||
public class TypedField implements Node {
|
||||
public class TypedField implements TypedNode {
|
||||
private TypedId typedId;
|
||||
private Type type;
|
||||
|
||||
@ -29,7 +29,7 @@ public class TypedField implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedField typedField = new TypedField();
|
||||
typedField.setTypedId((TypedId) typedId.convertToTypedAST(localVar, classes, untypedField.name()));
|
||||
|
@ -1,16 +1,16 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.FieldId;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedFieldId implements Expression {
|
||||
public class TypedFieldId implements TypedExpression {
|
||||
private Boolean field;
|
||||
private Expression recipient;
|
||||
private TypedExpression recipient;
|
||||
private TypedId typedId;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -23,11 +23,11 @@ public class TypedFieldId implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedFieldId typedFieldId = new TypedFieldId();
|
||||
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()));
|
||||
|
||||
return typedFieldId;
|
||||
|
@ -1,9 +1,9 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.For;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -14,10 +14,10 @@ import java.util.Map;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TypedFor implements Statement {
|
||||
private Expression assign;
|
||||
private Expression cond;
|
||||
private Expression inc;
|
||||
public class TypedFor implements TypedStatement {
|
||||
private TypedExpression assign;
|
||||
private TypedExpression cond;
|
||||
private TypedExpression inc;
|
||||
private TypedBlock typedBlock;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -30,12 +30,12 @@ public class TypedFor implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedFor typedFor = new TypedFor();
|
||||
typedFor.setAssign((Expression) assign.convertToTypedAST(localVar, classes, untyped.assign()));
|
||||
typedFor.setCond((Expression) cond.convertToTypedAST(localVar, classes, untyped.cond()));
|
||||
typedFor.setInc((Expression) inc.convertToTypedAST(localVar, classes, untyped.inc()));
|
||||
typedFor.setAssign((TypedExpression) assign.convertToTypedAST(localVar, classes, untyped.assign()));
|
||||
typedFor.setCond((TypedExpression) cond.convertToTypedAST(localVar, classes, untyped.cond()));
|
||||
typedFor.setInc((TypedExpression) inc.convertToTypedAST(localVar, classes, untyped.inc()));
|
||||
typedFor.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));
|
||||
|
||||
return typedFor;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.Id;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -11,7 +11,7 @@ import java.util.Map;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class TypedId implements Expression {
|
||||
public class TypedId implements TypedExpression {
|
||||
private String name;
|
||||
|
||||
@Override
|
||||
@ -24,7 +24,7 @@ public class TypedId implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
return new TypedId(untypedId.name());
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.IfElse;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedIfElse implements Statement {
|
||||
private Expression typedCon;
|
||||
public class TypedIfElse implements TypedStatement {
|
||||
private TypedExpression typedCon;
|
||||
private TypedBlock ifTypedBlock;
|
||||
private TypedBlock elseTypedBlock;
|
||||
|
||||
@ -29,11 +29,11 @@ public class TypedIfElse implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
|
||||
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.setElseTypedBlock((TypedBlock) elseTypedBlock.convertToTypedAST(localVar, classes, ifElse.elseBlock()));
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.IntLiteral;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -13,7 +13,7 @@ import java.util.Map;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TypedIntLiteral implements Expression {
|
||||
public class TypedIntLiteral implements TypedExpression {
|
||||
private Integer value;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -21,7 +21,7 @@ public class TypedIntLiteral implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
return new TypedIntLiteral(untyped.value());
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
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.TypeMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -12,7 +12,7 @@ import java.util.Map;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public final class TypedLocalVariable implements Node {
|
||||
public final class TypedLocalVariable implements TypedNode {
|
||||
private TypedId typedId;
|
||||
private Type type;
|
||||
|
||||
@ -26,7 +26,7 @@ public final class TypedLocalVariable implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedLocalVariable typedLocalVariable = new TypedLocalVariable();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.MainMethod;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -12,7 +12,7 @@ import java.util.Map;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TypedMainMethod implements Node {
|
||||
public class TypedMainMethod implements TypedNode {
|
||||
private TypedBlock typedBlock;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -20,7 +20,7 @@ public class TypedMainMethod implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedMainMethod typedMainMethod = new TypedMainMethod();
|
||||
typedMainMethod.setTypedBlock((TypedBlock) typedBlock.convertToTypedAST(localVar, classes, untyped.block()));
|
||||
|
@ -1,9 +1,8 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.Block;
|
||||
import de.maishai.ast.records.Method;
|
||||
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.TypeMapper;
|
||||
import lombok.Data;
|
||||
@ -12,7 +11,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedMethod implements Node {
|
||||
public class TypedMethod implements TypedNode {
|
||||
private Boolean isPublic;
|
||||
private TypedId typedId;
|
||||
private Type returnType;
|
||||
@ -32,7 +31,7 @@ public class TypedMethod implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedMethod typedMethod = new TypedMethod();
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
@ -10,11 +10,11 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedMethodCall implements Expression, Statement {
|
||||
public class TypedMethodCall implements TypedExpression, TypedStatement {
|
||||
private Boolean field;
|
||||
private Expression recipient;
|
||||
private TypedExpression recipient;
|
||||
private TypedId typedId;
|
||||
private List<Expression> args;
|
||||
private List<TypedExpression> args;
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -23,7 +23,7 @@ public class TypedMethodCall implements Expression, Statement {
|
||||
}
|
||||
|
||||
@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
|
||||
return null;
|
||||
}
|
||||
|
@ -8,9 +8,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedNew implements Expression, Statement {
|
||||
public class TypedNew implements TypedExpression, TypedStatement {
|
||||
private Type type;
|
||||
private List<Expression> args;
|
||||
private List<TypedExpression> args;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
// new A(1, 2, 3)
|
||||
@ -33,7 +33,7 @@ public class TypedNew implements Expression, Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedNew typedNew = new TypedNew();
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -11,7 +11,7 @@ import java.util.Map;
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
@Data
|
||||
public class TypedParameter implements Node {
|
||||
public class TypedParameter implements TypedNode {
|
||||
private TypedId typedId;
|
||||
private Type type;
|
||||
|
||||
@ -25,7 +25,7 @@ public class TypedParameter implements Node {
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
@ -8,7 +8,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedProgram implements Node {
|
||||
public class TypedProgram implements TypedNode {
|
||||
private List<TypedClass> typedClasses;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -19,7 +19,7 @@ public class TypedProgram implements Node {
|
||||
}
|
||||
|
||||
@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
|
||||
return null;
|
||||
}
|
||||
|
@ -2,16 +2,16 @@ package de.maishai.typedast.typedclass;
|
||||
|
||||
|
||||
import de.maishai.ast.records.Return;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedReturn implements Statement {
|
||||
private Expression ret;
|
||||
public class TypedReturn implements TypedStatement {
|
||||
private TypedExpression ret;
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -19,10 +19,10 @@ public class TypedReturn implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedReturn typedReturn = new TypedReturn();
|
||||
typedReturn.setRet((Expression) ret.convertToTypedAST(localVar, classes, untyped.ret()));
|
||||
typedReturn.setRet((TypedExpression) ret.convertToTypedAST(localVar, classes, untyped.ret()));
|
||||
return typedReturn;
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.Method;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedReturnVoid implements Statement {
|
||||
public class TypedReturnVoid implements TypedStatement {
|
||||
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -16,7 +16,7 @@ public class TypedReturnVoid implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
if(untyped.type() != de.maishai.ast.ReturnType.VOID){
|
||||
throw new RuntimeException("Return type is not void");
|
||||
|
@ -2,16 +2,16 @@ package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.UnaryOperator;
|
||||
import de.maishai.ast.records.Unary;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
@Data
|
||||
public class TypedUnary implements Expression {
|
||||
public class TypedUnary implements TypedExpression {
|
||||
private UnaryOperator op;
|
||||
private Expression right;
|
||||
private TypedExpression right;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
|
||||
@ -32,11 +32,11 @@ public class TypedUnary implements Expression {
|
||||
}
|
||||
|
||||
@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;
|
||||
TypedUnary typedUnary = new TypedUnary();
|
||||
typedUnary.setOp(untyped.op());
|
||||
typedUnary.setRight((Expression) right.convertToTypedAST(localVar, classes, untyped.right()));
|
||||
typedUnary.setRight((TypedExpression) right.convertToTypedAST(localVar, classes, untyped.right()));
|
||||
return typedUnary;
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import de.maishai.ast.records.While;
|
||||
import de.maishai.typedast.Expression;
|
||||
import de.maishai.typedast.Node;
|
||||
import de.maishai.typedast.Statement;
|
||||
import de.maishai.typedast.TypedExpression;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.TypedStatement;
|
||||
import de.maishai.typedast.Type;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class TypedWhile implements Statement {
|
||||
private Expression cond;
|
||||
public class TypedWhile implements TypedStatement {
|
||||
private TypedExpression cond;
|
||||
private TypedBlock typedBlock;
|
||||
@Override
|
||||
public Type typeCheck(Map<String, Type> localVar, Map<String, TypedClass> classes) {
|
||||
@ -22,10 +22,10 @@ public class TypedWhile implements Statement {
|
||||
}
|
||||
|
||||
@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;
|
||||
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()));
|
||||
return typedWhile;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user