parse do-block
reimplemented pattern matching syntax with left-recursion