Exemplo n.º 1
0
        public override Value Visit(VarInExpression varInExpression)
        {
            using (NamedValues.EnterScope( ))
            {
                EmitBranchToNewBlock("VarInScope");
                foreach (var localVar in varInExpression.LocalVariables)
                {
                    Alloca alloca    = LookupVariable(localVar.Name);
                    Value  initValue = Context.CreateConstant(0.0);
                    if (localVar.Initializer != null)
                    {
                        initValue = localVar.Initializer.Accept(this);
                    }

                    InstructionBuilder.Store(initValue, alloca);
                }

                return(varInExpression.Body.Accept(this));
            }
        }
Exemplo n.º 2
0
        public override Value?Visit(VarInExpression varInExpression)
        {
            varInExpression.ValidateNotNull(nameof(varInExpression));
            using (NamedValues.EnterScope( ))
            {
                EmitBranchToNewBlock("VarInScope");
                foreach (var localVar in varInExpression.LocalVariables)
                {
                    Alloca alloca    = LookupVariable(localVar.Name);
                    Value  initValue = Context.CreateConstant(0.0);
                    if (localVar.Initializer != null)
                    {
                        initValue = localVar.Initializer.Accept(this) ?? throw new CodeGeneratorException(ExpectValidExpr);
                    }

                    InstructionBuilder.Store(initValue, alloca);
                }

                return(varInExpression.Body.Accept(this));
            }
        }
Exemplo n.º 3
0
 public virtual TResult Visit(VarInExpression varInExpression) => VisitChildren(varInExpression);