The semicolons wouldn't cause the code to fail, though that is definitely bad form when it comes to programming.
The poster's problem is this:
while (Serial.available() > 0) {
val=Serial.read();
if(val=='1') {digitalWrite(13,HIGH); }
else if (val=='0') {digitalWrite(13,LOW); }
if(val=='1') {digitalWrite(12,HIGH); }
else if (val=='0') {digitalWrite(12,LOW); }
if(val=='1') {digitalWrite(11,HIGH); }
else if (val=='0') {digitalWrite(11,LOW); }
}
Notice that for every LED, he/she is testing for the same val Hence, when a 1 is sent, all the IF tests will trigger, so all LEDs will turn on and off at once. You need different values for each one if you want them to operate independently.
So we have a case here where you program is doing exactly what you programmed it to do.

while (Serial.available() > 0) {
val=Serial.read();
if(val=='1') {digitalWrite(13,HIGH); }
else if (val=='0') {digitalWrite(13,LOW); }
if(val=='2') {digitalWrite(12,HIGH); }
else if (val=='3') {digitalWrite(12,LOW); }
if(val=='4') {digitalWrite(11,HIGH); }
else if (val=='5') {digitalWrite(11,LOW); }
}
If I were to guess based on the code, you are sending three bytes. One for each LED. So for example 101 would mean LED1 ON, LED2 off, LED3 ON. I say that because the while(Serial) part is telling it to keep grabbing bytes from the serial buffer until it is empty. If so, you need something more like this...
for(int i=0;i < 2;i++){ //loop 3 times to grab three bytes
val=Serial.read(); //one byte is read per loop
int pin = 13-i; //first byte will be pin 13, and first i will be 0. Since the pins are descending, we have to subtract
if(val=='1){
digitalWrite(pin,HIGH); //turn LED on
}
else if(val=='0'){
digitalWrite(pin,LOW); //turn LED off
}
} //run loop again until 3 loops are done
Serial.flush() //Empty serial buffer after the 3 bytes were processed