wrote abstract Syntax for testfiles

This commit is contained in:
JonathanFleischmann 2024-05-07 18:15:31 +02:00
parent ad2da98a34
commit 40b17bf2b8
22 changed files with 765 additions and 65 deletions

View File

@ -1,3 +0,0 @@
//public class ClassWithAssignment {
// int x = 10;
//}

View File

@ -1,11 +1,135 @@
//public class ClassWithConstructor {
// int x = 10;
// int x;
// public classWithConstructor() {
// this.x = 10;
// for (int i = 0; i < 6; i++) {
// for (int j = 0; j < this.x; j++) {
// int i;
// for (i = 0; i < 6; i = i + 1) {
// int j;
// for (j = 0; j < this.x; j += 1) {
// this.x = this.x * this.x;
// }
// }
// }
//}
//}
import de.maishai.ast.*;
import de.maishai.ast.records.*;
import de.maishai.ast.records.Class;
import java.util.List;
public class AbstractSyntax_ClassWithConstructor {
public static Class get() {
List<Field> fields = List.of(
new Field(
new Id("x"),
Type.INT
)
);
List<Method> methods = List.of();
List<Constructor> constructors = getConstructors();
return new Class(
true,
new Id("ClassWithConstructor"),
fields,
methods,
null,
constructors
);
}
private static List<Constructor> getConstructors() {
return List.of(getConstructor1());
}
private static Constructor getConstructor1() {
List<Parameter> parameters = List.of();
List<LocalVariable> localVariables = List.of(
new LocalVariable(
new Id("i"),
Type.INT
)
);
List<Statement> statementList = List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new IntLiteral(10)
),
new For(
new Assignment(
new Id("i"),
AssignSign.ASSIGN,
new IntLiteral(0)
),
new Binary(
new Id("i"),
Operator.LT,
new IntLiteral(6)
),
new Assignment(
new Id("i"),
AssignSign.ASSIGN,
new Binary(
new Id("i"),
Operator.ADD,
new IntLiteral(1)
)
),
new Block(
List.of(
new LocalVariable(
new Id("j"),
Type.INT
)
),
List.of(
new For(
new Assignment(
new Id("j"),
AssignSign.ASSIGN,
new IntLiteral(0)
),
new Binary(
new Id("j"),
Operator.LT,
new Id("x")
),
new Assignment(
new Id("j"),
AssignSign.ADD_ASSIGN,
new IntLiteral(1)
),
new Block(
List.of(),
List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new Binary(
new Id("x"),
Operator.MUL,
new Id("x")
)
)
)
)
)
)
)
)
);
Block block = new Block(
localVariables,
statementList
);
return new Constructor(
true,
new Id("ClassWithConstructor"),
parameters,
block
);
}
}

View File

@ -1,6 +1,7 @@
//public class ClassWithConstructorAndMethodCall {
// int x = 10;
// public classWithConstructorAndMethodCall() {
// int x;
//
// public ClassWithConstructorAndMethodCall() {
// this.x = 10;
// while (methodCall()) {
// this.x = this.x * this.x;
@ -8,10 +9,127 @@
// }
//
// public boolean methodCall() {
// if (x > 100) {
// if (this.x > 100) {
// return false;
// } else {
// return true;
// }
// }
//}
//}
import de.maishai.ast.AssignSign;
import de.maishai.ast.Operator;
import de.maishai.ast.ReturnType;
import de.maishai.ast.Type;
import de.maishai.ast.records.*;
import de.maishai.ast.records.Class;
import java.util.List;
public class AbstractSyntax_ClassWithConstructorAndMethodCall {
public static Class get() {
List<Field> fieldList = List.of(
new Field(
new Id("x"),
Type.INT
)
);
List<Method> methodList = getMethods();
List<Constructor> constructorList = getConstructors();
return new Class(
true,
new Id("ClassWithConstructorAndMethodCall"),
fieldList,
methodList,
null,
constructorList
);
}
private static List<Constructor> getConstructors() {
return List.of(getConstructor1());
}
private static Constructor getConstructor1() {
Block block = new Block(
List.of(),
List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new IntLiteral(10)
),
new While(
new MethodCall(
true,
null,
new Id("methodCall"),
List.of()
),
new Block(
List.of(),
List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new Binary(
new Id("x"),
Operator.MUL,
new Id("x")
)
)
)
)
)
)
);
return new Constructor(
true,
new Id("ClassWithConstructorAndMethodCall"),
List.of(),
block
);
}
private static List<Method> getMethods() {
return List.of(getMethod1());
}
private static Method getMethod1() {
return new Method(
true,
ReturnType.BOOL,
new Id("methodCall"),
List.of(),
new Block(
List.of(),
List.of(
new IfElse(
new Binary(
new Id("x"),
Operator.GT,
new IntLiteral(100)
),
new Block(
List.of(),
List.of(
new Return(
new BoolLiteral(false)
)
)
),
new Block(
List.of(),
List.of(
new Return(
new BoolLiteral(true)
)
)
)
)
)
)
);
}
}

