public static NeuOperation Execute( this NeuInterpreter interpreter, NeuNode node, params object[] arguments) { interpreter.Enter(node); /// /// // TODO: Add hoists /// var enterPos = interpreter.Stack.Count(); /// var lastValue = NeuOperation.Void; /// var done = false; /// for (var i = 0; i < node.Children.Count() && !done; i++) { var child = node.Children.ElementAt(i); /// if (child is NeuPunc) { continue; } /// var childResult = interpreter.Execute(child); /// switch (childResult) { case NeuReturnResult returnResult: lastValue = returnResult; done = true; break; /// case NeuValue value: lastValue = value; break; /// default: break; } } /// interpreter.Unwind(enterPos, node); /// interpreter.Exit(node); /// return(lastValue); }