summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom
diff options
context:
space:
mode:
Diffstat (limited to 'Shenanigans/src/org/archphantom')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java2
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Expression.java7
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolAnd.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolEqual.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolGreater.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolLess.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolNot.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolOr.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolXOr.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/Count.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java1
-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
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/Array.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/BoolValue.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/CharValue.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/DecimalValue.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/Function.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/IntValue.java3
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java1
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/Value.java2
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/variables/VarTable.java4
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/AddIt.java11
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/CheckIt.java11
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/Exporter.java44
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/Factorial.java9
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java9
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/NamespaceAccess.java51
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/ShiftIt.java9
50 files changed, 242 insertions, 24 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java b/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java
index a893ec2..c159053 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java
@@ -75,12 +75,14 @@ public class Shenanigans {
}
public static void parse (InputStream stream) throws IOException {
+ /*
String data = "";
int b;
while ((b = stream.read()) != -1) {
data += (char) b;
}
// Interact with parser
+ */
}
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Expression.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Expression.java
index a4358ec..e3dbb30 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Expression.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Expression.java
@@ -1,10 +1,13 @@
package org.archphantom.shenanigans.elements.expressions;
+import java.io.Serializable;
+
import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
-public abstract class Expression {
-
+public abstract class Expression implements Serializable {
+ private static final long serialVersionUID = 3202650253846618491L;
+
public abstract Value evaluate(VarTable vars, Program program);
} \ No newline at end of file
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
index 4251286..69648f2 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
@@ -5,6 +5,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Variable extends Expression {
+ private static final long serialVersionUID = -8173453928428573742L;
private String identifier;
public Variable (String identifier) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolAnd.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolAnd.java
index e5ed6c8..b77d939 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolAnd.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolAnd.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolAnd extends Expression {
+ private static final long serialVersionUID = -2352274778863145062L;
private Expression a, b;
public BoolAnd (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolEqual.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolEqual.java
index 6bd55fc..afdb17a 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolEqual.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolEqual.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolEqual extends Expression {
+ private static final long serialVersionUID = 4474177294066408100L;
private Expression a, b;
public BoolEqual (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolGreater.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolGreater.java
index 6794376..6c3eb11 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolGreater.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolGreater.java
@@ -7,6 +7,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolGreater extends Expression {
+ private static final long serialVersionUID = 8061108525590149023L;
private Expression a, b;
public BoolGreater (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolLess.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolLess.java
index a2191a5..bcd5dd9 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolLess.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolLess.java
@@ -7,6 +7,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolLess extends Expression {
+ private static final long serialVersionUID = -3533910924781947837L;
private Expression a, b;
public BoolLess (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolNot.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolNot.java
index 355b065..aa21fc7 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolNot.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolNot.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolNot extends Expression {
+ private static final long serialVersionUID = 8925098393357319876L;
private BoolValue val;
public BoolNot (BoolValue val) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolOr.java
index 3f2463c..eee30df 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolOr.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolOr.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolOr extends Expression {
+ private static final long serialVersionUID = 2060667327993535961L;
private Expression a, b;
public BoolOr (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolXOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolXOr.java
index f59fe5c..773a1da 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolXOr.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/BoolXOr.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolXOr extends Expression {
+ private static final long serialVersionUID = -4779123555276431149L;
private Expression a, b;
public BoolXOr (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/Count.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/Count.java
index b7f86ac..090b1e4 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/Count.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/comparators/Count.java
@@ -7,6 +7,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Count extends Expression {
+ private static final long serialVersionUID = -491231132081798904L;
private Expression val;
public Count (Expression val) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java
index 3060883..1c4974f 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Addition.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Addition extends Expression {
+ private static final long serialVersionUID = 386833200254543112L;
private Expression a, b;
public Addition (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java
index e52571f..b10d6f8 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitAnd.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BitAnd extends Expression {
+ private static final long serialVersionUID = 628380389054082502L;
private Expression a, b;
public BitAnd (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java
index 6ec203c..a882105 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitOr.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BitOr extends Expression {
+ private static final long serialVersionUID = 8843369425724216070L;
private Expression a, b;
public BitOr (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java
index d761b23..995d8be 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/BitXOr.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BitXOr extends Expression {
+ private static final long serialVersionUID = 4251513045608664558L;
private Expression a, b;
public BitXOr (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java
index 7c92bd9..a0b0c2c 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Division.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Division extends Expression {
+ private static final long serialVersionUID = 1824475991821919043L;
private Expression a, b;
public Division (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java
index 641e7a4..c5a3af2 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Modulo.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Modulo extends Expression {
+ private static final long serialVersionUID = -2671899717634736876L;
private Expression a, b;
public Modulo (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java
index 05d3287..e09eef1 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Multiplication.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Multiplication extends Expression {
+ private static final long serialVersionUID = 3043564671424224124L;
private Expression a, b;
public Multiplication (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java
index e544189..b1e7885 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftLeft.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class ShiftLeft extends Expression {
+ private static final long serialVersionUID = 1885480096964567811L;
private Expression a, b;
public ShiftLeft (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java
index 688dc91..62a1dfa 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/ShiftRight.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class ShiftRight extends Expression {
+ private static final long serialVersionUID = -2844155062825487257L;
private Expression a, b;
public ShiftRight (Expression a, Expression b) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java
index 2d2d694..e093093 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/operations/Subtraction.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.values.Value;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Subtraction extends Expression {
+ private static final long serialVersionUID = 7561035138901827673L;
private Expression a, b;
public Subtraction (Expression a, Expression b) {
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;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Array.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Array.java
index 242e81a..792397f 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Array.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Array.java
@@ -4,6 +4,7 @@ import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Array extends Value {
+ private static final long serialVersionUID = -1094670284231123418L;
private ArrayList<Value> vals;
public Array () {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/BoolValue.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/BoolValue.java
index 23b968a..3ed0386 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/BoolValue.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/BoolValue.java
@@ -3,6 +3,7 @@ import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class BoolValue extends Value {
+ private static final long serialVersionUID = 531596655233771451L;
private boolean val;
public BoolValue (boolean val) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/CharValue.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/CharValue.java
index fbae3c5..331dd76 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/CharValue.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/CharValue.java
@@ -3,6 +3,7 @@ import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class CharValue extends Value {
+ private static final long serialVersionUID = 6475887754647821042L;
private char val;
public CharValue (char val) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/DecimalValue.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/DecimalValue.java
index a2a2a58..e0c3039 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/DecimalValue.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/DecimalValue.java
@@ -5,6 +5,7 @@ import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class DecimalValue extends Value {
+ private static final long serialVersionUID = -5727395708519872329L;
private BigDecimal val;
public DecimalValue (double val) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Function.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Function.java
index 2ceb15e..8e6be54 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Function.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Function.java
@@ -6,6 +6,7 @@ import org.archphantom.shenanigans.elements.expressions.Expression;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Function extends Value {
+ private static final long serialVersionUID = -6290598231971188194L;
private ArrayList<String> arguments;
private Expression body;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/IntValue.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/IntValue.java
index a1969fe..ecbcf1b 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/IntValue.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/IntValue.java
@@ -6,7 +6,8 @@ import org.archphantom.shenanigans.elements.Program;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class IntValue extends DecimalValue {
-
+ private static final long serialVersionUID = 755770306873491835L;
+
public IntValue (int val) {
super(new BigDecimal(val));
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java
index 6ada6e5..558cad2 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java
@@ -4,6 +4,7 @@ import org.archphantom.shenanigans.elements.expressions.Expression;
import org.archphantom.shenanigans.elements.variables.VarTable;
public class Namespace extends Value {
+ private static final long serialVersionUID = -4934489810223937971L;
private String name;
private Expression body;
private VarTable myvars;
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Value.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Value.java
index d329c2c..1d7ca1e 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Value.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Value.java
@@ -4,6 +4,8 @@ import org.archphantom.shenanigans.elements.expressions.Expression;
import org.archphantom.shenanigans.elements.variables.VarTable;
public abstract class Value extends Expression {
+ private static final long serialVersionUID = 3704411592873487046L;
+
public abstract Object getValue(VarTable vars, Program program);
public Value evaluate (VarTable vars, Program program) {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/variables/VarTable.java b/Shenanigans/src/org/archphantom/shenanigans/elements/variables/VarTable.java
index 5328846..a06a562 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/elements/variables/VarTable.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/variables/VarTable.java
@@ -1,8 +1,10 @@
package org.archphantom.shenanigans.elements.variables;
+import java.io.Serializable;
import java.util.Hashtable;
import org.archphantom.shenanigans.elements.values.Value;
-public class VarTable {
+public class VarTable implements Serializable {
+ private static final long serialVersionUID = 7310223054349729170L;
private Hashtable<String, Value> vars;
public VarTable () {
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/AddIt.java b/Shenanigans/src/org/archphantom/shenanigans/examples/AddIt.java
index d898bd4..ec6b300 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/examples/AddIt.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/AddIt.java
@@ -16,7 +16,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class AddIt {
- public static void main (String[] args) {
+ public static Program buildExample () {
ArrayList<Expression> list = new ArrayList<Expression>();
ArrayList<String> argnames = new ArrayList<String>();
argnames.add("x");
@@ -34,10 +34,11 @@ public class AddIt {
Namespace main = new Namespace("main", group, new VarTable());
Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>();
namespaces.put("main", main);
- Program p = new Program(namespaces);
- System.out.println("Running...");
- p.run();
- System.out.println("Ran...");
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
}
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/CheckIt.java b/Shenanigans/src/org/archphantom/shenanigans/examples/CheckIt.java
index 8506584..f7c89d3 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/examples/CheckIt.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/CheckIt.java
@@ -19,7 +19,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class CheckIt {
- public static void main (String[] args) {
+ public static Program buildExample () {
ArrayList<Expression> list = new ArrayList<Expression>();
ArrayList<String> argnames = new ArrayList<String>();
argnames.add("x");
@@ -35,10 +35,11 @@ public class CheckIt {
Namespace main = new Namespace("main", group, new VarTable());
Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>();
namespaces.put("main", main);
- Program p = new Program(namespaces);
- System.out.println("Running...");
- p.run();
- System.out.println("Ran...");
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
}
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/Exporter.java b/Shenanigans/src/org/archphantom/shenanigans/examples/Exporter.java
new file mode 100644
index 0000000..25659de
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/Exporter.java
@@ -0,0 +1,44 @@
+package org.archphantom.shenanigans.examples;
+import java.io.FileOutputStream;
+import java.io.ObjectOutputStream;
+import java.util.Scanner;
+
+import org.archphantom.shenanigans.elements.Program;
+
+public class Exporter {
+
+ public static void main (String[] args) {
+ Program addit = AddIt.buildExample();
+ Program checkit = CheckIt.buildExample();
+ Program factorial = Factorial.buildExample();
+ Program factorialz = FactorialZ.buildExample();
+ Program nsaccess = NamespaceAccess.buildExample();
+ Program shiftit = ShiftIt.buildExample();
+ Scanner s = new Scanner(System.in);
+ System.out.println("Export AddIt To:");
+ writeToFile(addit, s.nextLine());
+ System.out.println("Export CheckIt To:");
+ writeToFile(checkit, s.nextLine());
+ System.out.println("Export Factorial To:");
+ writeToFile(factorial, s.nextLine());
+ System.out.println("Export FactorialZ To:");
+ writeToFile(factorialz, s.nextLine());
+ System.out.println("Export NamespaceAccess To:");
+ writeToFile(nsaccess, s.nextLine());
+ System.out.println("Export ShiftIt To:");
+ writeToFile(shiftit, s.nextLine());
+ s.close();
+ System.out.println("Export complete.");
+ }
+
+ public static void writeToFile (Program program, String filename) {
+ try {
+ ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(filename));
+ stream.writeObject(program);
+ stream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/Factorial.java b/Shenanigans/src/org/archphantom/shenanigans/examples/Factorial.java
index 06bf9b4..47053ba 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/examples/Factorial.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/Factorial.java
@@ -19,7 +19,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class Factorial {
- public static void main (String[] args) {
+ public static Program buildExample () {
ArrayList<Expression> list = new ArrayList<Expression>();
ArrayList<String> argnames = new ArrayList<String>();
argnames.add("n");
@@ -37,8 +37,11 @@ public class Factorial {
Namespace main = new Namespace("main", group, new VarTable());
Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>();
namespaces.put("main", main);
- Program p = new Program(namespaces);
- p.run();
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
}
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java b/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
index f6ae70a..889d68f 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
@@ -19,7 +19,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class FactorialZ {
- public static void main (String[] args) {
+ public static Program buildExample () {
ArrayList<Expression> list = new ArrayList<Expression>();
ArrayList<String> argnames = new ArrayList<String>();
argnames.add("n");
@@ -40,8 +40,11 @@ public class FactorialZ {
Namespace main = new Namespace("main", group, new VarTable());
Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>();
namespaces.put("main", main);
- Program p = new Program(namespaces);
- p.run();
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
}
}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/NamespaceAccess.java b/Shenanigans/src/org/archphantom/shenanigans/examples/NamespaceAccess.java
new file mode 100644
index 0000000..208d958
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/NamespaceAccess.java
@@ -0,0 +1,51 @@
+package org.archphantom.shenanigans.examples;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.expressions.Expression;
+import org.archphantom.shenanigans.elements.expressions.Variable;
+import org.archphantom.shenanigans.elements.expressions.operations.Addition;
+import org.archphantom.shenanigans.elements.expressions.statements.Assignment;
+import org.archphantom.shenanigans.elements.expressions.statements.FunctionCall;
+import org.archphantom.shenanigans.elements.expressions.statements.Group;
+import org.archphantom.shenanigans.elements.expressions.statements.NamespaceCall;
+import org.archphantom.shenanigans.elements.expressions.statements.PrintLn;
+import org.archphantom.shenanigans.elements.values.Function;
+import org.archphantom.shenanigans.elements.values.IntValue;
+import org.archphantom.shenanigans.elements.values.Namespace;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class NamespaceAccess {
+
+ public static Program buildExample () {
+ ArrayList<Expression> foo_body = new ArrayList<Expression>();
+ Namespace foo = new Namespace("foo", new Group(foo_body), new VarTable());
+ foo_body.add(new Assignment("x", new IntValue("0")));
+ ArrayList<String> argNames1 = new ArrayList<String>(1);
+ argNames1.add("y");
+ foo_body.add(new Assignment("set", new Function(argNames1, new Assignment("foo.x", new Variable("y")))));
+ ArrayList<String> argNames2 = new ArrayList<String>(2);
+ argNames2.add("n");
+ foo_body.add(new Assignment("inc", new Function(argNames2, new Assignment("foo.x", new Addition(new Variable("foo.x"), new Variable("n"))))));
+ foo_body.add(new Assignment("show", new Function(new ArrayList<String>(0), new PrintLn(new Variable("foo.x")))));
+ ArrayList<Expression> main_body = new ArrayList<Expression>();
+ main_body.add(new NamespaceCall("foo"));
+ ArrayList<Expression> arguments1 = new ArrayList<Expression>(1);
+ arguments1.add(new IntValue("0"));
+ main_body.add(new FunctionCall("foo.set", arguments1));
+ ArrayList<Expression> arguments2 = new ArrayList<Expression>(1);
+ arguments2.add(new IntValue("4"));
+ main_body.add(new FunctionCall("foo.inc", arguments2));
+ main_body.add(new FunctionCall("foo.show", new ArrayList<Expression>()));
+ Namespace main = new Namespace("main", new Group(main_body), new VarTable());
+ Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>(2);
+ namespaces.put("foo", foo);
+ namespaces.put("main", main);
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
+ }
+
+}
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/ShiftIt.java b/Shenanigans/src/org/archphantom/shenanigans/examples/ShiftIt.java
index 1d56397..783dd9f 100644
--- a/Shenanigans/src/org/archphantom/shenanigans/examples/ShiftIt.java
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/ShiftIt.java
@@ -25,7 +25,7 @@ import org.archphantom.shenanigans.elements.variables.VarTable;
public class ShiftIt {
- public static void main (String[] args) {
+ public static Program buildExample () {
ArrayList<Expression> list = new ArrayList<Expression>();
ArrayList<String> argnames = new ArrayList<String>();
argnames.add("a");
@@ -52,8 +52,11 @@ public class ShiftIt {
Namespace main = new Namespace("main", group, new VarTable());
Hashtable<String, Namespace> namespaces = new Hashtable<String, Namespace>();
namespaces.put("main", main);
- Program p = new Program(namespaces);
- p.run();
+ return new Program(namespaces);
+ }
+
+ public static void main (String[] args) {
+ buildExample().run();
}
}