View File

@ -1,14 +1,130 @@
//public class ClassWithConstructorWithParameters {
// int x = 0;
// public classWithConstructorWithParameters(int startvalue, int repitions) {
// this.x = startvalue;
// while (repitions > 0) {
// int innerRepititions = this.x;
// while (innerRepititions > 0) {
// int x;
// public classWithConstructorWithParameters(int startValue, int repetitions) {
// this.x = startValue;
// while (repetitions > 0) {
// int innerRepetitions;
// innerRepetitions = this.x;
// while (innerRepetitions > 0) {
// this.x = this.x * this.x;
// innerRepititions--;
// innerRepetitions -= 1;
// }
// repitions--;
// repetitions -= 1;
// }
// }
//}
//}
import de.maishai.ast.AssignSign;
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 AbstractSyntax_ClassWithConstructorWithParameters {
public static Class get() {
List<Field> fields = List.of(
new Field(
new Id("x"),
Type.INT
)
);
List<Constructor> constructors = getConstructors();
return new Class(
true,
new Id("ClassWithConstructorWithParameters"),
fields,
List.of(),
null,
constructors
);
}
private static List<Constructor> getConstructors() {
return List.of(getConstructor1());
}
private static Constructor getConstructor1() {
List<Parameter> parameters = List.of(
new Parameter(
"startValue",
Type.INT
),
new Parameter(
"repetitions",
Type.INT
)
);
Block block = new Block(
List.of(),
List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new Id("startValue")
),
new While(
new Binary(
new Id("repetitions"),
Operator.GT,
new IntLiteral(0)
),
new Block(
List.of(
new LocalVariable(
new Id("innerRepetitions"),
Type.INT
)
),
List.of(
new Assignment(
new Id("innerRepetitions"),
AssignSign.ASSIGN,
new Id("x")
),
new While(
new Binary(
new Id("repetitions"),
Operator.GT,
new IntLiteral(0)
),
new Block(
List.of(),
List.of(
new Assignment(
new Id("x"),
AssignSign.ASSIGN,
new Binary(
new Id("x"),
Operator.MUL,
new Id("x")
)
),
new Assignment(
new Id("innerRepetitions"),
AssignSign.SUB_ASSIGN,
new IntLiteral(1)
)
)
)
),
new Assignment(
new Id("repetitions"),
AssignSign.SUB_ASSIGN,
new IntLiteral(1)
)
)
)
)
)
);
return new Constructor(
true,
new Id("classWithConstructorWithParameters"),
parameters,
block
);
}
}

View File

@ -0,0 +1,33 @@
//public class ClassWithField {
// int x;
//}
import de.maishai.ast.records.Class;
import de.maishai.ast.Type;
import de.maishai.ast.records.Constructor;
import de.maishai.ast.records.Field;
import de.maishai.ast.records.Id;
import de.maishai.ast.records.Method;
import java.util.List;
public class AbstractSyntax_ClassWithField {
public static Class get() {
List<Field> fields = List.of(
new Field(
new Id("x"),
Type.INT
)
);
List<Method> methods = List.of();
List<Constructor> constructors = List.of();
return new Class(
true,
new Id("ClassWithAssignment"),
fields,
methods,
null,
constructors
);
}
}

View File

@ -1,4 +1,46 @@
//public class ClassWithMethod {
// public boolean method() {
// return false;
// }
//}
//}
import de.maishai.ast.ReturnType;
import de.maishai.ast.records.Class;
import de.maishai.ast.records.*;
import java.util.List;
public class AbstractSyntax_ClassWithMethod {
public static Class get() {
List<Method> methods = getMethods();
return new Class(
true,
new Id("ClassWithMethod"),
List.of(),
methods,
null,
List.of()
);
}
private static List<Method> getMethods() {
return List.of(getMethod1());
}
private static Method getMethod1() {
return new Method(
true,
ReturnType.BOOL,
new Id("method"),
List.of(),
new Block(
List.of(),
List.of(
new Return(
new BoolLiteral(false)
)
)
)
);
}
}

