mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-10-06 16:01:40 +00:00
Adding Package for typedAST
This commit is contained in:
parent
f544d27250
commit
515f91129f
5
pom.xml
5
pom.xml
@ -41,6 +41,11 @@
|
|||||||
<artifactId>asm-analysis</artifactId>
|
<artifactId>asm-analysis</artifactId>
|
||||||
<version>9.7</version>
|
<version>9.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>RELEASE</version>
|
||||||
|
</dependency>
|
||||||
<!-- ASM end -->
|
<!-- ASM end -->
|
||||||
|
|
||||||
<!-- ANTLR -->
|
<!-- ANTLR -->
|
||||||
|
4
src/main/java/de/maishai/typedast/Expression.java
Normal file
4
src/main/java/de/maishai/typedast/Expression.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package de.maishai.typedast;
|
||||||
|
|
||||||
|
public interface Expression extends Node{
|
||||||
|
}
|
11
src/main/java/de/maishai/typedast/Node.java
Normal file
11
src/main/java/de/maishai/typedast/Node.java
Normal 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);
|
||||||
|
|
||||||
|
}
|
4
src/main/java/de/maishai/typedast/Statement.java
Normal file
4
src/main/java/de/maishai/typedast/Statement.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package de.maishai.typedast;
|
||||||
|
|
||||||
|
public interface Statement extends Node{
|
||||||
|
}
|
26
src/main/java/de/maishai/typedast/Type.java
Normal file
26
src/main/java/de/maishai/typedast/Type.java
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
26
src/main/java/de/maishai/typedast/typedclass/Class.java
Normal file
26
src/main/java/de/maishai/typedast/typedclass/Class.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
23
src/main/java/de/maishai/typedast/typedclass/Field.java
Normal file
23
src/main/java/de/maishai/typedast/typedclass/Field.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
27
src/main/java/de/maishai/typedast/typedclass/Method.java
Normal file
27
src/main/java/de/maishai/typedast/typedclass/Method.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
23
src/main/java/de/maishai/typedast/typedclass/Parameter.java
Normal file
23
src/main/java/de/maishai/typedast/typedclass/Parameter.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user