Example #1
0
 public virtual void Visit(IfStmt ifStmt, object[] args)
 {
     foreach (IfBlock block in ifStmt.BlockList)
     {
         block.Accept(this);
     }
 }
 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();
        }