View File

@ -1,6 +0,0 @@
//public class ClassWithMethodAndAssignement {
// char c = 'c';
//
// public boolean method() {
// }
//}

View File

@ -0,0 +1,86 @@
//public class ClassWithMethodAndField {
// char c;
//
// public ClassWithMethodAndField(char character) {
// this.c = character;
// }
//
// public boolean method() {
// return true;
// }
//}
import de.maishai.ast.*;
import de.maishai.ast.records.*;
import de.maishai.ast.records.Class;
import java.util.List;
class AbstractSyntax_ClassWithMethodAndField {
public static Class get() {
List<Field> fields = List.of(
new Field(
new Id("c"),
Type.CHAR
)
);
List<Method> methods = getMethods();
List<Constructor> constructors = getConstructors();
return new Class(
false,
new Id("ClassWithMethodAndField"),
fields,
methods,
null,
constructors
);
}
private static List<Constructor> getConstructors() {
return List.of(getConstructor1());
}
private static Constructor getConstructor1() {
return new Constructor(
true,
new Id("ClassWithMethodAndField"),
List.of(
new Parameter(
"character",
Type.CHAR
)
),
new Block(
List.of(),
List.of(
new Assignment(
new Id("c"),
AssignSign.ASSIGN,
new Id("character")
)
)
)
);
}
private static List<Method> getMethods() {
return List.of(getMethod1());
}
private static Method getMethod1() {
return new Method(
true,
ReturnType.BOOL,
new Id("method"),
List.of(),
new Block(
List.of(),
List.of(
new Return(
new BoolLiteral(true)
)
)
)
);
}
}

View File

@ -1,6 +0,0 @@
//public class ClassWithMoreComplexMethod {
// public boolean moreComplexMethod() {
// int i = 0;
// return true;
// }
//}

View File

@ -0,0 +1,137 @@
//public class ClassWithMoreComplexMethodAndMain {
// ClassWithMoreComplexMethodAndMain instance;
//
// public boolean moreComplexMethod() {
// int i;
// i = 11;
// boolean returnValue;
// returnValue = false;
// while (i > 0) {
// i -= 1;
// returnValue = !returnValue;
// }
// return returnValue;
// }
//
// public static void main(String[] args) {
// instance = new ClassWithMoreComplexMethodAndMain()
// }
//}
import de.maishai.ast.*;
import de.maishai.ast.records.*;
import de.maishai.ast.records.Class;
import java.util.List;
public class AbstractSyntax_ClassWithMoreComplexMethodAndMain {
public static Class get() {
Type TypeClassWithMoreComplexMethodAndMain = Type.OBJECT;
TypeClassWithMoreComplexMethodAndMain.setObjectType(new Id("ClassWithMoreComplexMethodAndMain"));
List<Field> fields = List.of(
new Field(
new Id("instance"),
TypeClassWithMoreComplexMethodAndMain
)
);
List<Method> methods = getMethods();
List<Constructor> constructors = List.of();
return new Class(
true,
new Id("ClassWithMoreComplexMethodAndMain"),
fields,
methods,
getMainMethod(),
constructors
);
}
private static List<Method> getMethods() {
return List.of(getMethod1());
}
private static Method getMethod1() {
Block block = new Block(
List.of(
new LocalVariable(
new Id("i"),
Type.INT
),
new LocalVariable(
new Id("returnValue"),
Type.BOOL
)
),
List.of(
new Assignment(
new Id("i"),
AssignSign.ASSIGN,
new IntLiteral(11)
),
new Assignment(
new Id("returnValue"),
AssignSign.ASSIGN,
new BoolLiteral(false)
),
new While(
new Binary(
new Id("i"),
Operator.GT,
new IntLiteral(0)
),
new Block(
List.of(),
List.of(
new Assignment(
new Id("i"),
AssignSign.SUB_ASSIGN,
new IntLiteral(1)
),
new Assignment(
new Id("returnValue"),
AssignSign.ASSIGN,
new Unary(
UnaryOperator.NOT,
new Id("returnValue")
)
)
)
)
),
new Return(
new Id("returnValue")
)
)
);
return new Method(
true,
ReturnType.BOOL,
new Id("moreComplexMethod"),
List.of(),
block
);
}
private static MainMethod getMainMethod() {
Type TypeClassWithMoreComplexMethodAndMain = Type.OBJECT;
TypeClassWithMoreComplexMethodAndMain.setObjectType(new Id("ClassWithMoreComplexMethodAndMain"));
List<Statement> statementList = List.of(
new Assignment(
new Id("instance"),
AssignSign.ASSIGN,
new New(
TypeClassWithMoreComplexMethodAndMain,
List.of()
)
)
);
Block block = new Block(
List.of(),
statementList
);
return new MainMethod(
block
);
}
}

