示例#1
0
        /**
         * Verifica tipos (float, string e int)
         */
        private int VerifyTypes(string readLine)
        {
            var character = readLine[Position];

            /* int e float */
            if (character >= '1' && character <= '9')
            {
                var startPosition = Position;
                var type          = "INTEGER";
                while (Position + 1 < readLine.Length)
                {
                    Position++;
                    var nextCharacter = readLine[Position];
                    if (nextCharacter >= '0' && nextCharacter <= '9')
                    {
                        Lexeme += nextCharacter.ToString();
                    }
                    else if (nextCharacter.Equals('.')) //se encontrou . então é float
                    {
                        if (type.Equals("FLOAT"))
                        {
                            break;
                        }
                        else
                        {
                            Lexeme += nextCharacter.ToString();
                            type    = "FLOAT";
                        }
                    }
                    else
                    {
                        Position--;
                        break;
                    }
                }
                var newToken = new TokensFound("TOKEN." + type, Lexeme, startPosition, Line);
                TokensFound.Add(newToken);
            }
            /* string */
            else if (character.Equals('"') || character.Equals('\''))
            {
                var startPosition = Position;
                while (Position + 1 < readLine.Length)
                {
                    Position++;
                    var nextCharacter = readLine[Position];
                    Lexeme += nextCharacter.ToString();
                    if (nextCharacter.Equals(character))
                    {
                        break;
                    }
                }
                if (Lexeme.LastIndexOf(character).Equals(0)) //string nao foi fechado, retorna erro
                {
                    return(0);
                }

                var newToken = new TokensFound("TOKEN.STRING", Lexeme, startPosition, Line);
                TokensFound.Add(newToken);
                return(1);
            }
            return(2);
        }