예제 #1
0
 protected override ICode VisitVarArrayAccess(ExprVarArrayAccess e)
 {
     this.Visit(e.Array);
     this.js.Append("[");
     this.Visit(e.Index);
     this.js.Append("]");
     return(e);
 }
예제 #2
0
        private Stmt LoadElem(Instruction inst)
        {
            var index       = this.stack.Pop();
            var array       = this.stack.Pop();
            var arrayAccess = new ExprVarArrayAccess(this.ctx, array, index);

            return(this.SsaLocalAssignment(arrayAccess));
        }
예제 #3
0
        private Stmt StoreElem(Instruction inst)
        {
            var value       = this.stack.Pop();
            var index       = this.stack.Pop();
            var array       = this.stack.Pop();
            var arrayAccess = new ExprVarArrayAccess(this.ctx, array, index);
            var assignment  = new StmtAssignment(this.ctx, arrayAccess, value);

            return(assignment);
        }
예제 #4
0
        protected virtual ICode VisitVarArrayAccess(ExprVarArrayAccess e)
        {
            this.ThrowOnNoOverride();
            var array = (Expr)this.Visit(e.Array);
            var index = (Expr)this.Visit(e.Index);

            if (array != e.Array || index != e.Index)
            {
                return(new ExprVarArrayAccess(e.Ctx, array, index));
            }
            else
            {
                return(e);
            }
        }