summaryrefslogtreecommitdiffstats
path: root/Master/Software Architektur/SWA_Prakt2/src/net/sven_eisenhauer/swa_prakt2/EvalIter.java
diff options
context:
space:
mode:
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.java17
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);
+ }
+ }
+
+}