mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-10-06 20:21:41 +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;
|
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);
|
||||||
}
|
}
|
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.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@ 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();
|
||||||
|
|
||||||
|
@ -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());
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
@ -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) {
|
||||||
|
@ -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()));
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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()));
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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()));
|
||||||
|
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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()));
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user