public override Node Evaluate(Env env) { if(Evaluated) return this; try { env = env ?? new Env(); env.Frames.Push(this); NodeHelper.ExpandNodes<Import>(env, Rules); env.Frames.Pop(); var clone = new Root(new NodeList(Rules), Error, OriginalRuleset); clone = DoVisiting(clone, env, VisitorPluginType.BeforeEvaluation); clone.ReducedFrom<Root>(this); clone.EvaluateRules(env); clone.Evaluated = true; clone = DoVisiting(clone, env, VisitorPluginType.AfterEvaluation); return clone; } catch (ParsingException e) { throw Error(e); } }
public override Node Evaluate(Env env) { if (Evaluated) { return(this); } try { env = env ?? new Env(); env.Frames.Push(this); NodeHelper.ExpandNodes <Import>(env, Rules); env.Frames.Pop(); var clone = new Root(new NodeList(Rules), Error, OriginalRuleset); clone = DoVisiting(clone, env, VisitorPluginType.BeforeEvaluation); clone.ReducedFrom <Root>(this); clone.EvaluateRules(env); clone.Evaluated = true; clone = DoVisiting(clone, env, VisitorPluginType.AfterEvaluation); return(clone); } catch (ParsingException e) { throw Error(e); } }
public override Node Evaluate(Env env) { env = env ?? new Env(); NodeHelper.ExpandNodes<Import>(env, this.Rules); Root clone = new Root(new NodeList(Rules), Error, OriginalRuleset).ReducedFrom<Root>(this); clone.EvaluateRules(env); return clone; }
public override Node Evaluate(Env env) { env = env ?? new Env(); NodeHelper.ExpandNodes <Import>(env, this.Rules); Root clone = new Root(new NodeList(Rules), Error, OriginalRuleset).ReducedFrom <Root>(this); clone.EvaluateRules(env); return(clone); }