============================================ If statements ============================================ if (x) log(y); if (a.b) { log(c); log(d); } ---- (program (if_statement (identifier) (expression_statement (function_call (identifier) (identifier)))) (if_statement (member_access (identifier) (identifier)) (statement_block (expression_statement (function_call (identifier) (identifier))) (expression_statement (function_call (identifier) (identifier)))))) ============================================ For statements ============================================ for (i = 0; i < 10; i++) log(y); for (;;) { log(y); } --- (program (for_statement (expression_statement (assignment (identifier) (number))) (expression_statement (rel_op (identifier) (number))) (math_op (identifier)) (expression_statement (function_call (identifier) (identifier)))) (for_statement (expression_statement) (expression_statement) (statement_block (expression_statement (function_call (identifier) (identifier)))))) ============================================ Return statements ============================================ return; return 5; --- (program (return_statement) (return_statement (number))) ============================================ Var declarations ============================================ var x = 1; var x, y = {}, z; --- (program (var_declaration (identifier) (number)) (var_declaration (identifier) (identifier) (object) (identifier)))