From eb05c2dd956b7e991f52eb5c7f03a0f11b7f1f33 Mon Sep 17 00:00:00 2001 From: GeonoTRON2000 Date: Tue, 29 Apr 2014 07:13:20 -0700 Subject: Pushed existing work --- .../shenanigans/examples/FactorialZ.java | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java (limited to 'Shenanigans/src/org/archphantom/shenanigans/examples/FactorialZ.java') 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 list = new ArrayList(); + ArrayList argnames = new ArrayList(); + argnames.add("n"); + ArrayList factorialz_expr_body = new ArrayList(); + factorialz_expr_body.add(new Assignment("res", new IntValue("1"))); + ArrayList loop_body = new ArrayList(); + 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 arguments = new ArrayList(); + arguments.add(new IntValue("10")); + ArrayList to_print = new ArrayList(); + 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 namespaces = new Hashtable(); + namespaces.put("main", main); + Program p = new Program(namespaces); + p.run(); + } + +} -- cgit v1.2.3