diff options
Diffstat (limited to 'Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java')
| -rw-r--r-- | Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java b/Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java new file mode 100644 index 0000000..f356491 --- /dev/null +++ b/Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java @@ -0,0 +1,17 @@ +package net.sven_eisenhauer.swa_prakt1; + +public class EvalIter implements ExpIter { + + @Override + public Number traverse(ArithmeticExpression exp) { + if(exp instanceof ArithmeticVariable) { + return ((ArithmeticVariable) exp).getValue(); + } else { + ArithmeticOperation actOp = (ArithmeticOperation) exp; + Number leftVal = traverse(actOp.getLeftOperand()); + Number rightVal = traverse(actOp.getRightOperand()); + return actOp.doOperation(leftVal, rightVal); + } + } + +} |
