JS state machine interpreter