MikeLittle:
Robin, I'm not following your logic here. There is no need to go to a state if there is nothing in the serial buffer to process. If Serial.available() is true, something is in the stack. Depending on the current state, it is read and dealt with. If nothing is left, it sits in the main loop waiting for the next string.
That's fine until you need to implement a state that doesn't process serial input.