// // Execution part of processor // internal void Execute() { Debug.Assert(this.actionStack != null); while (this.execResult == ExecResult.Continue) { ActionFrame frame = (ActionFrame)this.actionStack.Peek(); if (frame == null) { Debug.Assert(this.builder != null); this.builder.TheEnd(); ExecutionResult = ExecResult.Done; break; } // Execute the action which was on the top of the stack if (frame.Execute(this)) { this.actionStack.Pop(); } } if (this.execResult == ExecResult.Interrupt) { this.execResult = ExecResult.Continue; } }