a function-definition is not allowed here before '{' token

Hello, I have a big problem with my code: when it is verificating, it a pperas the following message "a function-definition is not allowed here before '{' token" and it marks " void loop()". And I have no idea why it isn't working.
Hope you can help me (:

Here you have the code. The mistake is at the end (It is indicated with a comment)

/*
EL PROGRAMA ! 

 */


//servo
#include <Servo.h>
Servo servo1, servo2, servo3, servo4, servo5 ;

//motorreductor
const int a = 7;
const int b = 8;
const int c = 10;

int limit = 0;

//Bluetooth
char valor; //caracter recebido por bluetooth



//FUNCIONS  

//servo

void servo1f() //función del servo1
{
  String estado; //cmo sta en cada servo, para que no de error de que se repite. así solo existe aquí
  delay(30); //que se espera un poquitín
  while (Serial.available()) //si está conectado el bluetooth
  {
    char c = Serial.read();   //Lee el dato entrante y lo almacena en una variable tipo char
    estado += c;    //Crea una cadena tipo String con los datos entrantes ... que acumule las c
  }
  if (estado.length() > 0)  //Se verifica que la cadena tipo String tenga un largo mayor a cero
  {
    servo1.write(estado.toInt());   //Manda al servo el dato en forma de entero (int)y así lo ejecuta
    estado = "";    //Limpia la variable para poder leer posteriormente nuevos datos
  }
}

void servo2f() //función del servo1
{
  String estado; //cmo sta en cada servo, para que no de error de que se repite. así solo existe aquí
  delay(30); //que se espera un poquitín
  while (Serial.available()) //si está conectado el bluetooth
  {
    char c = Serial.read();   //Lee el dato entrante y lo almacena en una variable tipo char
    estado += c;    //Crea una cadena tipo String con los datos entrantes ... que acumule las c
  }
  if (estado.length() > 0)  //Se verifica que la cadena tipo String tenga un largo mayor a cero
  {
    servo2.write(estado.toInt());   //Manda al servo el dato en forma de entero (int)y así lo ejecuta
    estado = "";    //Limpia la variable para poder leer posteriormente nuevos datos
  }
}

void servo3f() //función del servo1
{
  String estado; //cmo sta en cada servo, para que no de error de que se repite. así solo existe aquí
  delay(30); //que se espera un poquitín
  while (Serial.available()) //si está conectado el bluetooth
  {
    char c = Serial.read();   //Lee el dato entrante y lo almacena en una variable tipo char
    estado += c;    //Crea una cadena tipo String con los datos entrantes ... que acumule las c
  }
  if (estado.length() > 0)  //Se verifica que la cadena tipo String tenga un largo mayor a cero
  {
    servo3.write(estado.toInt());   //Manda al servo el dato en forma de entero (int)y así lo ejecuta
    estado = "";    //Limpia la variable para poder leer posteriormente nuevos datos
  }
}

void servo4f() //función del servo1
{
  String estado; //cmo sta en cada servo, para que no de error de que se repite. así solo existe aquí
  delay(30); //que se espera un poquitín
  while (Serial.available()) //si está conectado el bluetooth
  {
    char c = Serial.read();   //Lee el dato entrante y lo almacena en una variable tipo char
    estado += c;    //Crea una cadena tipo String con los datos entrantes ... que acumule las c
  }
  if (estado.length() > 0)  //Se verifica que la cadena tipo String tenga un largo mayor a cero
  {
    servo4.write(estado.toInt());   //Manda al servo el dato en forma de entero (int)y así lo ejecuta
    estado = "";    //Limpia la variable para poder leer posteriormente nuevos datos
  }
}

void servo5f() //función del servo1
{
  String estado; //cmo sta en cada servo, para que no de error de que se repite. así solo existe aquí
  delay(30); //que se espera un poquitín
  while (Serial.available()) //si está conectado el bluetooth
  {
    char c = Serial.read();   //Lee el dato entrante y lo almacena en una variable tipo char
    estado += c;    //Crea una cadena tipo String con los datos entrantes ... que acumule las c
  }
  if (estado.length() > 0)  //Se verifica que la cadena tipo String tenga un largo mayor a cero
  {
    servo5.write(estado.toInt());   //Manda al servo el dato en forma de entero (int)y así lo ejecuta
    estado = "";    //Limpia la variable para poder leer posteriormente nuevos datos
  }
}

//funcions del motorreductor
void stopf()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);  
}

void esquerraf()
{
  delay (10);
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,HIGH);  
  // si no puede girar más
  limit = digitalRead(4); //leer qué dice el botón
  if(limit == HIGH) { // si el botón esta apretado 
    digitalWrite(a,LOW); //girar en el sentido contrario
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    delay(100); //durante el siguiente t (calcular cuanto!!!)
    stopf(); //después, parar el motor 
  }
  //else {
  
  //}
}

