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 DoStatement extends Statement { 43 protected final Expr _test; 44 protected final Statement _block; 45 46 public DoStatement(Location location, Expr test, Statement block) 47 { 48 49 super(location); 50 51 _test = test; 52 _block = block; 53 } 54 55 public Value execute(Env env) 56 { 57 try { 58 do { 59 env.checkTimeout(); 60 61 Value value = _block.execute(env); 62 63 if (value == null) { 64 } 65 else if (value == BreakValue.BREAK) 66 return null; 67 else if (value == ContinueValue.CONTINUE) { 68 } 69 else 70 return value; 71 } while (_test.evalBoolean(env)); 72 } 73 catch (RuntimeException e) { 74 rethrow(e, RuntimeException .class); 75 } 76 77 return null; 78 } 79 } 80 81 | Popular Tags |