예제 #1
0
        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ý
        }