/**
         * Creates an assignment using this value as the right hand side.
         */
        public override Expr createAssignFrom(QuercusParser parser,
                                              AbstractVarExpr leftHandSide)
        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createAssignRef(leftHandSide, _expr));
        }
        /**
         * Creates a class field Foo::${bar}
         */
        public override Expr createClassField(QuercusParser parser, Expr name)
        {
            ExprFactory factory = parser.getExprFactory();

            string className        = _var;
            string specialClassName = getSpecialClassName();

            if ("self".equals(specialClassName))
            {
                className = parser.getSelfClassName();

                return(factory.createClassField(className, name));
            }
            else if ("parent".equals(specialClassName))
            {
                className = parser.getParentClassName();

                return(factory.createClassField(className, name));
            }
            else if ("static".equals(specialClassName))
            {
                return(factory.createClassVirtualField(name));
            }
            else
            {
                return(factory.createClassField(className, name));
            }
        }
Esempio n. 3
0
        /**
         * Creates a class field $class::foo
         */
        public override Expr createClassConst(QuercusParser parser, Expr name)
        {
            ExprFactory factory = parser.getExprFactory();

            string className = _value.ToString();

            if ("self".equals(className))
            {
                className = parser.getSelfClassName();

                return(factory.createClassConst(className, name));
            }
            else if ("parent".equals(className))
            {
                className = parser.getParentClassName();

                return(factory.createClassConst(className, name));
            }
            else if ("static".equals(className))
            {
                return(factory.createClassVirtualConst(name));
            }
            else
            {
                return(factory.createClassConst(className, name));
            }
        }
Esempio n. 4
0
        /**
         * Creates an assignment using this value as the right hand side.
         */
        public Expr createAssignFrom(QuercusParser parser,
                                     AbstractVarExpr leftHandSide)
        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createAssign(leftHandSide, this));
        }
        //
        // function call creation
        //

        /**
         * Creates a function call expression
         */
        public override Expr createCall(QuercusParser parser,
                                        Location location,
                                        ArrayList <Expr> args)

        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createClassMethodCall(location, _className, _varName, args));
        }
Esempio n. 6
0
        //
        // function call creation
        //

        /**
         * Creates a function call expression
         */
        public override Expr createCall(QuercusParser parser,
                                        Location location,
                                        ArrayList <Expr> args)

        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createThisMethod(location, _qThis, _nameExpr, args));
        }
Esempio n. 7
0
        //
        // function call creation
        //

        /**
         * Creates a function call expression
         */
        public Expr createCall(QuercusParser parser,
                               Location location,
                               ArrayList <Expr> args)

        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createVarFunction(location, this, args));
        }
        //
        // function call creation
        //

        /**
         * Creates a function call expression
         */
        public override Expr createCall(QuercusParser parser,
                                        Location location,
                                        ArrayList <Expr> args)

        {
            ExprFactory factory = parser.getExprFactory();

            Expr var = parser.createVar(_varName);

            return(factory.createClassVirtualMethodCall(location, var, args));
        }
        //
        // function call creation
        //

        /**
         * Creates a function call expression
         */
        public override Expr createCall(QuercusParser parser,
                                        Location location,
                                        ArrayList <Expr> args)

        {
            /*
             * if (_className.equals(_name))
             * return factory.createClassConstructor(location, _className, _name, args);
             * else
             * return factory.createClassMethodCall(location, _className, _name, args);
             */
            ExprFactory factory = parser.getExprFactory();

            return(factory.createClassMethodCall(location, _className, _name, args));
        }
        //
        // expression creation
        //

        /**
         * Creates a class field Foo::bar
         */
        public override Expr createClassConst(QuercusParser parser, StringValue name)
        {
            ExprFactory factory = parser.getExprFactory();

            string className        = _var;
            string specialClassName = getSpecialClassName();

            if ("self".equals(specialClassName))
            {
                className = parser.getSelfClassName();

                return(factory.createClassConst(className, name));
            }
            else if ("parent".equals(specialClassName))
            {
                className = parser.getParentClassName();

                if (className != null)
                {
                    return(factory.createClassConst(className, name));
                }
                else
                {
                    // trait's parent @is not known at parse time
                    return(factory.createTraitParentClassConst(parser.getClassName(), name));
                }
            }
            else if ("static".equals(specialClassName))
            {
                return(factory.createClassVirtualConst(name));
            }
            else
            {
                return(factory.createClassConst(className, name));
            }
        }
Esempio n. 11
0
        //
        // unary operations
        //

        /**
         * Creates a assignment
         */
        public Statement createUnset(ExprFactory factory, Location location)

        {
            throw new IOException(L.l("{0} @is an illegal value to unset",
                                      this));
        }
Esempio n. 12
0
        public Expr createDeref(ExprFactory factory)

        {
            return(this);
        }
Esempio n. 13
0
 /**
  * Creates the assignment.
  */
 public override Statement createUnset(ExprFactory factory, Location location)
 {
     return(factory.createExpr(location, factory.createUnsetVar(this)));
 }
Esempio n. 14
0
 /**
  * Creates a assignment
  * @param location
  */
 public Expr createCopy(ExprFactory factory)
 {
     return(this);
 }
Esempio n. 15
0
        /**
         * Copy for things like $a .= "test";
         * @param location
         */
        /*
         * public Expr copy()
         * {
         * return this;
         * }
         */

        /**
         * Creates a field ref
         */
        public Expr createFieldGet(ExprFactory factory,
                                   Location location,
                                   StringValue name)
        {
            return(factory.createFieldGet(this, name));
        }
Esempio n. 16
0
 /**
  * Creates a field ref
  */
 public Expr createFieldGet(ExprFactory factory,
                            Location location,
                            Expr name)
 {
     return(factory.createFieldVarGet(this, name));
 }
Esempio n. 17
0
        //
        // class field refs $class::$bar
        //

        /**
         * Creates a class field $class::foo
         */
        public Expr createClassConst(QuercusParser parser, StringValue name)
        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createClassConst(this, name));
        }
Esempio n. 18
0
        /**
         * Creates a class field $class::${foo}
         */
        public Expr createClassField(QuercusParser parser, Expr name)
        {
            ExprFactory factory = parser.getExprFactory();

            return(factory.createClassField(this, name));
        }
Esempio n. 19
0
 /**
  * Creates a field ref
  */
 public override Expr createFieldGet(ExprFactory factory,
                                     Location location,
                                     Expr name)
 {
     return(factory.createThisField(location, this, name));
 }
Esempio n. 20
0
        /**
         * Creates an isset expression
         */
        public Expr createIsset(ExprFactory factory)

        {
            throw new IOException(L.l("{0} @is an illegal value to isset",
                                      this));
        }
Esempio n. 21
0
 /**
  * Returns the copy of the value.
  * @param location
  */
 public override Expr createCopy(ExprFactory factory)
 {
     return(factory.createCopy(this));
 }
Esempio n. 22
0
 /**
  * Creates a assignment
  * @param location
  */
 public override Expr createCopy(ExprFactory factory)
 {
     // quercus/3d9e
     return(factory.createCopy(this));
 }