1 29 30 package com.caucho.quercus.expr; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.Env; 34 import com.caucho.quercus.env.Value; 35 36 39 public class AssignExpr extends Expr { 40 protected final AbstractVarExpr _var; 41 protected final Expr _value; 42 43 public AssignExpr(Location location, AbstractVarExpr var, Expr value) 44 { 45 super(location); 46 47 _var = var; 48 _value = value; 49 } 50 51 public AssignExpr(AbstractVarExpr var, Expr value) 52 { 53 _var = var; 54 _value = value; 55 } 56 57 61 @Override 62 public Expr createCopy(ExprFactory factory) 63 { 64 return factory.createCopy(this); 66 } 67 68 75 public Value eval(Env env) 76 { 77 Value value = _value.evalCopy(env); 78 79 _var.evalAssign(env, value); 80 81 return value; 82 } 83 84 91 public Value evalCopy(Env env) 92 { 93 return eval(env).copy(); 95 } 96 97 104 public Value evalRef(Env env) 105 { 106 Value value = _value.eval(env); 107 108 _var.evalAssign(env, value); 109 110 return value; 111 } 112 113 public String toString() 114 { 115 return _var + "=" + _value; 116 } 117 } 118 119 | Popular Tags |