==========================================
recovers from errors in function calls
==========================================
stuff(|||);
---
(program (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))))

==========================================
recovers from errors in for loops
==========================================
stuff();
for (var i = 0; *nonsense*; i++) {
    *more-nonsense*;
}
moreStuff();
---
(program
    (expression_statement (function_call (identifier)))
    (for_statement
        (var_declaration (identifier) (number))
        (expression_statement (ERROR '*'))
        (math_op (identifier))
        (statement_block (expression_statement (ERROR '*'))))
    (expression_statement (function_call (identifier))))

