Add sum-of-products parser