summaryrefslogtreecommitdiff
path: root/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
diff options
context:
space:
mode:
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java')
-rw-r--r--Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
new file mode 100644
index 0000000..c857c29
--- /dev/null
+++ b/Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java
@@ -0,0 +1,29 @@
+package org.archphantom.shenanigans.elements.expressions;
+import org.archphantom.shenanigans.elements.Program;
+import org.archphantom.shenanigans.elements.values.Namespace;
+import org.archphantom.shenanigans.elements.values.Value;
+import org.archphantom.shenanigans.elements.variables.VarTable;
+
+public class Variable extends Expression {
+ private String identifier;
+
+ public Variable (String identifier) {
+ this.identifier = identifier;
+ }
+
+ public Value evaluate (VarTable vars, Program program) {
+ if (identifier.contains(".")) {
+ String nspacecall = identifier.substring(0, identifier.indexOf('.'));
+ String varname = identifier.substring(identifier.indexOf('.')+1);
+ Namespace ns;
+ if ((ns = program.getNamespace(nspacecall)) != null) {
+ return ns.getVar(varname, vars, program).evaluate(vars, program);
+ } else {
+ return null;
+ }
+ } else {
+ return vars.get(identifier).evaluate(vars, program);
+ }
+ }
+
+}