shift-reduce runner