========================================== recovers from errors in function calls ========================================== stuff(|||); --- (expression_statement (function_call (identifier) (ERROR '|'))) ========================================== recovers from errors in if statements ========================================== stuff(); if (*nonsense*) { *more-nonsense*; } moreStuff(); --- (program (expression_statement (function_call (identifier))) (if_statement (ERROR '*') (statement_block (expression_statement (ERROR '*')))) (expression_statement (function_call (identifier))))