Adding Package for typedAST

This commit is contained in:
Ahmad 2024-05-02 15:06:44 +02:00
parent f544d27250
commit 515f91129f
9 changed files with 149 additions and 0 deletions

View File

@ -41,6 +41,11 @@
<artifactId>asm-analysis</artifactId>
<version>9.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
</dependency>
<!-- ASM end -->
<!-- ANTLR -->

View File

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

View File

@ -0,0 +1,11 @@
package de.maishai.typedast;
import de.maishai.typedast.typedclass.Class;
import java.util.Map;
public interface Node {
Type typeCheck(Map<String, Type> localVar, Map<String, Class> classes);
Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes);
}

View File

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

View File

@ -0,0 +1,26 @@
package de.maishai.typedast;
public class Type {
public enum Kind{
INT,
BOOL,
CHAR,
VOID,
REFERENCE
}
private final Kind kind;
private final String reference;
public Type(Kind kind, String reference){
this.kind = kind;
this.reference = reference;
}
public static Type INT = new Type(Kind.INT, null);
public static Type BOOL = new Type(Kind.BOOL, null);
public static Type CHAR = new Type(Kind.CHAR, null);
public static Type VOID = new Type(Kind.VOID, null);
public static Type REFERENCE(String reference){
return new Type(Kind.REFERENCE, reference);
}
}

View File

@ -0,0 +1,26 @@
package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node;
import de.maishai.typedast.Type;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class Class implements Node {
private String name;
private List<Field> fields;
private List<Method> methods;
@Override
public Type typeCheck(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
@Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
}

View File

@ -0,0 +1,23 @@
package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node;
import de.maishai.typedast.Type;
import lombok.Data;
import java.util.Map;
@Data
public class Field implements Node {
private String name;
private Type type;
@Override
public Type typeCheck(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
@Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
}

View File

@ -0,0 +1,27 @@
package de.maishai.typedast.typedclass;
import de.maishai.ast.records.Block;
import de.maishai.typedast.Node;
import de.maishai.typedast.Type;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class Method implements Node {
private String name;
private Type returnType;
private List<Parameter> parameters;
private Block block;
@Override
public Type typeCheck(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
@Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
}

View File

@ -0,0 +1,23 @@
package de.maishai.typedast.typedclass;
import de.maishai.typedast.Node;
import de.maishai.typedast.Type;
import lombok.Data;
import java.util.Map;
@Data
public class Parameter implements Node {
private String name;
private Type type;
@Override
public Type typeCheck(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
@Override
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
return null;
}
}