summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements
diff options
context:
space:
mode:
authorGeonoTRON2000 <geono@thegt.org>2014-05-03 11:43:27 -0700
committerGeonoTRON2000 <geono@thegt.org>2014-05-03 11:43:27 -0700
commit7d73e5f3a8bb951d69724090461d7038957be2e4 (patch)
treeb521685625ebff0674bd3d7f2374da60ce0836c7 /Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements
parent18ef4f2b18d9a5d305c0c6df9902b6599cdaab5c (diff)
downloadshenanigans-7d73e5f3a8bb951d69724090461d7038957be2e4.tar.gz
Added serializability and a class to export example programs.
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ConditionalStatement.java3
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ForLoop.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Group.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/If.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/IfElse.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/NamespaceCall.java24
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/PrintLn.java42
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/WhileLoop.java1
13 files changed, 78 insertions, 1 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 005685b..7d45e90 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayAssignment.java
@@ -9,6 +9,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class ArrayAssignment extends Expression {
+ private static final long serialVersionUID = 5675142957845934390L;
private String identifier;
private Expression index;
private Expression value;
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 65c7438..37ff015 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ArrayVariable.java
@@ -9,6 +9,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class ArrayVariable extends Expression {
+ private static final long serialVersionUID = 7616065946751354435L;
private String identifier;
private Expression index;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java
index 3536750..0976812 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Assignment extends Expression {
+ private static final long serialVersionUID = 7206490732056473577L;
private String identifier;
private Expression value;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ConditionalStatement.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ConditionalStatement.java
index 9f8b1a2..c33f268 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ConditionalStatement.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ConditionalStatement.java
@@ -7,7 +7,8 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public abstract class ConditionalStatement extends Expression {
-
+ private static final long serialVersionUID = 6177224116883281628L;
+
boolean boolify (Expression expr, VarTable vars, Program program) {
Value val = expr.evaluate(vars, program);
if (val instanceof BoolValue) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ForLoop.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ForLoop.java
index c18c630..ffe6b37 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ForLoop.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/ForLoop.java
@@ -5,6 +5,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class ForLoop extends ConditionalStatement {
+ private static final long serialVersionUID = 4620309283857707757L;
private Expression initializer;
private Expression condition;
private Expression iterator;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java
index 2fa2d5a..4be6184 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java
@@ -8,6 +8,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class FunctionCall extends Expression {
+ private static final long serialVersionUID = -5711425379993291311L;
private String identifier;
private ArrayList<Expression> arguments;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Group.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Group.java
index 8381b16..72d9ff0 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Group.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Group.java
@@ -7,6 +7,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Group extends Expression {
+ private static final long serialVersionUID = -9092529908335757782L;
private ArrayList<Expression> items;
public Group (ArrayList<Expression> items) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/If.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/If.java
index 2eca149..e152fcd 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/If.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/If.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class If extends ConditionalStatement {
+ private static final long serialVersionUID = -8033692342706309763L;
private Expression condition;
private Expression evaluate;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/IfElse.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/IfElse.java
index 980ec19..c99edf9 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/IfElse.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/IfElse.java
@@ -5,6 +5,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class IfElse extends ConditionalStatement {
+ private static final long serialVersionUID = 5036859013313773084L;
private Expression condition;
private Expression evalTrue;
private Expression evalFalse;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/NamespaceCall.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/NamespaceCall.java
new file mode 100644
index 0000000..f875fbc
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/NamespaceCall.java
@@ -0,0 +1,24 @@
+package org.archphantom.shenanigans.elements.expressions.statements;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.values.Namespace;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class NamespaceCall extends Expression {
+ private static final long serialVersionUID = 660496406878146378L;
+ private String identifier;
+
+ public NamespaceCall (String identifier) {
+ this.identifier = identifier;
+ }
+
+ public Value evaluate (VarTable vars, Program program) {
+ Namespace ns = program.getNamespace(identifier.toLowerCase());
+ if (ns == null) {
+ throw new RuntimeException("Not Implemented");
+ }
+ return ns.getValue(program.getGlobalVars(), program);
+ }
+
+}
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 a4c02ed..fae74a5 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Print.java
@@ -8,6 +8,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Print extends Expression {
+ private static final long serialVersionUID = -6703606908464950567L;
private Expression data;
public Print (Expression data) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/PrintLn.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/PrintLn.java
new file mode 100644
index 0000000..7901ddc
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/PrintLn.java
@@ -0,0 +1,42 @@
+package org.archphantom.shenanigans.elements.expressions.statements;
+import java.math.BigInteger;
+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 PrintLn extends Expression {
+ private static final long serialVersionUID = 2521386078966318842L;
+ private Expression data;
+
+ public PrintLn (Expression data) {
+ this.data = data;
+ }
+
+ 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 PrintLn ((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());
+ }
+ System.out.print('\n');
+ return vdata;
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/WhileLoop.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/WhileLoop.java
index 956a7a4..9a8bb1e 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/WhileLoop.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/WhileLoop.java
@@ -5,6 +5,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class WhileLoop extends ConditionalStatement {
+ private static final long serialVersionUID = 2550160732857284210L;
private Expression condition;
private Expression evaluate;