========================================== multiple statements ========================================== var x = {}, z, i = 0; firstFunction(x) secondFunction(x); --- (program (var_declaration (var_assignment (identifier) (object)) (identifier) (var_assignment (identifier) (number))) (expression_statement (function_call (identifier) (identifier))) (expression_statement (function_call (identifier) (identifier)))) ========================================== if statements ========================================== if (isReady()) { console.log(theData) } --- (if_statement (function_call (identifier)) (statement_block (expression_statement (function_call (member_access (identifier) (identifier)) (identifier))))) ========================================== if-else statements ========================================== if (theCondition) { firstFunction(); } else { secondFunction(); } --- (if_statement (identifier) (statement_block (expression_statement (function_call (identifier)))) (statement_block (expression_statement (function_call (identifier))))) ================================================== if-else statements with multiple conditions ================================================== if (firstValue) { firstFunction(); } else if (secondValue) secondFunction(); else { thirdFunction(); } --- (if_statement (identifier) (statement_block (expression_statement (function_call (identifier)))) (if_statement (identifier) (expression_statement (function_call (identifier))) (statement_block (expression_statement (function_call (identifier)))))) ========================================== for loops ========================================== for (var i = 1; someCondition(i); i = next()) { doSomething(); } --- (for_statement (var_declaration (var_assignment (identifier) (number))) (function_call (identifier) (identifier)) (assignment (identifier) (function_call (identifier))) (statement_block (expression_statement (function_call (identifier))))) ========================================== for-in loops ========================================== for (var key in someObject) doSomething(); for (key in someObject) doSomethingElse(); --- (program (for_in_statement (identifier) (identifier) (expression_statement (function_call (identifier)))) (for_in_statement (identifier) (identifier) (expression_statement (function_call (identifier))))) ========================================== while loops ========================================== while (someCondition(i)) { doSomething(); } --- (while_statement (function_call (identifier) (identifier)) (statement_block (expression_statement (function_call (identifier))))) ========================================== try/catch statements ========================================== try { doSomething(); } catch (e) { logError(e); } try { doSomething(); } finally { logError(); } --- (program (try_statement (statement_block (expression_statement (function_call (identifier)))) (catch (identifier) (statement_block (expression_statement (function_call (identifier) (identifier)))))) (try_statement (statement_block (expression_statement (function_call (identifier)))) (finally (statement_block (expression_statement (function_call (identifier))))))) =========================================== throw statements =========================================== throw new Error("wtf"); --- (throw_statement (constructor_call (identifier) (string))) =========================================== indented code after blocks =========================================== function x() {} return z; --- (program (expression_statement (function_expression (identifier) (statement_block))) (return_statement (identifier))) =========================================== switch statements =========================================== switch(x) { case "hello": print("one"); break; case z(): print("two"); break; default: print("three"); } --- (switch_statement (identifier) (case (string) (expression_statement (function_call (identifier) (string))) (break_statement)) (case (function_call (identifier)) (expression_statement (function_call (identifier) (string))) (break_statement)) (default (expression_statement (function_call (identifier) (string)))))