Example #1
0
 public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue)
     : base(span)
 {
     Debug.Assert(rvalue is VarLikeConstructUse || rvalue is NewEx);
     this.lvalue = lvalue;
     this.rvalue = rvalue;
 }
Example #2
0
        BoundExpression BindVarLikeConstructUse(AST.VarLikeConstructUse expr, BoundAccess access)
        {
            if (expr is AST.SimpleVarUse)
            {
                return(BindSimpleVarUse((AST.SimpleVarUse)expr, access));
            }
            if (expr is AST.FunctionCall)
            {
                return(BindFunctionCall((AST.FunctionCall)expr, access));
            }
            if (expr is AST.NewEx)
            {
                return(BindNew((AST.NewEx)expr, access));
            }
            if (expr is AST.ArrayEx)
            {
                return(BindArrayEx((AST.ArrayEx)expr, access));
            }
            if (expr is AST.ItemUse)
            {
                return(BindItemUse((AST.ItemUse)expr, access));
            }
            if (expr is AST.StaticFieldUse)
            {
                return(BindFieldUse((AST.StaticFieldUse)expr, access));
            }
            if (expr is AST.ListEx)
            {
                return(BindListEx((AST.ListEx)expr).WithAccess(access));
            }


            throw new NotImplementedException(expr.GetType().FullName);
        }
Example #3
0
        /// <summary>
        /// Initializes instance of <see cref="ForeachVar"/> representing PHP list expression.
        /// </summary>
        /// <param name="list"></param>
        public ForeachVar(ListEx /*!*/ list)
        {
            Debug.Assert(list != null);

            _target = list;
            _alias  = false;
        }
Example #4
0
 public ValueAssignEx(Text.Span span, Operations operation, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue)
     : base(span)
 {
     this.lvalue    = lvalue;
     this.rvalue    = rvalue;
     this.operation = operation;
 }
Example #5
0
        /// <summary>
        /// Initializes instance of <see cref="ForeachVar"/> representing PHP list expression.
        /// </summary>
        /// <param name="list"></param>
        public ForeachVar(IArrayExpression /*!*/ list)
        {
            Debug.Assert(list != null);
            Debug.Assert(list.Operation == Operations.List);

            _target = (VarLikeConstructUse)list;
            _alias  = false;
        }
Example #6
0
        /// <summary>
        /// Create new assignment.
        /// </summary>
        /// <param name="span">Entire span.</param>
        /// <param name="lvalue">Assigned variable.</param>
        /// <param name="rvalue">Assigned value.</param>
        public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue)
            : base(span)
        {
            Debug.Assert(rvalue != null);
            Debug.Assert(rvalue.AllowsPassByReference);

            this.lvalue = lvalue;
            this.rvalue = rvalue;
        }
Example #7
0
 protected AssignEx(Text.Span p, VarLikeConstructUse target, Expression rValue) : base(p)
 {
     LValue = target ?? throw new ArgumentNullException(nameof(target));
     RValue = rValue ?? throw new ArgumentNullException(nameof(rValue));
 }
Example #8
0
 /// <summary>
 /// Create new assignment.
 /// </summary>
 /// <param name="span">Entire span.</param>
 /// <param name="lvalue">Assigned variable.</param>
 /// <param name="rvalue">Assigned value.</param>
 public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue)
     : base(span, lvalue, rvalue)
 {
     Debug.Assert(rvalue.AllowsPassByReference);
 }
Example #9
0
 public ForeachVar(VariableUse variable, bool alias)
 {
     _target = variable;
     _alias  = alias;
 }