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/elements/expressions/Variable.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java (limited to 'Shenanigans/src/org/archphantom/shenanigans/elements/expressions/Variable.java') 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); + } + } + +} -- cgit v1.2.3