Skip to content

Commit 5cd75f0

Browse files
committed
2 parents e393226 + c4729ef commit 5cd75f0

File tree

72 files changed

+3094
-121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+3094
-121
lines changed

Abstrakte Grammatik.txt

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
Program :: Ident ClassList
2+
ClassList :: Class +
3+
Class :: ClassMember
4+
ClassMember = Method, Field MainMethod
5+
Field :: Type Ident
6+
Method :: ParameterList BasicBlock
7+
Main Method :: ParameterList BasicBlock
8+
ParameterList :: Parameter +
9+
Parameter :: Type Ident
10+
Type :: BasicType Dimension
11+
12+
StatementList :: Statement +
13+
Statement = IfStatement | WhileStatement | VariableDeclaration | BasicBlock | ExpressionsStatement | EmptyStatement | ReturnStatement
14+
IfStatement :: Expression Statement Statement(MayNull)
15+
WhileStatement :: Expression Statement
16+
VariableDeclaration :: Type Ident Expression
17+
BasicBlock :: Declarations StatementList
18+
ExpressionsStatement :: Expression
19+
EmptyStatement ::
20+
ReturnStatement :: Expression
21+
22+
ExpressionList :: Expression +
23+
Expression = BinaryExpression | UnaryExpression
24+
25+
BinaryExpression = AssignementExpression | LogicalOrExpression | LogicalAndExpression | EqualityExpression | UnequalityExpression | LessExpression | LessEqualExpression
26+
| GraterEqualExpression | GreaterExpression | AddExpression | SubExpression | MultExpression | DivExpression | ModExpression
27+
AssignementExpression :: Expression Expression
28+
LogicalOrExpression :: Expression Expression
29+
LogicalAndExpression :: Expression Expression
30+
EqualityExpression :: Expression Expression
31+
UnequalityExpression :: Expression Expression
32+
LessExpression :: Expression Expression
33+
LessEqualExpression :: Expression Expression
34+
GraterEqualExpression :: Expression Expression
35+
GreaterExpression :: Expression Expression
36+
AddExpression :: Expression Expression
37+
SubExpression :: Expression Expression
38+
MultExpression :: Expression Expression
39+
DivExpression :: Expression Expression
40+
ModExpression :: Expression Expression
41+
42+
UnaryExpression = LogicalNotExpression | MinusExpression | PostfixExpression
43+
LogicalNotExpression :: UnaryExpression
44+
MinusExpression :: UnaryExpression
45+
PostfixExpression = MethodInvocation | FieldAccess | ArrayAccess | PrimaryExpression
46+
MethodInvocation :: PosfixExpression Ident ArgumentList
47+
ArgumentList :: Argument +
48+
Argument :: ExpressionList
49+
FieldAccess :: PosfixExpression Ident
50+
ArrayAccess :: PosfixExpression Expression
51+
52+
PrimaryExpression = NullExpression | BooleanExpression | IntegerLiteral | Varaible | LocalMethodInvocation | ThisExpression | CapsuledExpression | NewObjectExpression | NewArrayExpression
53+
NullExpression ::
54+
BooleanExpression :: boolean
55+
IntegerLiteral :: int
56+
Varaible :: Ident
57+
LocalMethodInvocation :: Ident ArgumentList
58+
ThisExpression ::
59+
CapsuledExpression :: Expression
60+
NewObjectExpression :: Ident
61+
NewArrayExpression :: Type Expression Dimension
62+
Dimension :: int

