shift reduce OMG