public override bool MoveNext() { int c = reader.Peek(); if (c == -1) { return(false); // vrátí příznak dosažení konce iterátoru } // pokud je dosažen konec proudu char randomChar = Convert.ToChar(c); string text; if (!char.IsLetterOrDigit(randomChar)) { if (char.IsWhiteSpace(randomChar)) { //nacti vsechny mezery a operatory text = readWhileInClass(lc => char.IsWhiteSpace(lc)); } else { //nacti po jednom znaku text = randomChar.ToString(); reader.Read(); } } else { text = readWhileInClass(lc => char.IsLetterOrDigit(lc)); // jinak čti nemezerové znaky } iteratePositionBasedOnSequence(text); Current = new Token(text, CS.DetermineTokenType(text, codeProvider, lastToken), new Tuple <int, int>(positionX, positionY), lastToken); // a nastav příslušný token lastToken = Current; return(true); // signalizuje, že ještě nebyl dosažen konec (a token ve vlastnosti `Current` je platný }