void ProcessCallForeach()
{
CodeForeach code = (CodeForeach)m_scriptInstruction.Operand0;
ScriptObject loop = ResolveOperand(code.LoopObject);
if (!(loop is ScriptFunction)) throw new ExecutionException(m_script, "foreach函数必须返回一个ScriptFunction");
object obj;
ScriptFunction func = (ScriptFunction)loop;
ScriptContext context;
for ( ; ; ) {
obj = func.Call();
if (obj == null) return;
context = new ScriptContext(m_script, code.BlockExecutable, this, Executable_Block.Foreach);
context.Initialize(code.Identifier, m_script.CreateObject(obj));
context.Execute();
if (context.IsOver) break;
}
}
void ProcessCallIf() {