public void Reset() { currentBlock = null; currentStatement = null; currentSubblock = null; childEnum = null; }
IEnumerator <Statement> IEnumerable <Statement> .GetEnumerator() { List <Statement> listStatements = new List <Statement>(); BlockEnumerator blockEnum = new BlockEnumerator(this); while (blockEnum.MoveNext()) { listStatements.AddRange(blockEnum.Current.Statements); } return(listStatements.GetEnumerator()); }
public bool MoveNext() { if (currentBlock == null) { currentBlock = baseBlock; currentStatement = currentBlock.Statements.GetEnumerator(); return(true); } if (childEnum != null) { if (childEnum.MoveNext()) { currentBlock = childEnum.Current; return(true); } childEnum = null; } if (currentSubblock != null) { if (currentSubblock.MoveNext()) { childEnum = new BlockEnumerator(currentSubblock.Current); return(this.MoveNext()); } currentSubblock = null; } while (currentStatement.MoveNext()) { currentSubblock = currentStatement.Current.GetEnumerator(); return(this.MoveNext()); } return(false); }