========================================== 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 (math_op (identifier)) (math_op (math_op (identifier) (identifier)) (math_op (identifier) (math_op (identifier))))))) ========================================== parses boolean operators ========================================= !a || !(b && c) --- (program (expression_statement (bool_op (bool_op (identifier)) (bool_op (expression (bool_op (identifier) (identifier)))))))