//--- Methods --- public DekiScriptDom Visit(DekiScriptDomBlock expr, DekiScriptOptimizerState state) { state = new DekiScriptOptimizerState(state.Mode, state.Env.NewLocalScope()); DekiScriptExpression value = expr.Value.VisitWith(DekiScriptExpressionOptimizer.Instance, state); DekiScriptDom node = expr.Node.VisitWith(this, state); return(new DekiScriptDomBlock(expr.Location, value, node)); }
//--- Methods --- public Empty Visit(DekiScriptDomBlock expr, DekiScriptDomEvaluationState state) { var context = state.Context; var env = state.Env; var parent = state.Parent; try { DekiScriptEnv locals = env.NewLocalScope(); // check if we need to evaluate the block 'Value' if (expr.IsDynamic) { expr.Value.VisitWith(DekiScriptExpressionEvaluation.Instance, locals); } expr.Node.VisitWith(this, new DekiScriptDomEvaluationState(context, parent, locals)); } catch (Exception e) { EmbedExceptionMessage(expr, env, context, e, parent); } return(Empty.Value); }