From 18ef4f2b18d9a5d305c0c6df9902b6599cdaab5c Mon Sep 17 00:00:00 2001 From: GeonoTRON2000 Date: Fri, 2 May 2014 22:17:23 -0700 Subject: Fixed glitches with namespace variable storage, added NamespaceAccess tester. --- .../src/org/archphantom/shenanigans/elements/Program.java | 11 +++++++---- .../elements/expressions/statements/Assignment.java | 3 ++- .../elements/expressions/statements/FunctionCall.java | 4 +--- .../archphantom/shenanigans/elements/values/Namespace.java | 8 ++++---- 4 files changed, 14 insertions(+), 12 deletions(-) (limited to 'Shenanigans/src') diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/Program.java b/Shenanigans/src/org/archphantom/shenanigans/elements/Program.java index 51fca62..ea13374 100644 --- a/Shenanigans/src/org/archphantom/shenanigans/elements/Program.java +++ b/Shenanigans/src/org/archphantom/shenanigans/elements/Program.java @@ -1,6 +1,8 @@ package org.archphantom.shenanigans.elements; import java.io.Serializable; import java.util.Hashtable; + +import org.archphantom.shenanigans.elements.expressions.statements.NamespaceCall; import org.archphantom.shenanigans.elements.values.Namespace; import org.archphantom.shenanigans.elements.variables.VarTable; @@ -18,11 +20,12 @@ public class Program implements Runnable, Serializable { return namespaces.get(name.toLowerCase()); } + public VarTable getGlobalVars () { + return globalVars; + } + public void run () { - Namespace ns; - if ((ns = namespaces.get("main")) != null) { - ns.getValue(globalVars, this); - } + new NamespaceCall("main").evaluate(globalVars, this); } } 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 34b7812..3536750 100644 --- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java +++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java @@ -20,7 +20,8 @@ public class Assignment extends Expression { String varname = identifier.substring(identifier.indexOf('.')+1); Namespace ns; if ((ns = program.getNamespace(nspacecall)) != null) { - return ns.setVar(varname, value, vars, program); + Value val = value.evaluate(vars, program); + return ns.setVar(varname, val, vars, program); } else { return null; } 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 e3ba9f8..2fa2d5a 100644 --- a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java +++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java @@ -1,6 +1,5 @@ package org.archphantom.shenanigans.elements.expressions.statements; import java.util.ArrayList; - import org.archphantom.shenanigans.elements.Program; import org.archphantom.shenanigans.elements.expressions.Expression; import org.archphantom.shenanigans.elements.expressions.Variable; @@ -28,10 +27,9 @@ public class FunctionCall extends Expression { localVars.set(argNames.get(i), arguments.get(i).evaluate(vars, program)); } Value retval = function.getValue(localVars, program); - System.out.println("Function returned a "+retval.getClass().getSimpleName()+": "+retval.hashCode()); return retval; } else { - throw new RuntimeException("No such function exists."); + throw new RuntimeException("No such function exists: "+identifier+"."); } } diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java index 81bfd27..6ada6e5 100644 --- a/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java +++ b/Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java @@ -23,7 +23,7 @@ public class Namespace extends Value { String nspacecall = identifier.substring(0, identifier.indexOf('.')); String varname = identifier.substring(identifier.indexOf('.')+1); Value vns; - if ((vns = myvars.get(nspacecall).evaluate(vars, program)) != null) { + if ((vns = myvars.get(nspacecall)) != null) { if (vns instanceof Namespace) { Namespace ns = (Namespace) vns; return ns.getVar(varname, vars, program); @@ -38,12 +38,12 @@ public class Namespace extends Value { } } - public Value setVar (String identifier, Expression value, VarTable vars, Program program) { + public Value setVar (String identifier, Value value, VarTable vars, Program program) { if (identifier.contains(".")) { String nspacecall = identifier.substring(0, identifier.indexOf('.')); String varname = identifier.substring(identifier.indexOf('.')+1); Value vns; - if ((vns = myvars.get(nspacecall).evaluate(vars, program)) != null) { + if ((vns = myvars.get(nspacecall)) != null) { if (vns instanceof Namespace) { Namespace ns = (Namespace) vns; return ns.setVar(varname, value, vars, program); @@ -54,7 +54,7 @@ public class Namespace extends Value { return null; } } else { - return vars.get(identifier).evaluate(vars, program); + return myvars.set(identifier, value); } } -- cgit v1.2.3