1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.BreakValue; 34 import com.caucho.quercus.env.ContinueValue; 35 import com.caucho.quercus.env.Env; 36 import com.caucho.quercus.env.Value; 37 import com.caucho.quercus.expr.Expr; 38 39 42 public class WhileStatement extends Statement { 43 protected final Expr _test; 44 protected final Statement _block; 45 46 public WhileStatement(Location location, Expr test, Statement block) 47 { 48 super(location); 49 50 _test = test; 51 _block = block; 52 } 53 54 public Value execute(Env env) 55 { 56 try { 57 while (_test.evalBoolean(env)) { 58 env.checkTimeout(); 59 60 Value value = _block.execute(env); 61 62 if (value == null) { 63 } 64 else if (value == BreakValue.BREAK) 65 return null; 66 else if (value == ContinueValue.CONTINUE) { 67 } 68 else 69 return value; 70 } 71 } 72 catch (RuntimeException e) { 73 rethrow(e, RuntimeException .class); 74 } 75 76 return null; 77 } 78 } 79 80 | Popular Tags |