IronLua.Compiler.Scope.CreateChild C# (CSharp) Method

CreateChild() public static method

public static CreateChild ( Scope parent ) : Scope
parent Scope
return Scope
        public static Scope CreateChild(Scope parent)
        {
            return new Scope
                       {
                           parent = parent,
                           breakLabel = parent.breakLabel
                       };
        }

Usage Example

Example #1
0
        Expr IStatementVisitor <Expr> .Visit(Statement.For statement)
        {
            var parentScope = scope;

            scope = Scope.CreateChild(parentScope);

            var step = statement.Step == null
                           ? new Expression.Number(1.0).Visit(this)
                           : ExprHelpers.ConvertToNumber(context, statement.Step.Visit(this));

            var loopVariable = scope.AddLocal(statement.Identifier);
            var varVar       = Expr.Variable(typeof(double));
            var limitVar     = Expr.Variable(typeof(double));
            var stepVar      = Expr.Variable(typeof(double));

            var breakConditionExpr = ForLoopBreakCondition(limitVar, stepVar, varVar);

            var expr =
                Expr.Block(
                    new[] { loopVariable, varVar, limitVar, stepVar },
                    Expr.Assign(varVar, ExprHelpers.ConvertToNumber(context, statement.Var.Visit(this))),
                    Expr.Assign(limitVar, ExprHelpers.ConvertToNumber(context, statement.Limit.Visit(this))),
                    Expr.Assign(stepVar, step),
                    ExprHelpers.CheckNumberForNan(varVar, String.Format(ExceptionMessage.FOR_VALUE_NOT_NUMBER, "inital value")),
                    ExprHelpers.CheckNumberForNan(limitVar, String.Format(ExceptionMessage.FOR_VALUE_NOT_NUMBER, "limit")),
                    ExprHelpers.CheckNumberForNan(stepVar, String.Format(ExceptionMessage.FOR_VALUE_NOT_NUMBER, "step")),
                    ForLoop(statement, stepVar, loopVariable, varVar, breakConditionExpr));

            scope = parentScope;
            return(expr);
        }
All Usage Examples Of IronLua.Compiler.Scope::CreateChild