summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
diff options
context:
space:
mode:
authorGeonoTRON2000 <geono@thegt.org>2014-04-29 07:13:20 -0700
committerGeonoTRON2000 <geono@thegt.org>2014-04-29 07:13:20 -0700
commiteb05c2dd956b7e991f52eb5c7f03a0f11b7f1f33 (patch)
treeb3c7315063dae47af9ccf0efb40c4c2b1376e499 /Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
parentb115ae93a10962dd61c18d563be17ad9ef56d47a (diff)
downloadshenanigans-eb05c2dd956b7e991f52eb5c7f03a0f11b7f1f33.tar.gz
Pushed existing work
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java b/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
new file mode 100644
index 0000000..158bfc0
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java
@@ -0,0 +1,52 @@
+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.comparators.BoolGreater;
+import org.archphantom.shenanigans.elements.expressions.operations.Multiplication;
+import org.archphantom.shenanigans.elements.expressions.operations.Subtraction;
+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.Print;
+import org.archphantom.shenanigans.elements.expressions.statements.WhileLoop;
+import org.archphantom.shenanigans.elements.values.Array;
+import org.archphantom.shenanigans.elements.values.CharValue;
+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 FactorialZ {
+
+ public static void main (String[] args) {
+ ArrayList<Expression> list = new ArrayList<Expression>();
+ ArrayList<String> argnames = new ArrayList<String>();
+ argnames.add("n");
+ ArrayList<Expression> factorialz_expr_body = new ArrayList<Expression>();
+ factorialz_expr_body.add(new Assignment("res", new IntValue("1")));
+ ArrayList<Expression> loop_body = new ArrayList<Expression>();
+ loop_body.add(new Assignment("res", new Multiplication(new Variable("res"), new Variable("n"))));
+ loop_body.add(new Assignment("n", new Subtraction(new Variable("n"), new IntValue("1"))));
+ factorialz_expr_body.add(new WhileLoop(new BoolGreater(new Variable("n"), new IntValue("0")), new Group(loop_body)));
+ factorialz_expr_body.add(new Variable("res"));
+ Group factorialz_body = new Group(factorialz_expr_body);
+ Function factorialz = new Function(argnames, factorialz_body);
+ list.add(new Assignment("factorialz", factorialz));
+ ArrayList<Expression> arguments = new ArrayList<Expression>();
+ arguments.add(new IntValue("10"));
+ ArrayList<Expression> to_print = new ArrayList<Expression>();
+ to_print.add(new FunctionCall("factorialz", arguments));
+ to_print.add(new CharValue('\n'));
+ list.add(new Print(new Array(to_print)));
+ Group group = new Group(list);
+ 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();
+ }
+
+}