View File

@ -1,2 +1,20 @@
//class OnlyClass {
//}
//}
import de.maishai.ast.records.*;
import de.maishai.ast.records.Class;
import java.util.List;
public class AbstractSyntax_OnlyClass {
public static Class get() {
return new Class(
true,
new Id("OnlyClass"),
List.of(),
List.of(),
null,
List.of()
);
}
}

View File

@ -1,2 +1,20 @@
//public class PublicClass {
//}
//}
import de.maishai.ast.records.Class;
import de.maishai.ast.records.Id;
import java.util.List;
public class AbstractSyntax_PublicClass {
public static Class get() {
return new Class(
true,
new Id("PublicClass"),
List.of(),
List.of(),
null,
List.of()
);
}
}

View File

@ -1,3 +0,0 @@
public class ClassWithAssignment {
int x = 10;
}

View File

@ -1,9 +1,11 @@
public class ClassWithConstructor {
int x = 10;
int x;
public classWithConstructor() {
this.x = 10;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < this.x; j++) {
int i;
for (i = 0; i < 6; i = i + 1) {
int j;
for (j = 0; j < this.x; j += 1) {
this.x = this.x * this.x;
}
}

View File

@ -1,6 +1,7 @@
public class ClassWithConstructorAndMethodCall {
int x = 10;
public classWithConstructorAndMethodCall() {
int x;
public ClassWithConstructorAndMethodCall() {
this.x = 10;
while (methodCall()) {
this.x = this.x * this.x;
@ -8,10 +9,10 @@ public class ClassWithConstructorAndMethodCall {
}
public boolean methodCall() {
if (x > 100) {
if (this.x > 100) {
return false;
} else {
return true;
}
}
}
}

View File

@ -1,14 +1,15 @@
public class ClassWithConstructorWithParameters {
int x = 0;
public classWithConstructorWithParameters(int startvalue, int repitions) {
this.x = startvalue;
while (repitions > 0) {
int innerRepititions = this.x;
while (innerRepititions > 0) {
int x;
public classWithConstructorWithParameters(int startValue, int repetitions) {
this.x = startValue;
while (repetitions > 0) {
int innerRepetitions;
innerRepetitions = this.x;
while (innerRepetitions > 0) {
this.x = this.x * this.x;
innerRepititions--;
innerRepetitions -= 1;
}
repitions--;
repetitions -= 1;
}
}
}

View File

@ -0,0 +1,3 @@
public class ClassWithField {
int x;
}

View File

@ -1,4 +1,5 @@
public class ClassWithMethod {
public boolean method() {
return false;
}
}

View File

@ -1,6 +0,0 @@
public class ClassWithMethodAndAssignement {
char c = 'c';
public boolean method() {
}
}

View File

@ -0,0 +1,11 @@
public class ClassWithMethodAndField {
char c;
public ClassWithMethodAndField(char character) {
this.c = character;
}
public boolean method() {
return true;
}
}

View File

@ -1,6 +0,0 @@
public class ClassWithMoreComplexMethod {
public boolean moreComplexMethod() {
int i = 0;
return true;
}
}

View File

@ -0,0 +1,19 @@
public class ClassWithMoreComplexMethodAndMain {
ClassWithMoreComplexMethodAndMain instance;
public boolean moreComplexMethod() {
int i;
i = 11;
boolean returnValue;
returnValue = false;
while (i > 0) {
i -= 1;
returnValue = !returnValue;
}
return returnValue;
}
public static void main(String[] args) {
instance = new ClassWithMoreComplexMethodAndMain()
}
}