summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations
diff options
context:
space:
mode:
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java24
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java24
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java25
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java25
10 files changed, 248 insertions, 0 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java
new file mode 100644
index 0000000..3060883
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.DecimalValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Addition extends Expression {
+ private Expression a, b;
+
+ public Addition (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public DecimalValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof DecimalValue) || !(bval instanceof DecimalValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new DecimalValue ((((DecimalValue) aval).getValue(vars, program)).add(((DecimalValue) bval).getValue(vars, program)));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java
new file mode 100644
index 0000000..e52571f
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class BitAnd extends Expression {
+ private Expression a, b;
+
+ public BitAnd (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).add(((IntValue) bval).intValue(vars, program)));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java
new file mode 100644
index 0000000..6ec203c
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class BitOr extends Expression {
+ private Expression a, b;
+
+ public BitOr (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).or(((IntValue) bval).intValue(vars, program)));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java
new file mode 100644
index 0000000..d761b23
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class BitXOr extends Expression {
+ private Expression a, b;
+
+ public BitXOr (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).xor(((IntValue) bval).intValue(vars, program)));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java
new file mode 100644
index 0000000..7c92bd9
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java
@@ -0,0 +1,24 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.DecimalValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Division extends Expression {
+ private Expression a, b;
+
+ public Division (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public DecimalValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof DecimalValue) || !(bval instanceof DecimalValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new DecimalValue ((((DecimalValue) aval).getValue(vars, program)).divide(((DecimalValue) bval).getValue(vars, program)));
+ }
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java
new file mode 100644
index 0000000..641e7a4
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Modulo extends Expression {
+ private Expression a, b;
+
+ public Modulo (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).mod(((IntValue) bval).intValue(vars, program)));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java
new file mode 100644
index 0000000..05d3287
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java
@@ -0,0 +1,24 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.DecimalValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Multiplication extends Expression {
+ private Expression a, b;
+
+ public Multiplication (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public DecimalValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof DecimalValue) || !(bval instanceof DecimalValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new DecimalValue ((((DecimalValue) aval).getValue(vars, program)).multiply(((DecimalValue) bval).getValue(vars, program)));
+ }
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java
new file mode 100644
index 0000000..e544189
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class ShiftLeft extends Expression {
+ private Expression a, b;
+
+ public ShiftLeft (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).shiftLeft(((IntValue) bval).intValue(vars, program).intValue()));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java
new file mode 100644
index 0000000..688dc91
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class ShiftRight extends Expression {
+ private Expression a, b;
+
+ public ShiftRight (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public IntValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof IntValue) || !(bval instanceof IntValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new IntValue ((((IntValue) aval).intValue(vars, program)).shiftRight(((IntValue) bval).intValue(vars, program).intValue()));
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java
new file mode 100644
index 0000000..2d2d694
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java
@@ -0,0 +1,25 @@
+package org.archphantom.shenanigans.elements.expressions.operations;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.DecimalValue;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Subtraction extends Expression {
+ private Expression a, b;
+
+ public Subtraction (Expression a, Expression b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ public DecimalValue evaluate (VarTable vars, Program program) {
+ Value aval = a.evaluate(vars, program);
+ Value bval = b.evaluate(vars, program);
+ if (!(aval instanceof DecimalValue) || !(bval instanceof DecimalValue)) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return new DecimalValue ((((DecimalValue) aval).getValue(vars, program)).subtract(((DecimalValue) bval).getValue(vars, program)));
+ }
+
+}