summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements
diff options
context:
space:
mode:
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java2
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java2
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java37
3 files changed, 25 insertions, 16 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java
index c10c159..005685b 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java
@@ -28,7 +28,7 @@ public class ArrayAssignment extends Expression {
Value varr = new Variable(identifier).evaluate(vars, program);
if (varr instanceof Array) {
Array array = (Array) varr;
- return array.setElement(iindex, value, vars, program).evaluate(vars, program);
+ return array.setElement(iindex, value.evaluate(vars, program), vars, program);
} else {
throw new RuntimeException("Not Implemented");
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java
index b637383..65c7438 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java
@@ -26,7 +26,7 @@ public class ArrayVariable extends Expression {
Value varr = new Variable(identifier).evaluate(vars, program);
if (varr instanceof Array) {
Array array = (Array) varr;
- return array.getElement(iindex, vars, program).evaluate(vars, program);
+ return array.getElement(iindex, vars, program);
} else {
throw new RuntimeException("Not Implemented");
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java
index 33f0dba..a4c02ed 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java
@@ -1,31 +1,40 @@
package org.archphantom.shenanigans.elements.expressions.statements;
import java.math.BigInteger;
-import java.util.ArrayList;
-
import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.expressions.Expression;
import org.archphantom.shenanigans.elements.values.Array;
import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Print extends Expression {
- private Array data;
+ private Expression data;
public Print (Expression data) {
- ArrayList<Expression> list = new ArrayList<Expression>(1);
- list.add(data);
- this.data = new Array(list);
- }
-
- public Print (Array data) {
this.data = data;
}
-
- public Array evaluate(VarTable vars, Program program) {
- for (int i = 0; i < data.size(); i++) {
- System.out.print(data.getElement(new IntValue(BigInteger.valueOf(i)), vars, program).evaluate(vars, program).getValue(vars, program).toString());
+
+ public Value evaluate(VarTable vars, Program program) {
+ Value vdata = data.evaluate(vars, program);
+ if (vdata instanceof Array) {
+ System.out.print('[');
+ Array arr = (Array) vdata;
+ for (int i = 0; i < arr.size(); i++) {
+ Value val = arr.getElement(new IntValue(BigInteger.valueOf(i)), vars, program).evaluate(vars, program);
+ if (val instanceof Array) {
+ new Print ((Array) val).evaluate(vars, program);
+ } else {
+ System.out.print(val.getValue(vars, program).toString());
+ }
+ if (i < arr.size()-1) {
+ System.out.print(", ");
+ }
+ }
+ System.out.print(']');
+ } else {
+ System.out.print(vdata.getValue(vars, program).toString());
}
- return data;
+ return vdata;
}
}