==================== parses numbers =================== 5 --- (expression (number)) =================== parses variables =================== x --- (expression (variable)) =================== parses products =================== x * x --- (expression (term (variable) (times) (variable))) =================== parses sums =================== x + x --- (expression (variable) (plus) (variable)) ==================== parses complex trees ==================== x * y + z * a --- (expression (term (variable) (times) (variable)) (plus) (term (variable) (times) (variable))) ================================= handles parenthesized expressions ================================= x * (y + z) --- (expression (term (variable) (times) (factor (expression (variable) (plus) (variable)))))