/// <summary>
        ///		Obtiene un token
        /// </summary>
        internal Token GetToken()
        {
            Token objToken = new Token();

                // Quita los espacios
                    ConsumeSpaces();
                // Recoge un token
                    if (IsEof())
                        objToken.SystemType = Token.TokenType.Eof;
                    else
                        { bool blnEnd = false;
                            TokenDefinition objTokenNumeric = TokensDefinitions.SearchNumeric();

                                // Inicializa el tipo de token
                                    objToken.SystemType = Token.TokenType.Unknown;
                                // Busca el token
                                    foreach (TokenDefinition objDefinition in TokensDefinitions)
                                        if (!blnEnd)
                                            { if (objTokenNumeric != null && NextCharIsNumeric())
                                                    { // Asigna el tipo
                                                            objToken.SystemType = Token.TokenType.Numeric;
                                                            objToken.Definition = objTokenNumeric;
                                                        // Asigna el nĂºmero
                                                            objToken.Lexema = ConsumeNumeric();
                                                        // Indica que ha terminado
                                                            blnEnd = true;
                                                    }
                                                else if (!objDefinition.IsNumeric && GetChars(objDefinition.Start.Length) == objDefinition.Start)
                                                    { // Asigna el tipo
                                                            objToken.SystemType = Token.TokenType.Defined;
                                                            objToken.Definition = objDefinition;
                                                        // Asigna el contenido
                                                            objToken.Lexema = objDefinition.Start;
                                                        // Consume la cadena
                                                            Consume(objDefinition.Start);
                                                        // Busca hasta el final
                                                            if (!string.IsNullOrEmpty(objDefinition.End))
                                                                {	// En el lexema mete el contenido
                                                                        if (objDefinition.End == "\"")
                                                                            objToken.Lexema = ConsumeString();
                                                                        else
                                                                            { // Obtiene el contenido
                                                                                    objToken.Lexema = ConsumeTo(objDefinition.End);
                                                                                // Consume la cadena de fin
                                                                                    Consume(objDefinition.End);
                                                                            }
                                                                }
                                                        // Indica que se ha terminado
                                                            blnEnd = true;
                                                    }
                                            }
                                // Si no se ha terminado consume hasta el siguiente espacio
                                    if (!blnEnd)
                                        objToken.Lexema = ConsumeTo(cnstArrStrSpaces);
                        }
                // Devuelve el token
                    return objToken;
        }
		/// <summary>
		///		Obtiene el tipo de un token
		/// </summary>
		private TokenType GetIDType(Token objToken)
		{	if (objToken != null && objToken.Definition != null)
				return (TokenType) (objToken.Definition.Type ?? 0);
			else
				return TokenType.Unknown;
		}		
		/// <summary>
		///		Obtiene los datos del siguiente token
		/// </summary>
		private void GetNextToken(ParserTokenizer objTokenizer)
		{ objActualToken = objTokenizer.GetToken();
			intIDActualType = GetIDType(objActualToken);
		}