src/main/java/de/dercompiler/ast/Method.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public final class Method extends ClassMember {
1515
private final List<Parameter> parameters;
1616
private final MethodRest methodRest;
1717
private final BasicBlock block;
18+
private ClassDeclaration surrounding;
1819

1920
// INFO: methodRest may be null
2021
public Method(SourcePosition position, Type type, String identifier, List<Parameter> parameters, MethodRest methodRest, BasicBlock block) {
@@ -69,4 +70,12 @@ public boolean syntaxEquals(ASTNode other) {
6970
public void accept(ASTNodeVisitor astNodeVisitor) {
7071
astNodeVisitor.visitMethod(this);
7172
}
73+
74+
public void setSurroundingClass(ClassDeclaration declaration) {
75+
this.surrounding = declaration;
76+
}
77+
78+
public ClassDeclaration getSurroundingClass() {
79+
return surrounding;
80+
}
7281
}

src/main/java/de/dercompiler/ast/Program.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
public final class Program extends ASTNode {
1212

1313
private final List<ClassDeclaration> classes;
14+
private boolean isIndexed;
1415

1516
public Program(SourcePosition position, List<ClassDeclaration> classes) {
1617
super(position);
1718
this.classes = classes;
19+
isIndexed = false;
1820
}
1921

2022
public List<ClassDeclaration> getClasses() {
@@ -38,4 +40,12 @@ public void accept(ASTNodeVisitor astNodeVisitor) {
3840
}
3941
astNodeVisitor.visitProgram(this);
4042
}
43+
44+
public boolean isIndexed() {
45+
return isIndexed;
46+
}
47+
48+
public void indexed() {
49+
isIndexed = true;
50+
}
4151
}

src/main/java/de/dercompiler/ast/expression/AbstractExpression.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/main/java/de/dercompiler/ast/expression/AddExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public final class AddExpression extends BinaryExpression {
1212

13-
public AddExpression(SourcePosition position, AbstractExpression lhs, AbstractExpression rhs) {
13+
public AddExpression(SourcePosition position, Expression lhs, Expression rhs) {
1414
super(position, lhs, rhs);
1515
}
1616

src/main/java/de/dercompiler/ast/expression/Arguments.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111

1212
public class Arguments extends ASTNode {
1313

14-
private LinkedList<AbstractExpression> arguments;
14+
private LinkedList<Expression> arguments;
1515

1616
public Arguments(SourcePosition position) {
1717
super(position);
1818
this.arguments = new LinkedList<>();
1919
}
2020

21-
public Arguments(SourcePosition position, List<AbstractExpression> arguments) {
21+
public Arguments(SourcePosition position, List<Expression> arguments) {
2222
this(position);
23-
for (AbstractExpression ae : arguments) {
23+
for (Expression ae : arguments) {
2424
this.arguments.addLast(ae);
2525
}
2626
}
2727

28-
public void addArgument(AbstractExpression expression) {
28+
public void addArgument(Expression expression) {
2929
this.arguments.addLast(expression);
3030
}
3131

@@ -35,11 +35,11 @@ public boolean syntaxEquals(ASTNode other) {
3535
if (other instanceof Arguments a) {
3636
if (a.arguments.size() != arguments.size()) return false;
3737
boolean result = true;
38-
Iterator<AbstractExpression> itThis = arguments.iterator();
39-
Iterator<AbstractExpression> itO = a.arguments.iterator();
38+
Iterator<Expression> itThis = arguments.iterator();
39+
Iterator<Expression> itO = a.arguments.iterator();
4040
while (itThis.hasNext()) {
41-
AbstractExpression expThis = itThis.next();
42-
AbstractExpression expO = itO.next();
41+
Expression expThis = itThis.next();
42+
Expression expO = itO.next();
4343
result &= expThis.syntaxEquals(expO);
4444
}
4545
return result;
@@ -56,7 +56,7 @@ public int getLength() {
5656
return arguments.size();
5757
}
5858

59-
public AbstractExpression get(int index) {
59+
public Expression get(int index) {
6060
return arguments.get(index);
6161
}
6262
}

src/main/java/de/dercompiler/ast/expression/ArrayAccess.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
public final class ArrayAccess extends PostfixExpression {
1010

11-
private AbstractExpression index;
11+
private Expression index;
1212

13-
public ArrayAccess(SourcePosition position, AbstractExpression encapsulated, AbstractExpression index) {
13+
public ArrayAccess(SourcePosition position, Expression encapsulated, Expression index) {
1414
super(position, encapsulated);
1515
this.index = index;
1616
}
@@ -24,7 +24,7 @@ public boolean syntaxEquals(ASTNode other) {
2424
return false;
2525
}
2626

27-
public AbstractExpression getIndex() {
27+
public Expression getIndex() {
2828
return index;
2929
}
3030

src/main/java/de/dercompiler/ast/expression/AssignmentExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public final class AssignmentExpression extends BinaryExpression {
1212

13-
public AssignmentExpression(SourcePosition position, AbstractExpression lhs, AbstractExpression rhs) {
13+
public AssignmentExpression(SourcePosition position, Expression lhs, Expression rhs) {
1414
super(position, lhs, rhs);
1515
}
1616

src/main/java/de/dercompiler/ast/expression/BinaryExpression.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66
import de.dercompiler.lexer.token.OperatorToken;
77

8-
public abstract sealed class BinaryExpression extends AbstractExpression permits AssignmentExpression, AddExpression, DivisionExpression, EqualExpression, GreaterEqualExpression, GreaterExpression, LessEqualExpression, LessExpression, LogicalAndExpression, LogicalOrExpression, ModuloExpression, MultiplyExpression, SubtractExpression, NotEqualExpression {
8+
public abstract sealed class BinaryExpression extends Expression permits AssignmentExpression, AddExpression, DivisionExpression, EqualExpression, GreaterEqualExpression, GreaterExpression, LessEqualExpression, LessExpression, LogicalAndExpression, LogicalOrExpression, ModuloExpression, MultiplyExpression, SubtractExpression, NotEqualExpression {
99

10-
private AbstractExpression lhs;
11-
private AbstractExpression rhs;
10+
private Expression lhs;
11+
private Expression rhs;
1212

13-
public BinaryExpression(SourcePosition position, AbstractExpression lhs, AbstractExpression rhs) {
13+
public BinaryExpression(SourcePosition position, Expression lhs, Expression rhs) {
1414
super(position);
1515
this.lhs = lhs;
1616
this.rhs = rhs;
@@ -20,11 +20,11 @@ protected boolean syntaxEqualLhsRhs(BinaryExpression other) {
2020
return lhs.syntaxEquals(other.lhs) && rhs.syntaxEquals(other.rhs);
2121
}
2222

23-
public AbstractExpression getLhs() {
23+
public Expression getLhs() {
2424
return lhs;
2525
}
2626

27-
public AbstractExpression getRhs() {
27+
public Expression getRhs() {
2828
return rhs;
2929
}
3030

src/main/java/de/dercompiler/ast/expression/DivisionExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public final class DivisionExpression extends BinaryExpression {
1212

13-
public DivisionExpression(SourcePosition position, AbstractExpression lhs, AbstractExpression rhs) {
13+
public DivisionExpression(SourcePosition position, Expression lhs, Expression rhs) {
1414
super(position, lhs, rhs);
1515
}
1616

0 commit comments

Comments
 (0)