コード例 #1
0
 protected override ICode VisitElementAddress(ExprElementAddress e)
 {
     this.Visit(e.Array);
     this.js.Append("[");
     this.Visit(e.Index);
     this.js.Append("]");
     return(e);
 }
コード例 #2
0
        private Stmt LoadElema(Instruction inst)
        {
            var index       = this.stack.Pop();
            var array       = this.stack.Pop();
            var elementType = ((TypeReference)inst.Operand).FullResolve(this.ctx);
            var expr        = new ExprElementAddress(this.ctx, array, index, elementType);

            this.stack.Push(expr);
            return(null);
        }
コード例 #3
0
        protected virtual ICode VisitElementAddress(ExprElementAddress 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 ExprElementAddress(e.Ctx, array, index, ((PointerType)e.Type).ElementType));
            }
            else
            {
                return(e);
            }
        }