==================== parses numbers =================== 5 --- (expression (number)) =================== parses variables =================== x --- (expression (variable)) =================== parses products =================== x * x --- (expression (product (variable) (variable))) =================== parses sums =================== x + x --- (expression (sum (variable) (variable))) =============================================== binds multiplication more tightly than addition =============================================== a * b + c * d --- (expression (sum (product (variable) (variable)) (product (variable) (variable)))) ============================ parses exponents ============================ x + y * z^(a + b) --- (expression (sum (variable) (product (variable) (exponent (variable) (group (sum (variable) (variable)))))))