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 ConditionalExpr extends Expr { 40 protected final Expr _test; 41 protected final Expr _trueExpr; 42 protected final Expr _falseExpr; 43 44 public ConditionalExpr(Location location, Expr test, Expr trueExpr, Expr falseExpr) 45 { 46 super(location); 47 _test = test; 48 49 _trueExpr = trueExpr; 50 _falseExpr = falseExpr; 51 } 52 53 public ConditionalExpr(Expr test, Expr trueExpr, Expr falseExpr) 54 { 55 _test = test; 56 57 _trueExpr = trueExpr; 58 _falseExpr = falseExpr; 59 } 60 61 68 public Value eval(Env env) 69 { 70 if (_test.evalBoolean(env)) 71 return _trueExpr.eval(env); 72 else 73 return _falseExpr.eval(env); 74 } 75 76 83 public boolean evalBoolean(Env env) 84 { 85 if (_test.evalBoolean(env)) 86 return _trueExpr.evalBoolean(env); 87 else 88 return _falseExpr.evalBoolean(env); 89 } 90 91 98 public Value evalCopy(Env env) 99 { 100 if (_test.evalBoolean(env)) 101 return _trueExpr.evalCopy(env); 102 else 103 return _falseExpr.evalCopy(env); 104 } 105 106 public String toString() 107 { 108 return "(" + _test + " ? " + _trueExpr + " : " + _falseExpr + ")"; 109 } 110 } 111 112 | Popular Tags |