op.precedence parsing