void dretaf()
{
  delay (10);
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);  
  //si no puede girar más
  limit = digitalRead(4); //leer qué dice el botón
  if(limit == HIGH) { // si el botón esta apretado 
    digitalWrite(a,HIGH); //girar en el sentido contrario
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    delay(100); //durante el siguiente t (calcular cuanto!!!)
    stopf(); //después, parar el motor 
}


//funcions autoprogramades
void recollirf() //funcion posicion recogida
{
  
  //primer s'encongeix el braç (servos)
  delay(500);
  servo1.write();
  delay(500);
  servo2.write();
  delay(500);
  servo3.write();
  delay(500);
  servo4.write();
  delay(500);
  servo5.write();
  //el motor ha de colocar el braç en alguna direcció?
  //
  //ara es fa que torni a pujar(motor1)
}

void autoof() //funcion posicion más usada
{
 delay(500);
  servo1.write()
// pue tmb tendré que aprender a hacerlo


}


void setup() {

//setup servos
  servo1.attach(3);               //servo1 connectat al pin digital 3 
  servo2.attach(5);               //servo1 connectat al pin digital 5 
  servo3.attach(6);               //servo1 connectat al pin digital 3
  servo4.attach(9);               //servo1 connectat al pin digital 3
  servo5.attach(11);              //servo1 connectat al pin digital 3

//setup motorreductor
  pinMode(7, OUTPUT);  // indica que he connectat els cables necessaris del microcontrolador
  pinMode(8, OUTPUT);
  pinMode(10, OUTPUT);

  digitalWrite(a,LOW);  // inicialment el motor està apagat
  digitalWrite(b,LOW);
  digitalWrite(c, LOW);

  // polsador
  pinMode(4,INPUT);

//setup mòdul bluetooth
  Serial.begin(9600);
  }


//programa principal

void loop() {  // THE MISTAKE IS HERE

  if (Serial.available())  //Si el puerto serie (Bluetooth) está disponible
  {
    valor = Serial.read();  //Lee el dato entrante via Bluetooth

    if (valor == 'A')   //Si el dato entrante es una A
    {
      servo1f();   //Llama la función que controla el giro del servo1
    }
    if (valor == 'B')   //Si el dato entrante es una B
    {
      servo2f();     //Llama la función que controla el giro del servo2
    }
    if (valor == 'C')   //Si el dato entrante es una C
    {
      servo3f();     //Llama la función que controla el giro del servo3
    }
    if (valor == 'D')   //Si el dato entrante es una D
    {
      servo4f();     //Llama la función que controla el giro del servo4
    }
    if (valor == 'E')   //Si el dato entrante es una E
    {
      servo5f();     //Llama la función que controla el giro del servo5
    }
    if (valor == 'R')   //Si el dato entrante es rec
    {
      recollirf();     //Llama la función que ejecuta la posición de recogido
    }
    if (valor == 'O')   //Si el dato entrante es autoo
    {
      autoof();     //Llama la función autoof
    }
    if (valor == 'S')   //Si el dato entrante es stop
    {
      stopf();     //Llama la función stopf
    }
    if (valor == 'Y')   //Si el dato entrante es esquerra
    {
      esquerraf();     //Llama la función esquerraf
    }
    if (valor == 'X')   //Si el dato entrante es autoo
    {
      dretaf();     //Llama la función dretaf
    }
  }
}

(deleted)

Thank you for your help. I have corrected some mistakes, but the main mistake is still there.
I'll be glad if anybody cant help me. Thank you!

servo1.write();

There is no version (overload) of the write function that takes no parameter. Might want to take a look at the Servo library reference.

In the IDE there is the Auot Format function (ctrl-t or Tools, Auto Format). The function will indent your code in a standard and more readable format. It will also help to show where there are missing curly brackets and/or parentesis.

When you make changes to your code, always post the latest version so that we can keep up.

You're not taking the hint. Do an Auto Format (Ctrl+T) in the IDE and just above the first function definition you see that doesn't start on the left of the page with no spaces is where the problem really is.

Steve

One thousand "thank you" to everybody! The programme is fixed! (:

The method for finding the missing curly brace is as follows: Put the cursor next to a closing curly-brace of a function and see where the corresponding opening curly-brace is.
It will be highlighted by a small rectangle around it !
go through you program systematically.
Unfortunately it is not where the compiler starts to complain about it.

Exactly!! That's the way I have fixed some hidden mistakes that I hadn't realised.

Thak you for your advice (: