Skip to content
Snippets Groups Projects
Commit 9a8c6438 authored by Dominic Daniel Krämer's avatar Dominic Daniel Krämer
Browse files

implemented basics for the visitor pattern

parent e04b6e92
No related branches found
No related tags found
1 merge request!10Dominicsbranch
1 + xy^2 - (31 * x)y
1 + x^2 - (3 * x)
2x + 0.5x^2 - 1
((5+2)-8)-8+12
(5*2-(5^2)+3*(201.01-15))
\ No newline at end of file
public class Evaluator {
}
......@@ -3,14 +3,11 @@ import java.util.List;
public class Parser {
public static class Expression {
@Override
public String toString() {
return "";
}
public abstract class Expression {
public abstract <T> T accept(Visitor<T> visitor);
}
private class BinaryOperation extends Expression {
public class BinaryOperation extends Expression {
Expression leftExpression;
String operator;
Expression rightExpression;
......@@ -21,23 +18,18 @@ public class Parser {
this.rightExpression = rightExpression;
this.capsuled = capsuled;
}
@Override
public String toString() {
if(capsuled) {
return "("+ leftExpression.toString() + operator + rightExpression.toString() + ")";
}
return leftExpression.toString() + operator + rightExpression.toString();
public <T> T accept(Visitor<T> visitor) {
return visitor.visit(this);
}
}
private class Variable extends Expression {
public class Variable extends Expression {
String variableName;
public Variable(String i, Boolean capsuled) {
this.variableName = i;
}
@Override
public String toString() {
return variableName;
public <T> T accept(Visitor<T> visitor) {
return visitor.visit(this);
}
}
......@@ -45,18 +37,17 @@ public class Parser {
}
private class Number extends Value {
public class Number extends Value {
public String digits;
public Number(String i) {
this.digits = i;
}
@Override
public String toString() {
return digits;
public <T> T accept(Visitor<T> visitor) {
return visitor.visit(this);
}
}
private class Decimal extends Value {
public class Decimal extends Value {
public Number beforeDot;
public Number afterDot;
......@@ -64,9 +55,8 @@ public class Parser {
this.beforeDot = i1;
this.afterDot = i2;
}
@Override
public String toString() {
return beforeDot.toString() + "." + afterDot.toString();
public <T> T accept(Visitor<T> visitor) {
return visitor.visit(this);
}
}
......
public interface Visitor<T>{
public T visit(final Parser.BinaryOperation binOp);
public T visit(final Parser.Variable variable);
public T visit(final Parser.Number number);
public T visit(final Parser.Decimal decimal);
}
2. Testklassen
3. Visitor pattern
4. plot function
5. Überarbeiten
-> Dokumentation
-> Exceptions
-> Kommentare
-> Code strukturieren
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment