========================================== parses ternary expressions ========================================== print(isDone() ? stuff : otherStuff); --- (program (expression_statement (function_call (identifier) (ternary (function_call (identifier)) (identifier) (identifier))))) ========================================== parses mathematical operators ========================================== a + b * c - d / e --- (program (expression_statement (math_op (identifier) (math_op (math_op (identifier) (identifier)) (math_op (identifier) (identifier))))))