diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/ASTNode.java b/AlgebraicDataflowArchitectureModel/src/java/ast/ASTNode.java new file mode 100644 index 0000000..0d600e0 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/ASTNode.java @@ -0,0 +1,13 @@ +package java.ast; + +public abstract class ASTNode { + private ASTNode parent; + + public ASTNode getParent() { + return parent; + } + + public void setParent(ASTNode parent) { + this.parent = parent; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/AbstractTypeDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/AbstractTypeDeclaration.java new file mode 100644 index 0000000..52de580 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/AbstractTypeDeclaration.java @@ -0,0 +1,13 @@ +package java.ast; + +public class AbstractTypeDeclaration extends BodyDeclaration { + protected String typeName = null; + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/Block.java b/AlgebraicDataflowArchitectureModel/src/java/ast/Block.java new file mode 100644 index 0000000..48a98c7 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/Block.java @@ -0,0 +1,20 @@ +package java.ast; + +import java.util.List; +import java.util.ArrayList; + +public class Block extends ASTNode { + private List statements = new ArrayList(); + + public List getStatements() { + return statements; + } + + public void setStatements(List statements) { + this.statements = statements; + } + + public void addStatement(String statement) { + statements.add(statement); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/BodyDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/BodyDeclaration.java new file mode 100644 index 0000000..2bfedd7 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/BodyDeclaration.java @@ -0,0 +1,13 @@ +package java.ast; + +public abstract class BodyDeclaration extends ASTNode { + private int modifiers = 0; + + public int getModifiers() { + return modifiers; + } + + public void setModifiers(int modifiers) { + this.modifiers = modifiers; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/FieldDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/FieldDeclaration.java new file mode 100644 index 0000000..583d3a0 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/FieldDeclaration.java @@ -0,0 +1,29 @@ +package java.ast; + +import models.algebra.Type; + +public class FieldDeclaration extends BodyDeclaration { + private Type type; + private String fieldName; + + public FieldDeclaration(Type type, String fieldName) { + this.type = type; + this.fieldName = fieldName; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getName() { + return fieldName; + } + + public void setName(String fieldName) { + this.fieldName = fieldName; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/MethodDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/MethodDeclaration.java new file mode 100644 index 0000000..1099dc4 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/MethodDeclaration.java @@ -0,0 +1,87 @@ +package java.ast; + +import java.util.List; +import java.util.ArrayList; +import models.algebra.Type; + +public class MethodDeclaration extends BodyDeclaration { + private String name = null; + private boolean isConstructor = false; + private Type returnType = null; + private List parameters = null; + private Block body = null; + + public MethodDeclaration(String methodName) { + this(methodName, false); + } + + public MethodDeclaration(String methodName, boolean isConstructor) { + this.name = methodName; + this.isConstructor = isConstructor; + } + + public MethodDeclaration(String methodName, boolean isConstructor, Type returnType, List parameters) { + this(methodName, isConstructor, returnType, parameters, null); + } + + public MethodDeclaration(String methodName, boolean isConstructor, Type returnType, List parameters, Block body) { + this(methodName, isConstructor); + this.returnType = returnType; + this.parameters = parameters; + this.body = body; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isConstructor() { + return isConstructor; + } + + public void setConstructor(boolean isConstructor) { + this.isConstructor = isConstructor; + } + + public Type getReturnType() { + return returnType; + } + + public void setReturnType(Type returnType) { + this.returnType = returnType; + } + + public List getParameters() { + return parameters; + } + + public void setParameters(List parameters) { + this.parameters = parameters; + } + + public void addParameter(VariableDeclaration parameter) { + if (parameters == null) { + parameters = new ArrayList<>(); + } + parameters.add(parameter); + } + + public Block getBody() { + return body; + } + + public void setBody(Block body) { + this.body = body; + } + + public void addStatement(String statement) { + if (body == null) { + body = new Block(); + } + body.addStatement(statement); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/Modifier.java b/AlgebraicDataflowArchitectureModel/src/java/ast/Modifier.java new file mode 100644 index 0000000..564c8f1 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/Modifier.java @@ -0,0 +1,29 @@ +package java.ast; + +public class Modifier extends ASTNode { + public static final int ABSTRACT = 0x0400; + public static final int PRIVATE = 0x0002; + public static final int PROTECTED = 0x0004; + public static final int PUBLIC = 0x0001; + public static final int STATIC = 0x0008; + + public static boolean isAbstract(int flags) { + return (flags & ABSTRACT) != 0; + } + + public static boolean isPrivate(int flags) { + return (flags & PRIVATE) != 0; + } + + public static boolean isProtected(int flags) { + return (flags & PROTECTED) != 0; + } + + public static boolean isPublic(int flags) { + return (flags & PUBLIC) != 0; + } + + public static boolean isStatic(int flags) { + return (flags & STATIC) != 0; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/TypeDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/TypeDeclaration.java new file mode 100644 index 0000000..9e50149 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/TypeDeclaration.java @@ -0,0 +1,41 @@ +package java.ast; + +import java.util.List; +import java.util.ArrayList; + +public class TypeDeclaration extends AbstractTypeDeclaration { + private List fields = new ArrayList<>(); + private List methods = new ArrayList<>(); + + public TypeDeclaration(String typeName) { + this.typeName = typeName; + } + + public TypeDeclaration(String typeName, List fields) { + this.typeName = typeName; + this.fields = fields; + } + + public TypeDeclaration(String typeName, List fields, List methods) { + this.typeName = typeName; + this.fields = fields; + this.methods = methods; + } + + public void addField(FieldDeclaration field) { + fields.add(field); + } + + public void addMethod(MethodDeclaration method) { + methods.add(method); + } + + public List getFields() { + return fields; + } + + public List getMethods() { + return methods; + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/java/ast/VariableDeclaration.java b/AlgebraicDataflowArchitectureModel/src/java/ast/VariableDeclaration.java new file mode 100644 index 0000000..e2ea48e --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/java/ast/VariableDeclaration.java @@ -0,0 +1,29 @@ +package java.ast; + +import models.algebra.Type; + +public class VariableDeclaration extends ASTNode { + private Type type; + private String variableName; + + public VariableDeclaration(Type type, String variableName) { + this.type = type; + this.variableName = variableName; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getName() { + return variableName; + } + + public void setName(String variableName) { + this.variableName = variableName; + } +}