summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/examples
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/examples
parent18ef4f2b18d9a5d305c0c6df9902b6599cdaab5c (diff)
downloadshenanigans-7d73e5f3a8bb951d69724090461d7038957be2e4.tar.gz
Added serializability and a class to export example programs.
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/examples')
-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
7 files changed, 125 insertions, 19 deletions
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();
}
}