Write expression out to buf, but wrap it in ( ) if its precedence is less than pr.
See Implementation
Write expression out to buf, but wrap it in ( ) if its precedence is less than pr.