summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans
diff options
context:
space:
mode:
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/Program.java11
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/Assignment.java3
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/statements/FunctionCall.java4
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/values/Namespace.java8
4 files changed, 14 insertions, 12 deletions
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);
}
}