error: expected unqualified-id before 'else'

Hi I'm fairly new to Arduino but have a fair bit of experience with programming and I can't figure out for the life of me why I have this error. I've searched everywhere and there is no solution. Would be appreciated if someone could please help me I'm using a l293D H-Bridge.

int enablePin = 11; //sets l293d enable pin as 11
int in1Pin = 10; //sets l293d input 1 pin as 10
int in2Pin = 9;//sets l293d input 2 as 9
int switchPin = 7; //switch pin is 7
int speed = 255; //variable speed 255
int switchState = 0;
int buttonPin = 4;
int DCState = 0;

void setMotor(int speed, boolean reverse) //function that sets the speed and direction
{
  analogWrite(enablePin, speed); //anonolg writes the enable pin to run at 255 the speed of the motor 255 is max speed
  digitalWrite(in1Pin, ! reverse); //digital write pin 1 as when button is not pushed
  digitalWrite(in2Pin, reverse);//digital write pin 2 as when button is pushed
}
//it spins in reverse because one input is running at a time a clockwise or anto-clockwise  
  
void setup()
{
  pinMode(in1Pin, OUTPUT); //sets input 1 as output
  pinMode(in2Pin, OUTPUT); //sets input 2 as output
  pinMode(enablePin, OUTPUT); //sets enable pin as output
  pinMode(switchPin, INPUT_PULLUP); //sets switch pin as input
  pinMode(buttonPin, INPUT);
}

void loop()
{
 digitalRead(buttonPin);
 if(switchState && !DCState) // same as if(button == high && oldbutton == low)
     {
   DCState = 1;
     }
    else if (switchState && DCState) 
    {
      DCState = 0;
    }
  if (DCState == 1)
  {
    analogWrite(enablePin, speed);
  }
  else 
  {
    analogWrite(enablePin, 0);
  }
  delay(1000);
  switchState = 0;
  boolean reverse = digitalRead(switchPin); //creates a boolean called reverse
  setMotor(speed, reverse); //uses function to set motor speed and direction
}

Compiled just fine for me using IDE 1.8.2 on Win 7.

 digitalRead(buttonPin);

Rather pointless to read the state of the pin if you don't care what the state is.

 if(switchState && !DCState) // same as if(button == high && oldbutton == low)
    {
   DCState = 1;
    }
    else if (switchState && DCState)

switchState is NOT a boolean, and really should not be treated as though it was.

The first comment is wrong. If you don't believe me, comment out the code and replace it with what follows the "same as" phrase.