Well you probably have a listener looking for the Attack button to be pressed, when its pressed then it transitions to the Punch1 state or whatever. Just setup a Wait there and listen for the Attack button again and exit to a new Punch2 state if it is pressed.
If the Wait's time elapses then it loops back to the start.
In the Punch2 state you do the same thing, have a Wait and an onAttack exit to Punch3 or what have you. The Wait will roll back to the start and the combo would be broken.