if (target > 1) {
return new ContinueValue(target - 1);
}
}
else if (result instanceof BreakValue) {
BreakValue breakValue = (BreakValue) result;
int target = breakValue.getTarget();
if (target > 1)
return new BreakValue(target - 1);
else
break;
}
else
return result;
}
return null;
} else if (_isRef) {
Iterator<Value> iter = obj.getKeyIterator(env);
while (iter.hasNext()) {
Value key = iter.next();
if (_key != null)
_key.evalAssignValue(env, key);
Value value = origObj.getVar(key);
// php/0667
_value.evalAssignRef(env, value);
Value result = _block.execute(env);
if (result == null) {
}
else if (result instanceof ContinueValue) {
ContinueValue conValue = (ContinueValue) result;
int target = conValue.getTarget();
if (target > 1) {
return new ContinueValue(target - 1);
}
}
else if (result instanceof BreakValue) {
BreakValue breakValue = (BreakValue) result;
int target = breakValue.getTarget();
if (target > 1)
return new BreakValue(target - 1);
else
break;
}
else
return result;
}
}
else {
Iterator<Map.Entry<Value,Value>> iter = obj.getIterator(env);
while (iter.hasNext()) {
Map.Entry<Value, Value> entry = iter.next();
Value key = entry.getKey();
Value value = entry.getValue();
value = value.copy(); // php/066w
_key.evalAssignValue(env, key);
_value.evalAssignValue(env, value);
Value result = _block.execute(env);
if (result == null) {
}
else if (result instanceof ContinueValue) {
ContinueValue conValue = (ContinueValue) result;
int target = conValue.getTarget();
if (target > 1) {
return new ContinueValue(target - 1);
}
}
else if (result instanceof BreakValue) {
BreakValue breakValue = (BreakValue) result;
int target = breakValue.getTarget();
if (target > 1)
return new BreakValue(target - 1);
else
break;
}
else
return result;