working operator precedence grammar