1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.Env; 34 import com.caucho.quercus.env.Value; 35 36 import java.util.ArrayList ; 37 38 41 public class BlockStatement extends Statement { 42 protected Statement []_statements; 43 44 public BlockStatement(Location location, Statement []statements) 45 { 46 super(location); 47 48 _statements = statements; 49 } 50 51 public BlockStatement(Location location, ArrayList <Statement> statementList) 52 { 53 super(location); 54 55 _statements = new Statement[statementList.size()]; 56 statementList.toArray(_statements); 57 } 58 59 public BlockStatement append(ArrayList <Statement> statementList) 60 { 61 Statement []statements 62 = new Statement[_statements.length + statementList.size()]; 63 64 System.arraycopy(_statements, 0, statements, 0, _statements.length); 65 66 for (int i = 0; i < statementList.size(); i++) 67 statements[i + _statements.length] = statementList.get(i); 68 69 return new BlockStatement(getLocation(), statements); 70 } 71 72 public Statement []getStatements() 73 { 74 return _statements; 75 } 76 77 80 public int fallThrough() 81 { 82 for (int i = 0; i < getStatements().length; i++) { 83 Statement stmt = getStatements()[i]; 84 85 int fallThrough = stmt.fallThrough(); 86 87 if (fallThrough != FALL_THROUGH) 88 return fallThrough; 89 } 90 91 return FALL_THROUGH; 92 } 93 94 public Value execute(Env env) 95 { 96 for (int i = 0; i < _statements.length; i++) { 97 Statement statement = _statements[i]; 98 99 Value value = statement.execute(env); 100 101 if (value != null) { 102 return value; 103 } 104 } 105 106 return null; 107 } 108 } 109 110 | Popular Tags |