public virtual void Visit(IfStmt ifStmt, object[] args) { foreach (IfBlock block in ifStmt.BlockList) { block.Accept(this); } }
public void Visit(IfStmt ifStmt, object[] args) { foreach (IfBlock block in ifStmt.BlockList) { if (block.Condition != null) { RightValue cond = exprProcessor.Eval(block.Condition); if (cond.ToBoolean()) { kernel.RuntimeData.ScopeStack.Open(new LocalScope()); kernel.RuntimeData.InstructionStack.Push(InstructionStack.CLOSE_LOCAL_SCOPE_FLAG); kernel.RuntimeData.InstructionStack.Push(block.Content); break; } } else { kernel.RuntimeData.ScopeStack.Open(new LocalScope()); kernel.RuntimeData.InstructionStack.Push(InstructionStack.CLOSE_LOCAL_SCOPE_FLAG); kernel.RuntimeData.InstructionStack.Push(block.Content); break; } } kernel.Next(); }