fleshout operator precedence parser