mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-12-28 17:28:03 +00:00
removed ast.Type in favor of typedast.Type
This commit is contained in:
parent
5d44fc661f
commit
4c34a8db44
@ -1,9 +1,9 @@
|
||||
package de.maishai;
|
||||
|
||||
import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.ast.records.Class;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -62,9 +62,7 @@ public class ASTGenerator {
|
||||
if (ctx.CHAR() != null)
|
||||
return Type.CHAR;
|
||||
if (ctx.id() != null) {
|
||||
Type type = Type.OBJECT;
|
||||
type.setObjectType(ctx.id().getText());
|
||||
return type;
|
||||
return Type.REFERENCE(ctx.id().getText());
|
||||
}
|
||||
throw new RuntimeException("No type found!");
|
||||
}
|
||||
|
@ -15,16 +15,6 @@ import java.io.IOException;
|
||||
*/
|
||||
public class Compiler {
|
||||
|
||||
public static void main(String[] args) {
|
||||
generateAST("""
|
||||
public class E2ETests {
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
public static Class generateAST(String fromSource) {
|
||||
CharStream input = CharStreams.fromString(fromSource);
|
||||
DecafLexer lexer = new DecafLexer(input);
|
||||
@ -73,7 +63,7 @@ public class Compiler {
|
||||
CodeGenUtils.writeClassfile(bytes, classname);
|
||||
}
|
||||
|
||||
// public static void main(String[] args) {
|
||||
// generateByteCodeFileFromFile("src/main/resources/JavaTestfiles/PublicClass.java", "OnlyClass");
|
||||
// }
|
||||
public static void main(String[] args) {
|
||||
generateByteCodeFileFromFile("src/main/resources/JavaTestfiles/PublicClass.java", "OnlyClass");
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.UnaryOperator;
|
||||
import de.maishai.ast.records.Expression;
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -5,8 +5,8 @@ import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.records.Expression;
|
||||
import de.maishai.ast.records.Statement;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -3,8 +3,8 @@ package de.maishai;
|
||||
|
||||
import de.maishai.antlr.DecafBaseVisitor;
|
||||
import de.maishai.antlr.DecafParser;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.Declaration;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
public class VariableGenerator extends DecafBaseVisitor<Declaration> {
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
package de.maishai.ast;
|
||||
|
||||
public enum Type {
|
||||
INT,
|
||||
BOOL,
|
||||
CHAR,
|
||||
VOID,
|
||||
OBJECT;
|
||||
|
||||
String objectType;
|
||||
|
||||
public String getObjectType() {
|
||||
if(this == Type.OBJECT){
|
||||
return objectType;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setObjectType(String objectType) {
|
||||
if(this == Type.OBJECT){
|
||||
this.objectType = objectType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
public record Declaration(String name, Type type) implements Node {
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -2,7 +2,7 @@ package de.maishai.ast.records;
|
||||
|
||||
|
||||
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.maishai.ast.records;
|
||||
|
||||
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.typedast.Type;
|
||||
|
||||
public record Parameter(String name, Type type) implements Node {
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
package de.maishai.typedast;
|
||||
|
||||
public class TypeMapper {
|
||||
public static Type getType(de.maishai.ast.Type type) {
|
||||
if (type == de.maishai.ast.Type.CHAR) {
|
||||
return Type.CHAR;
|
||||
} else if (type == de.maishai.ast.Type.BOOL) {
|
||||
return Type.BOOL;
|
||||
} else if (type == de.maishai.ast.Type.INT) {
|
||||
return Type.INT;
|
||||
} else if (type == de.maishai.ast.Type.VOID){
|
||||
return Type.VOID;
|
||||
}
|
||||
throw new RuntimeException("Unknown type");
|
||||
}
|
||||
|
||||
}
|
@ -3,7 +3,6 @@ package de.maishai.typedast.typedclass;
|
||||
import de.maishai.ast.records.Declaration;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import de.maishai.typedast.TypeMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -33,7 +32,7 @@ public class TypedField implements TypedNode {
|
||||
Declaration untypedDeclaration = (Declaration) unTypedAST;
|
||||
TypedField typedField = new TypedField();
|
||||
typedField.setVarName(untypedDeclaration.name());
|
||||
typedField.setType(TypeMapper.getType(untypedDeclaration.type()));
|
||||
typedField.setType(untypedDeclaration.type());
|
||||
|
||||
return typedField;
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
package de.maishai.typedast.typedclass;
|
||||
|
||||
import com.sun.jdi.LocalVariable;
|
||||
import de.maishai.ast.records.Declaration;
|
||||
import de.maishai.typedast.MethodContext;
|
||||
import de.maishai.typedast.TypedNode;
|
||||
import de.maishai.typedast.Type;
|
||||
import de.maishai.typedast.TypeMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -34,7 +32,7 @@ public final class TypedLocalVariable implements TypedNode {
|
||||
TypedLocalVariable typedLocalVariable = new TypedLocalVariable();
|
||||
|
||||
typedLocalVariable.setName(untypedLocalVariable.name());
|
||||
typedLocalVariable.setType(TypeMapper.getType(untypedLocalVariable.type()));
|
||||
typedLocalVariable.setType(untypedLocalVariable.type());
|
||||
|
||||
return typedLocalVariable;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public class TypedMethod implements TypedNode {
|
||||
TypedMethod typedMethod = new TypedMethod();
|
||||
|
||||
typedMethod.setName(untypedMethod.methodName());
|
||||
typedMethod.setReturnType(TypeMapper.getType(untypedMethod.type()));
|
||||
typedMethod.setReturnType(untypedMethod.type());
|
||||
|
||||
if(untypedMethod.params().isEmpty()){
|
||||
//TODO: Implement this
|
||||
@ -58,13 +58,13 @@ public class TypedMethod implements TypedNode {
|
||||
TypedParameter typedParameter = new TypedParameter();
|
||||
typedParameter.setParaName(parameter.name());
|
||||
|
||||
if(parameter.type() == de.maishai.ast.Type.CHAR){
|
||||
if(parameter.type() == Type.CHAR){
|
||||
typedParameter.setType(Type.CHAR);
|
||||
}
|
||||
if(parameter.type() == de.maishai.ast.Type.BOOL){
|
||||
if(parameter.type() == Type.BOOL){
|
||||
typedParameter.setType(Type.BOOL);
|
||||
}
|
||||
if(parameter.type() == de.maishai.ast.Type.INT){
|
||||
if(parameter.type() == Type.INT){
|
||||
typedParameter.setType(Type.INT);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ public class TypedNew implements TypedExpression, TypedStatement {
|
||||
New untyped = (New) unTypedAST;
|
||||
TypedNew typedNew = new TypedNew();
|
||||
|
||||
typedNew.setType(TypeMapper.getType(untyped.type()));
|
||||
typedNew.setType(untyped.type());
|
||||
|
||||
if(untyped.args().isEmpty()){
|
||||
//TODO: Implement this
|
||||
|
@ -20,7 +20,7 @@ public class TypedReturnVoid implements TypedStatement {
|
||||
@Override
|
||||
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.Type.VOID){
|
||||
if(untyped.type() != Type.VOID){
|
||||
throw new RuntimeException("Return type is not void");
|
||||
}
|
||||
return new TypedReturnVoid();
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.ast.records.Class;
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
//}
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.Class;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -3,7 +3,6 @@
|
||||
//}
|
||||
|
||||
import de.maishai.ast.records.Class;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.Constructor;
|
||||
import de.maishai.ast.records.Declaration;
|
||||
import de.maishai.ast.records.Method;
|
||||
|
@ -13,12 +13,6 @@
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
import de.maishai.ast.Operator;
|
||||
import de.maishai.ast.records.*;
|
||||
import de.maishai.ast.Type;
|
||||
import de.maishai.ast.records.Class;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TypedAbstractSyntax_ClassWithConstructorWithParameters {
|
||||
// public static Class get() {
|
||||
|
Loading…
Reference in New Issue
Block a user