private object _execute(FunctionEnvironment functionEnvironment, VariableEnvironment variableEnvironment) { if (ParentExpression == null) { if (Identifier != null) { return(variableEnvironment.GetVariableValue(Identifier)); } else if (Literal != null) { return(Literal.Execute()); } else if (FunctionCall != null) { return(FunctionCall.Execute(functionEnvironment, variableEnvironment)); } else { throw new Exception("Unknown expression"); } } else { object right; if (Identifier != null) { right = variableEnvironment.GetVariableValue(Identifier); } else if (Literal != null) { right = Literal.Execute(); } else if (FunctionCall != null) { right = FunctionCall.Execute(functionEnvironment, variableEnvironment); } else { throw new Exception("Unknown expression"); } object left = ParentExpression._execute(functionEnvironment, variableEnvironment); return(Operators.OperatorHelper.Execute(ParentExpression.Operator, left, right)); } }
public object GetVariableValue(string identifier) { if (IsVariableDeclared(identifier)) { return(DeclaredVariables[identifier].Value); } else if (ParentEnvironment != null) { return(ParentEnvironment.GetVariableValue(identifier)); } throw new Exception("Undeclared identifer: " + identifier); }